Raven2cz Blog
-
[AwesomeWM] Life is the urge to ecstasy. - Harley Quinn
Zajímavé propojení hlášek z
fortune
scriptu skitty
podporou pro zobrazování obrázků s možností přirozeného scrollování terminálu.
Kitty Fish Greeting
je tak zajímavě zhotoven pomocí náhodně vybíraných portrétů pro zvolené colorschema a hlášky z fortune. Celkově tak práce v terminálech pěkně doplňuje zvolené téma a zvyšuje pocit ze zvoleného tématu.
Na tomto screenshotu navíc velmi pěkně vyšly hlášky pro každou postavu, je to povedený příběh z dracula prostředí.https://github.com/raven2cz/dotfiles/blob/main/.local/bin/kitty-icat-random
https://github.com/raven2cz/public-wallpapersEN: Interesting connection of messages from
fortune
script withkitty
support for displaying images with the possibility of natural scrolling in the terminal.
Kitty Fish Greeting
is thus interestingly made using randomly selected portraits for the selected color scheme and fortune texts. Overall, the work in the terminals nicely complements the chosen topic and increases the feeling of the chosen color scheme.
In addition, the texts for each character came out very nicely in this screenshot, it's a hilarious story from the dracula environment. -
Doom Emacs
Doom Emacs je jednodušším vstupem do světa Emacsu. Po několika týdnech musím říct, že se jedná o vynikající nástroj, který nemá konkurenci a to ani s Atomem, Sublime nebo NeoVim. Emacs totiž není textový editor, ale spíše takový centrála úplně všeho, co se přežene přes Lisp “závorky” a vyplivne výsledek. Jinými slovy s tím jde dělat úplně vše.
Často srovnání s NeoVim a jeho aktuální Lua powerful implementací není opět na místě, protože se jedná o zcela jiné nástroje, které sice mohou cílit na společnou činnost, ale s naprosto jiným vnitřím přístupem, což je bohužel někdy zásadní. Určitě jsou oblasti, kde NeoVim nemá konkurenci, ale zase naopak jsou oblasti, kde NeoVim nikdy nebude Emacs, protože to ani technicky není možné kvůli úplně jinému typu zpracování.Org-mode/Org-roam
Asi jedna z nejsilnějších features emacsu, které pokrývá silné psaní poznámek, exportů, popis svých úkolů, plánování a agenda. Vše perfektně zkombinované dohromady jako nikde jinde a navíc offline režimu, což dnes je již téměř nemožné s ničím jiným. Jira, Confluence vše je online, tyto dva nástroje mohou dobře konkurovat org-mode/org-roam. Nicméně opět díky způsobu zpracování nemohou pokrýt dynamické zpracování emacsu. Není tedy divu, že světový spisovatelé, badatelé a programátoři používají emacs.
Poznámka: Pozor toto není o IDE pro vývoj software, to je jiné téma.
Náhled na org-mode
Org-mode pro konfiguraci, analýzu a učení se novým programovacím jazykům
Emacs dokáže kombinovat cokoliv a exportovat cokoliv dynamicky. Vše propojit do vizuálního celku.
Není tedy divu, že pomocí org-mode lze popsat například svou konfiguraci, nebo učit se nový programovací jazyk a mezi to vkládat kusy programovacích jazyků, ze kterých se ve finále složí výsledný konfigurační soubor.Uživatel tedy edituje org-soubor ale dynamicky to rovněž generuje identický konfigurační soubor, který bude rovnou sloužit v linuxovém prostředí pro daný systém nebo aplikaci. Lze tak plně využít veškerou podporu org systému a mít zcela nedotčený finální konfigurační soubor.
Tento přístup lze samozřejmě využít i na analýzy, učení se nového jazyku a podobné topiky, kde je potřeba mít vše komentované a tzv. zasazené do dalšího kontextu. Ideální i na bash a python skripty a jejich evaluaci. Hodně to připomíná Jupyter Notebook, ale na zcela jiné úrovni.
-
Dotfiles Github Project
Zkusím novou formu zálohy mých dotfiles, přinese lepší synchronizaci s ostatními git repository a za druhé odpadne problém mergování souborů podporující přímý update souborů v home directory.
Princip se opírá o dvě git funkcionality:
Git Bare Repository
Vytvoření dotfiles adresáře jako git bare repository. Bare repository neobsahuje pracovní adresář, neobsahuje tedy rovněž
.git
adresář. Bare adresář přímo do sebe ukládá všechny nutné gitové informace, zatímco jako working dir funguje předaná cesta git příkazu, což klidně může být celý home directory.Stěžejní článek je https://www.atlassian.com/git/tutorials/dotfiles
git init --bare $HOME/.dotfiles alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' config config --local status.showUntrackedFiles no echo "alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'" >> $HOME/.bashrc
Důležité je upozornit na
status.showUntrackedFiles
, nebude docházet k trackování souborů, co nejsou přidány do gitu, protože se samozřejmě jedná o celý $HOME.
Alias potom na používají jeconfig
nahrazujícígit
příkaz při práci s konfiguračními soubory.echo ".dotfiles" >> .gitignore git clone --bare <git-repo-url> $HOME/.dotfiles alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME' config checkout
Pokud soubory na nové stanici existují, je nutné je zazálohovat do bck adresáře a pak provést checkout. Celkově je nejvýhodnější zkusit tento bash skript:
git clone --bare <git-repo-url> $HOME/.cfg function config { /usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME $@ } mkdir -p .config-backup config checkout if [ $? = 0 ]; then echo "Checked out config."; else echo "Backing up pre-existing dotfiles."; config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | xargs -I{} mv {} .config-backup/{} fi; config checkout config config status.showUntrackedFiles no
Git Subtree Sub-Projects
Subtree je velmi šikovný oproti submodules a jejich údržbě. Celkově moje závislosti konfigurací půjdou linkovat tímto přístupem. Stěžejní článek je zde https://www.atlassian.com/git/tutorials/git-subtree
Ukázka napojení subtree pro vim-surround do vim adresáře.
git subtree add --prefix .vim/bundle/tpope-vim-surround https://bitbucket.org/vim-plugins-mirror/vim-surround.git main --squash
Následně si dělat pravidelné updates je velmi jednoduché
git subtree pull --prefix .vim/bundle/tpope-vim-surround https://bitbucket.org/vim-plugins-mirror/vim-surround.git main --squash
Celkově dle uvedeného článku lze zápis zjednodušit, ale princip zůstává stejný. Navíc lze i velmi jednoduše opravit chyby, vytvořit fork a přispět zpět do závislého projectu!
Ve finále bude toto vhodné začlenit do nějakého skriptu, který udělá update daných závislostí a celkově nastaví prostředí, například pro awesomewm.
Možné problémy:
Subtrees nejsou explcitině vidět.
Jedním z řešení je následující přidání aliasu do git příkazů.
nvim ~/.gitconfig [alias] ls-subtrees = !"for i in $(git log | grep git-subtree-dir | sed -e 's/^.*: //g' | sort | uniq); do test -d $i && echo $i; done" call: git ls-subtrees
-
Bluetooth sluchátka
Bluetooth sluchátka zapojená pomocí externího Bluetooth 5.0. Párování pomocí bluetoothctl.
$ bluetoothctl Agent registered [CHG] Controller DC:FB:48:2A:D6:3A Pairable: yes [CHG] Controller 8C:88:2B:11:F5:8C Pairable: yes [bluetooth]# agent KeyboardOnly Agent is already registered [bluetooth]# select DC:FB:48:2A:D6:3A Controller DC:FB:48:2A:D6:3A r5arch [default] [bluetooth]# power on [CHG] Controller DC:FB:48:2A:D6:3A Class: 0x006c0104 Changing power on succeeded [CHG] Controller DC:FB:48:2A:D6:3A Powered: yes [bluetooth]# scan on Discovery started [CHG] Controller DC:FB:48:2A:D6:3A Discovering: yes [NEW] Device 1C:6E:4C:7E:92:C1 1C-6E-4C-7E-92-C1 [CHG] Device 1C:6E:4C:7E:92:C1 TxPower: 8 [CHG] Device 1C:6E:4C:7E:92:C1 Name: MAJOR IV [CHG] Device 1C:6E:4C:7E:92:C1 Alias: MAJOR IV [CHG] Device 1C:6E:4C:7E:92:C1 Modalias: bluetooth:v000ApFFFFdFFFF [CHG] Device 1C:6E:4C:7E:92:C1 UUIDs: 0000110d-0000-1000-8000-00805f9b34fb [CHG] Device 1C:6E:4C:7E:92:C1 RSSI: -84 [bluetooth]# pair 1C:6E:4C:7E:92:C1 Attempting to pair with 1C:6E:4C:7E:92:C1 [CHG] Device 1C:6E:4C:7E:92:C1 Connected: yes [CHG] Device 1C:6E:4C:7E:92:C1 UUIDs: 00001101-0000-1000-8000-00805f9b34fb [CHG] Device 1C:6E:4C:7E:92:C1 ServicesResolved: yes [CHG] Device 1C:6E:4C:7E:92:C1 Paired: yes Pairing successful [CHG] Device 1C:6E:4C:7E:92:C1 ServicesResolved: no [CHG] Device 1C:6E:4C:7E:92:C1 Connected: no [bluetooth]# connect 1C:6E:4C:7E:92:C1 Attempting to connect to 1C:6E:4C:7E:92:C1 [CHG] Device 1C:6E:4C:7E:92:C1 Connected: yes Connection successful [CHG] Device 1C:6E:4C:7E:92:C1 ServicesResolved: yes
-
Global Color Scheme Switcher
Zajímavým nápadem může být malý projekt ricingu. Klávesovou zkratkou zobrazit tabulku, která zobrazí na výběr připravená barevná schémata, uživatel si vybere, které schéma chce a systém provede přenastavení všech jeho používaných aplikací do barevných schémat, které aplikace podporují, aby splnil daný požadavek. Navíc se toto udělá dynamicky, takže dojde k přenačtení konfigurací. Požadavkem je globální změna, která se dotýká window managera, konzole, neovim, doom emacs, KDE a Gnome komponent, webového prohlížeče.
Jak takovou komplexní věc navrhnout, aby to jednoduše bylo udržovatelné a bylo možné dále přidávat další oblíbená barevná schémata?
Je tady celá řada řešení, nejlepší by bylo, aby toto bylo univerzální pro různé distribuce, WM a konzole. Ale zároveň nechceme nějakou velmi složitou strukturu, aby to bylo snadno pochopitelné a mohl si to kdokoliv změnit.
Základní idea
- Společným jazyk pro všechny distribuce je bash. Z daného prostředí, tabulky, by se tedy měl volat tento skript. Tento skript by ale měl vzít potřebná data z jednoduchých datových souborů, které lze rozšiřovat. Script tedy obsahuje pouze funkce, které umí změnit požadované aplikace a sekvenčně zavolá nad implementovanými aplikacemi změnu barevného schématu dle datových souborů.
- Každá aplikace jinak ovládáná barevná schémata, umožňuje přidávaní custom schémat a obsahuje defaultní seznam schémat. Proto je nutné, aby bash funkce vždy byla specifická dle aplikace. Custom schéma by bylo dobré podporovat, ale zároveň je nutné podporovat i již instalovaná.
- Datová struktura musí obsahovat mapování daného jména klíče vybíraného z tabulky a jednotlivými specifickými názvy barevných schémat pro jednotlivé aplikace, protože názvy nebudou 1:1. Ideální je tedy mapa key=value vždy, kde mapa bude identifikována názvem hlavního schématu, v tabulce key bude aplikace a hodnota bude její barevné schéma, které odpovídá hlavnímu identifikátoru.
- Postupně jako dávka se volají změny všech uvedených aplikací v tabulce. Pokud ale aplikace neexistuje, tak se nic nestane a pokračuje se dál. Toto zajistí kompatibilitu na všech strojích.
Analýza jednotlivých aplikací
Nyní je nutné analyzovat jednotlivé aplikace a zjistit, jak co nejjednodušeji a jednotně změnit jejich color schema. Nezapomenout ale i na custom schéma, které je nutné do toho také zahrnout.
Kitty
-
Link na theme url: https://sw.kovidgoyal.net/kitty/kittens/themes/
-
Nejprve je nutné nainstalovat themes rozšíření, kterým se rovnou předkopilovaná themes dají procházet a dynamicky volit:
kitty +kitten themes
-
Programová změna, která je dynamická pro všechny zobrazené kitty terminaly je
kitty +kitten themes --reload-in=all [ThemeName]
-
Vlastní custom téma
.conf
musíte vložit do podadresáře~/.config/kitty/themes
, stejně tak lze přetěžovat již předkopilovaná témata svými. Kitty je automaticky prioritně načtě a aplikované téma lze pak dle názvu souboru zavolat, bude součástí hlavního téma seznamu.
Alacritty
- URL link na popis: https://github.com/toggle-corp/alacritty-colorscheme
- Nainstalovat schema switcher
paru -S alacritty-colorscheme
- Nainstalovat základní color schemes:
# Colorschemes from from eendroroy/alacritty-theme REPO=https://github.com/eendroroy/alacritty-theme.git DEST="$HOME/.eendroroy-colorschemes" # Get colorschemes git clone $REPO $DEST # Create symlink at default colors location (optional) ln -s "$DEST/themes" "$HOME/.config/alacritty/colors" # Colorschemes from aaron-williamson/base16-alacritty REPO="https://github.com/aaron-williamson/base16-alacritty.git" DEST="$HOME/.aarors-williamson-colorschemes" # Get colorschemes git clone $REPO $DEST # Create symlink at default colors location (optional) ln -s "$DEST/colors" "$HOME/.config/alacritty/colors"
- Přepínání dynamické příkazem
alacritty-colorscheme -V apply [colorName]
- Custom schéma raději umístit do zvlášt adresáře např.
~/.config/alacritty/custom-colors
. Pak je ale nutné v příkazu volat s parametremalacritty-colorscheme -C ~/.config/alacritty/custom-colors -V apply [colorName]
-
Koláž a kombinování fotografií s pozadím / Photo Collage and Portrait Wall
Už delší dobu bych chtěl skript/terminalApp, která vezme zvolené portréty/obrázky a nějak pěkně podle šablony, nebo náhodně je rozmístí na obrázek s vybraným pozadím. Ale decentně ne pouze jako fixní koláž, že není vidět vůbec pozadí. Umístí je šikovně, aby pořád bylo pozadí vidět a tyto portréty pouze doplňovaly celek. Vygeneruje výsledný jpg/png obrázek, který se automaticky zobrazí jako tapeta/wallpaper.
Žádná taková aplikace neexistuje, což je překvapivé, ale hledal jsem opravdu dlouho, nic nefunguje takto pěkně. Jediná možnost je napsat si vlastní skript. Což ve volných chvílích bych rád udělal. Bude to multiplatformní pro jakýkoliv linux, windows, macos, použiji jazyk java a java2d knihovnu, která je přítomna všude a plně dostačuje na všechny věci, které plánuji.
Nezbývá než se do toho pustit.For a long time now, I would like the script / terminal app, which takes the selected portraits / images and somehow nicely according to the template, or randomly places them on an background with the selected wallpaper. But decently not just as a fixed collage, there is no background at all. It places them deftly so that the background is still visible and these portraits only complement the whole wallpaper. Generates the resulting jpg/png image, which is automatically displayed as a wallpaper.
There is no such application, which is surprising, but I've been looking for a really long time, nothing works so nicely. The only option is to write my own script. Which I would like to do in my free time. It will be cross-platform for any GNU/Linux, Windows, MacOS, I will use the java language and the java2d library, which is present everywhere and fully sufficient for all the things I plan.
All that remains is to get started. -
[HOTOVO] Koláž a kombinování fotografií s pozadím / [DONE] Photo Collage and Portrait Wall
Podle předchozího příspěvku se mi povedlo o víkendu dodělat tento nápad. Nakonec jsem projekt zjednodušil, negeneruji výsledný image, ale koláž je tvořena widgets přímo v AwesomeWM integrovanými na desktop wallpaper vrstvě. Celá koláž je tedy velmi dynamická a je možné prohazovat on-the-fly jednotlivé obrázky s scrolling kolečkem myši. Koláže mohou být různé per tag. Viz nahrané video Image Collage Lua Feature - Travel, Enjoy Life and Job Desktop.
Projekt je jako vždy vložen do github awesome-config a je součástí knihovnyfishlive
a použit vtheme.lua
. Programová konfigurace je následující.--------------------------- -- Collage Images Feature --------------------------- local collageTag = function(wppath, wps, tagids, collage_template) local imgsources = {} for i=1,#wps do imgsources[i] = wppath .. wps[i] end fishlive.util.shuffle(imgsources) collage.registerTagCollage({ screen = screen, collage_template = collage_template, imgsources = imgsources, tagids = tagids, }) end -- Portraits Collage for Dev Tag collageTag(notifpath_user, notif_user, {4}, { { max_width = 400, posx = 100, posy = 100 }, { max_width = 400, posx = 100, posy = 800 }, { max_width = 600, posx = 3740, posy = 2060, align = "bottom-right" }, }) -- Joy Collage for love Tag local wppath_joy = notifpath .. "joy/" collageTag(wppath_joy, fishlive.util.scandir(wppath_joy), {9}, { { max_height = 800, posx = 100, posy = 100 }, { max_height = 400, posx = 100, posy = 930 }, { max_height = 400, posx = 450, posy = 930 }, { max_height = 400, posx = 870, posy = 100 }, { max_height = 400, posx = 1220, posy = 100 }, { max_height = 800, posx = 870, posy = 530 }, }) -- Collage of user wallpapers collageTag(wppath_user, fishlive.util.scandir(wppath_user), {3}, { { max_width = 800, posx = 100, posy = 100 }, { max_width = 1200, posx = 100, posy = 800 }, { max_width = 800, posx = 3740, posy = 1700, align = "bottom-right" }, })
Nadefinujete si z jakého adresáře čerpat obrázky, dále na jaké tagy je chcete používat a nakonec nadefinujete rozložení šablony pro koláž, jak budou obrázky umísťovány. Je možné rovněž zadávat align pokud se mají obrázky zarovnávat k nějaké definované straně
top-left
nebobottom-right
. Nahoře v metodě používám náhodné proházení a umístění do připravené koláže, samozřejmě toto si můžete nastavit, jak potřebujete a taky potom dynamicky si je prohodit. Celkově doporučuji si potom hlavně prohlédnout novou knihovnufishlive.collage.registerTagCollage
.
Ukázka výsledné podoby pro Travel, Job a Enjoy Life Tagy.EN:
According to a previous post, I managed to finish this idea over the weekend. In the end, I simplified the project, I do not generate the resulting image, but the collage is created by widgets directly in Awesome WM integrated on the desktop wallpaper layer. The whole collage is therefore very dynamic and it is possible to shuffle individual imageson-the-fly
with a scrolling mouse wheel. Collage can be different per tag. See the recorded video Image Collage Lua Feature - Travel, Enjoy Life and Job Desktop.
As always, the project is embedded in github awesome-config and is part of thefishlive
library and used intheme.lua
. The program configuration is shown on the top part of this article.
You define source directory to draw images, which tags you want to use and finally the layout of the template for collage - how the images will be placed. It is also possible to specify an alignment of images - to definetop-left
orbottom-right
align. At the top of the method, I use random shaffling and placement in the prepared collage, of course you can set this as you need and also then dynamically swap them. Overall, I especially recommend looking at the newfishlive.collage.registerTagCollage
library.
Sample of the final form for Travel, Job and Enjoy Life Tags. -
SDDM: Ghost in the Shell Theme
Simple Desktop Display Manager (SDDM) správce zobrazení. Založeno na Qt-Components a QLM.
Simple Desktop Display Manager (SDDM) je správce zobrazení (program pro grafické přihlášení a správce relací) pro okenní systémy X11 a Wayland. SDDM byl napsán od nuly v C++ 11 a podporuje motivování pomocí QML.
EN: The Simple Desktop Display Manager (SDDM) a display manager. Based on Qt-Components and QLM.
Simple Desktop Display Manager (SDDM) is a display manager (a graphical login program and session manager) for the X11 and Wayland windowing systems. SDDM was written from scratch in C++11 and supports theming via QML.
Source Code
https://github.com/raven2cz/sddm-ghost
Installation
Just copy it to folder
/usr/share/sddm/themes/sddm-ghost
For example:
mkdir -p ~/git/github/sddm-ghost cd ~/git/github/sddm-ghost git clone git@github.com:raven2cz/sddm-ghost.git sudo cp -R ~/git/github/sddm-ghost/ /usr/share/sddm/themes/
- Recommended resolution 4K.
- Select new SDDM GHOST theme in KDE Settings > Startup and Shutdown.
- Alternative (better) - Change your KDE SDDM Settings in
/etc/sddm.conf.d/kde_settings.conf
:
[Theme] Current=sddm-ghost [X11] EnableHiDPI=true ServerArguments=-nolisten tcp -dpi 120
Licenses
- License: MIT
- Based-on:
-
Geek Room: New Youtube Series
Poslední díl - TUX: Svět Linuxu od Raven2cz
Pomalu se blíží konec seriálu TUX: Svět Linuxu od Raven2cz. Poslední díl měl uzavřít základní sérii s Gnome a jeho ergonomické a pracovní nastavení. Nicméně poslední verze 42 natolik rozbila celé prostředí, že je prakticky nepoužitelné a to bohužel není vtip. Nejsou v tom sám, desítky recenzí jsou velmi špatné a není se čemu divit. Gnome team zcela doslova kašle na kritiku a pořád razí svou cestu bez řádné stabilizace a výsledkem je již nepoužitelné DE. Bude nutné počkat na sérii opravných patches, ale otázka je do kolika měsíců nebo let přijdou a na to já čekat nebudu. Rozhoduji se tedy o posledním díle mezi Openbox a Qtile. Jeden je hodně podobný xfce a druhý zase awesomewm, jedná se tedy spíše už o nuance již popisovaných principů.
Statistika sledovanosti a zájem
Seriál ukázal zejména obří zájem z Indie a USA. Naopak české publikum je malé, sice nyní začíná hodně narůstat, ale v poměru z anglicky mluvící částí je to pouze několik procent. V časových možnostech není možné vše nahrávat v češtině a pak v angličtině. Z hlediska zájmu toto budu muset otočit a další série budou již anglické a naopak pokud bude zájem, tak se přitočí i české. Dokumentace bude pořád k dispozici a je možné ji do češtiny překládat, když opět bude zájem.
Geek Room - nová uvažovaná série
Začal bych od grafického konceptu banneru této nové série.
Geek Room
Geek Room série bude pořád zaměřena primárně na návody, které ale obsahově nebudou navazovat a budou maximálně v rozsahu 15-20minut. Krom návodů budou zařazovány i krátké spoty pro některé distribuce, specifické nové features, novinky.
Pokud budete mít zájem na některé konkrétní téma, napište mi.
EN:
The last episode - TUX: Linux World from Raven2cz
The final episode of TUX: Linux World from Raven2cz is slowly approaching. The last episode was determined by Gnome and its ergonomic and working settings. However, the latest version 42 has shattered the whole environment so much that it is practically useless and unfortunately this is not a joke. I'm not alone, dozens of reviews are very bad and no wonder. The gnome team literally coughs up criticism and still makes its way without proper stabilization and the result is no longer usable DE. It will be necessary to wait for a series of bug fixes and patches, but the question is how many months or years will come... I will not wait for that. So I decide on the last episode between Openbox and Qtile. One is very similar to xfce and the other awesomewm, so it is more about the nuances of the principles already described.
Audience statistics and interest
The series showed a significant interest from India and the USA. On the contrary, the Czech audience is small, although it is now starting to grow a lot, but in the proportion of English-speaking parts it is only a few percent. It is not possible to record everything in Czech and then in English. In terms of interest, I will have to turn this around and the next series will be in English, and vice versa, if there is interest, Czech will be added. The documentation will still be available and can be translated into Czech when there will be interest.
Geek Room - a new series under consideration
I would start with the graphic concept of the banner of this new series (see top).
The Geek Room series will still focus primarily on guides, which will not follow the previous content and will be in the maximum range of 15-20 minutes. In addition, there will also be short spots for some distributions, specific new features, news.
If you are interested in a specific topic, write to me details.