Štíteknavody

Openbox- velikostně malý, rychlý window manager plně v souladu s ICCCM a EWMH

Openbox - velikostně malý, rychlý window manager plně v souladu s ICCCM a EWMH

V dalším díle seriálu Tondy Fischera, se podíváme na instalaci a nastavení správce oken Openbox.

Openbox je vysoce konfigurovatelný správce oken s rozsáhlou podporou standardů ICCCM a EWMH.

  • Vizuální styl *box je dobře známý pro svůj minimalistický vzhled. Openbox používá vizuální styl *box a zároveň poskytuje větší počet možností pro vývojáře témat než předchozí implementace *box. Dokumentace k tématu popisuje celou řadu možností, které lze nalézt v Openbox tématech.
  • Openbox vám umožňuje přenést nejnovější aplikace mimo plnohodnotné desktopové prostředí. Většina moderních aplikací byla napsána s ohledem na GNOME a KDE. S podporou standardů freedesktop.org a pečlivým dodržováním předchozích standardů poskytuje Openbox prostředí, kde aplikace fungují tak, jak byly navrženy.
  • Openbox vám umožňuje změnit téměř každý aspekt vaší interakce s vaším desktopem a vymýšlet zcela nové způsoby, jak jej používat a ovládat. Pro ovládání oken to může být jako videohra. Ale Openbox může být také extrémně jednoduchý, protože je ve výchozím nastavení, což znamená, že může vyhovovat téměř každému. Openbox vám dává kontrolu, aniž byste museli dělat všechno.
  • Openbox vylepšuje desktopová prostředí. Spuštěním Openboxu v GNOME nebo KDE můžete spojit jejich snadnost a funkčnost se silou Openboxu. Když používáte Openbox, vaše plocha bude čistší a rychlejší a máte ji pod kontrolou.
  • Podívejte se na příručku Začínáme a změňte způsob správy pracovní plochy. Viz hlavní stránky openbox.org.
  • Oficiální dokumentace Openboxu je zde.

Openbox Instalace

Prostudujte stránku Arch Wiki Openbox. Přečtěte si podrobnosti o krocích instalace a komponentách OB.

paru -S openbox ttf-dejavu ttf-liberation obfilebrowser
# Optional Dependencies
paru -S picom nitrogen tint2 polybar volctl clipmenu parcellite xfce4-notify

Než začnete, upravte svůj ~/.config/openbox/autostart, definujte své služby a aplikace, které budou použity s relací openboxu.

Výchozí nastavení Openboxu - použijte tyto příkazy

$ mkdir -p ~/.config/openbox
$ cp -a /etc/xdg/openbox/ ~/.config/

Pokud plánujete používat můj projekt openbox, postupujte podle pokynů v GitHub Openbox Project.

git clone git@github.com:raven2cz/openbox-config.git ~/.config/openbox

Spouštěč openboxu je připraven v mém .xinitrc, který používáme v celé naší video sérii. Viz níže uvedený odkaz .dotfiles pro Github. Takže vše, co musíte udělat, je spustit startx ~/.xinitrc openbox nebo použít správce zobrazení k výběru xinitrc-openbox ze souborů mých sessions (relací) v adresáři .root.

Openbox Lego

Nejlepší a rychlé čtení je Arch Wiki Openbox, začněte od něj. Dokumentace k Openboxu je zde.

Můj příklad lega (sada komponentů) je následující:

  • WM: openbox-session s automatickým spuštěním a soubory prostředí
  • Kompositor: picom
  • Menu: static menu openbox, podpora generátorů a pipes menu, obfilebrowser
  • Wallpaper app: nitrogen
  • Notifikační služba: xfce4-notify

Máte mnoho možností, jak vybrat různé lego. Máte-li k tomuto tématu další dotazy; Issue můžete vytvořit pro Github nebo o něm diskutovat na forum.

Openbox Ergonomic Settings

Všechny klávesové zkratky musí být přidány do souboru ~/.config/openbox/rc.xml a pod nadpis ``. Ačkoli zde byl uveden stručný přehled, podrobnější vysvětlení klávesových zkratek lze nalézt na openbox.org.

Klávesové zkratky lze přidat do konfiguračního souboru pomocí následující syntaxe:


  
    ...
  

Název akce pro spuštění externího příkazu je Execute. K definování externího příkazu, který se má provést, použijte následující syntaxi:


  my-command

Seznam všech dostupných akcí naleznete na Openbox wiki.

Kompletní ergonomická nastavení jsou připravena v mém GitHub Openbox Project v rc.xml. Kompletní průvodce a manipulace je vysvětlena ve videu. Ergonomie odpovídá předchozí sérii videí pro ostatní WM.

Openbox Výkonná Menu

Hlavní předností *box jsou výkonná a kvalitní menu. Celé ovládání tohoto WM je založeno na nabídkách a menu.

V Openboxu je možné použít tři typy menu: static, pipes (dynamické) a generátory (statické nebo dynamické). Mohou být také použity samostatně nebo v jakékoli kombinaci. Více podrobností v OB Docs a Arch Wiki.

Pro náš příklad jsem použil aktualizovanou strukturu menu v souboru menu.xml. Kromě toho je zde použití menu pipes s aplikací obfilebowser pro procházení vaší domovské složky - aktualizujte soubor menu.xml nabídky a upravte jej podle vašich požadavků.

https://www.youtube.com/watch?v=E2aQfZNbPF0&t=7s

Důležité odkazy

Číst dál

KDE Plasma - Pracovní prostředí nové generace pro Linux

English document variant here.

KDE - Pracovní prostředí nové generace pro Linux

V dalším díle seriálu Tondy Fischera si ukážeme instalaci grafického prostředí KDE.

Mocné, multiplatformní a pro všechny. Používejte software KDE pro brouzdání na webu, komunikaci s kolegy, přáteli a rodinou, spravování svých souborů, poslech hudby a sledování videí nebo pro kreativní a produktivní práci. Komunita KDE vyvíjí a udržuje více než 200 aplikací, které běží na kterémkoliv počítači s Linuxem a často i na jiných platformách.

Takto je představováno KDE na svých hlavních stránkách kde.org. Určitě lze souhlasit, že KDE patří mezi velmi dobrá plná desktopová prostředí. Společně s Gnome tvoří pár základních DE, které používají hlavní masy uživatelů GNU/Linux. Plně konfigurovatelné pomocí GUI s mnoha grafickými efekty pomocí kwin. Konfigurovatelnost tohoto DE je daleko značnější než zmiňovaný Gnome, který naopak má uživateli přinést lehkost a jednoducho použití bez nutných zdlouhavých nastavování.

O efektivitě práce, ergonomičnosti a snížení přehmatů na myš a zpět jsme již v tomto seriálu povídali mnohokrát. Každý kdo prošel tímto kurzem již ví, že efektivita se skrývá někde jinde a je potřeba se k ní postupně dopracovat. Samozřejmě je možné toto do určitého stavu dosáhnout i pomocí KDE a jeho schopností konfigurace. Pojďme se tedy podívat na triky a tipy, jak si KDE upravit z hlediska ergonomie a efektivity práce, rovněž umožnit použití KDE aplikací v ostatních DE a WM prostředích se správným nastavením a theme.

Instalace KDE

Nejprve je potřeba KDE nainstalovat. KDE obsahuje tisíc balíčků, z toho důvodů je možné použít skupinu (group) nebo meta skupinu (meta). Rozdíl mezi tímto způsobem viz meta package and package group. Já zde použiji starší způsob s group, ale klidně použijte novější meta balík.

Za druhé je nutné instalovat skupinu KDE aplikací, které budete chtít používat, nebo nemusíte, záleží na Vás. Opět zde je již možnost group a meta balíku, nebo si vybrat pouze část z meta-balíku, kterou nainstalujete samostatně. V případě instalace waylandu je potřeba ještě instalovat podporu pro wayland. Zde již musím ale odkázat do důkladné přečtění arch wiki a závislé stránky wayland Arch Wiki KDE

# egl-wayland just for Nvidia cards, not necessary for AMD
sudo pacman -S plasma kde-applications plasma-wayland-session eql-wayland
# next variants:
sudo pacman -S plasma-meta kde-applications-meta
sudo pacman -S plasma-meta kde-utilities-meta kde-network-meta kde-multimedia-meta

.Spouštěč pro X11 a wayland je již připraven v mém .xinitrc, který používáme v celém našem seriálu. Viz dolní odkaz .dotfiles na Githubu. Stačí tedy pouze s příkazové řádky spustit startx ~/.xinitrc kde, nebo pomocí display manageru vybrat xinitrc-kde z mých sessions souborů v adresáři .root.

Qt5ct a Kvantum Manager

Pro plnou podoporu témat je nutné doinstalovat Kvantum Manager. Pro podporu KDE aplikací pro ostatní WM a DE je vhodné Kvantum Manager napojit na qt5ct a konfiguraci donastavit v Qt5 Config aplikaci.

paru -S qt5ct kvantum

# Environment variables settings (e.g.in .xinitrc)
export QT_QPA_PLATFORMTHEME=qt5ct
export DESKTOP_SESSION=plasma
export XDG_CURRENT_DESKTOP=kde

Použití grafických témat

System Settings > Global Theme > Get New Global Themes > Install Layan. Další možnosti Arc Dark, Sweet-Mars, Nordic. Je však ale nezbytné na google dohled příslušné theme (často github repository) a klonovat si jej, protože bude nutné naimportovat potřebnou část pro Kvantum Manager, bez toho se bohužel neobjedneme a toto není součástí standardní instalace v System Settings!

Přepnout globální schéma na Layan. Nyní již budeme moci přenastavit barvené schéma, fonty, ikony, windows dekorace atd., viz video pro detaily.

Přizpůsobení základních komponent pro práci

Nyní již můžeme plně nakonfigurovat veškeré komponenty KDE, aby vyhovovaly našim potřebám. Nebude nic přehánět, KDE lze konfigurovat velmi mocně, budeme se držet opět zlaté střední cesty, která navíc nebude ani tolik náchylná na možné chyby při dalších updates KDE, což bohužel bývá častá příčina najednou vzniklých problémů.

Přizpůsobíme:

  • Hlavní panel a jeho komponenty
  • HiDpi a fonty
  • Pozadí
  • Desktopy pro práci

Bismut - Tiling Support pro KDE

Bismit Github Link

Přidání podpory pro tiling (dlaždicové) uspořádání oken. Velmi pokročilý a flexiblní rozšíření KDE.

  • System Settings > Window Behaviour > Focus > Focus follows mouse (fokus okna následuje myš)
  • Window Management > Window Tiling > Enable window tiling (zaškrtnout), záložka Appearance (nahoře) > Inner Gaps nastav na 10px
  • Shortcuts > Window Tiling > Push Active to Master Area nastav: Meta + Shift + Return

Ergonomické nastavení klávesových zkratek

Nejvíce změn. KDE není přípraveno na vhodné ovládání klávesnicí. Viz zejména video nahrávka.

  • Shortcuts > Kwin > nastavit Close Window, Quick Tile Window (všechny směry), Maximize, Minimize, Fullscreen window (nastavit vše dle AwesomeWM viz minulé nahrávky)
  • Shortcuts > KRunner > přidat Alt+Space nebo Meta+Space (doporučeno Meta)
  • Shortcuts > stiskni tlačítko Add Application > přidat Konsole > Konsole řádka nastavit Alt+Return nebo Meta+Return (doporučeno Meta)

Úvahy nad možnými vylepšeními

  • KDE lze vylepšovat mnoha způsoby. Často velmi žádané nastavení je MacOS, kde je horní panel zároveň použit jako menu pro aplikace a aplikace tak nemají žádné menu, které je přehozeno do tohoto panelu. I toto KDE umožňuje.
  • Jakékoliv větší rozšíření nebo změna přináší potenciální problémy po upgrade KDE. Toto není AwesomeWM API a framework, který si můžete konfigurovat, již mnohokrát jsem se v minulosti setkal s tím, že KDE spadlo nebo celá funkcionalita přestala fungovat. Stabilita KDE je daleko horší pokud provádíte příliš mnoho customizací. Buďte tedy s tím opatrní a pokud chcete velké změny je lepší zvolit WM s programovými dovednostmi.
  • Při zvolení některých uživatelských komponent nebo dokonce témat může vzniknout silný performance problém, naposledy Dracula schéma snížilo rapidně animace a maximalizace oken, proto si vždy funkcionalitu nejprve ověřte na Breeze tématu a teprve potom použijte customized řešení pro porovnání.
  • Pozor na některé widgets. Celkově mnoho widgets je velmi zastaralých a tedy mohou mít silné performance dopady. Opět ověřte zátež na procesor, snižte taky časové cykly pro čtení hodnot.
  • Wayland vs X11. KDE je již plně připraveno na wayland. Mnoho uživatelů zejména hráčů přešlo na wayland. Původně jsem tuto nahrávku chtěl dělat čistě na waylandu, ale HiDpi 4K rozhodně není připraveno, mnoho drobných věcí nefunguje správně a problémy se základními aplikacemi. Hodně času jsem nad tím strávil, ale rozhodně toto nemohu zatím doporučit nováčkům. Toto se může rychle změnit za další “roky”.

https://www.youtube.com/watch?v=vclZ7RSdzoQ&t=1718s

Důležité odkazy

Číst dál

AwesomeWM Ricing

AwesomeWM patří k nejlepším window managerům s podporou vyššího programovacího jazyka Lua. V našem seriálu Tondy Fischera již máte dostatek zkušeností pro plný ricing pokročilého prostředí AwesomeWM.

https://www.youtube.com/watch?v=FCxd5id77c4&t=31s

Awesome Ricing - Pokročilá Konfigurace

Nyní již můžeme přikročit k plné a pokročilé konfiguraci AwesomeWM. Cest je nekonečné množství. Já jsem zvolil cestu pro jednoduchou údržbu, vysokou efektivitu práce a kvalitní grafický design, který nesníží performance systému. Podobně jako u xfce v minulých dílech. Zde je navíc možné vše integrovat dohromady, jakoukoliv věc si přizpůsobit svému workflow a propojit WM s vašimi pracovními skripty a nástroji.

Vše, co tady bude probíráno je moje aktuální řešení problematiky. Je nutné pochopit, že ve chvíli, kdy máte framework awesomewm k dispozici, můžete si vše vytvořit podle vlastní představy, variant je tedy nekončné množství, toto je největší rozdíl od fixních WMs nebo DEs, které lze pouze omezeně konfigurovat.

Základ dobrého designu a dlouhodobého úspěšného programování

Úspěchem dobrého programování a nejlepšího designu jsou 3 věci:

  • Jednoduchost a přehlednost
  • Vlastní knihovna / framework
  • Omezení a minimalismus třetích stran

Vždy nejlepší řešení je to nejjednodušší. Je velmi obtížné se k němu dostat, protože lidé přemýšlí komplexně. Vždy dbejte na tom se k němu dostat a mít vše přehledné i pro další lidi, je to v podstatě zásada free open source.

Obecné věci, které používáte a určtiě budete používat i dále si ukládejte do svého frameworku a knihoven. Toto je nutný základ. Vlastní přehledný framework je naprostým základem pro každého programátora, ať už děláte v jakémkoliv jazyce. Správná správa balíčků a knihoven je základ, pouze takto lze se neustále zdokonalovat, vyvíjet a minimalizovat chyby, stabilizací frameworku.

Používání 3 stran je potřeba minimalizovat na rozumnou úroveň. Knihovny musí být otevřené, aktivní a opět jednoduché. Nikdy neberte nic komplikovaného. Vždy dejte přednost svému řešení, pokud je v časovém rámci. Pečlivě volte knihovny, které potom již velmi težce lze opouštět!

V našem případě je zde vytvořen základní lua balíček fishlive, který slouží k rozšíření frameworku awesome pro moje osobní potřeby a přístupy. Vytvořte si svůj vlastní.

Pattern MVC - Model, View, Controller

Tento návrhový vzor umožňuje rozdělit funkcionalitu do 3 základních celků, které mezi sebou navzájem komunikují. Jeho nespornou výhodou je oddělení business logic od grafického zpracování a doménové vrstvy. Stav aplikace je držen v modelu, který je zpravováván controllerem, ve finále je předán model komponentě view, která jej zobrazí. Pro frontend je toto základ, kdy views může být celá řada, business logiky mají různou implementaci a je jednoduché udržovat a zprovávvat doménové objekty v rámci modelu i zcela jiným procovním teamem. Tento pattern je již starší, takže existuje řada modifikací a pokročilých nápadů, které jej doplňují, nicméně základní myšlenka zůstavá.

My si tento pattern půjčíme a pomocí něj si myšlenkově upravíme defaultní rc.lua, který již používáte z předchozí nahrávky. Defaultní konfigurace je tvořena pouze jedním konfiguračním souborem rc.lua a doplňkovým souborem theme.lua, která umoňuje záměnu dle zvoleného theme. Myšlenka je správná, ale implementace je nevhodná. Brzy zjistíte, že jakákoliv větší grafická úprava zasahuje zejména do rc.lua, neboť je velmi nekvalitně odděleno řízení controller a view. Naše první kroky tedy musí nutně vést k základnímu oddělení controller a model-view části.

Provedeme zjednodušení na controller část a model-view část. Stav systému/grafického prostředí necháme držet ve vhodných sdílených lua tabulkách, které jsou sdíleny mezi oběma částmi. View část musíme nutně oddělit od rc.lua, kde ponecháme striktně pouze controller.

Model-View - themes/…/theme.lua

část je dobré rozdělit si na 3 základní podčásti:

  • View Common Libs - použitelné části, které budeme používat i dalších našich themes a views, toto přesuneme do vlastní lua knihovny
  • View Color Schemes - barevná schémata, která lze aplikovat na naše views a která jsou rovněž obecná.
  • View Theme - specifická část pro každé vaše jednotlivé theme. Definice a konfigurace všech grafických komponent a jejich chování, aplikace základních view coomon libs a color schemat do těchto komponent. Tato třetí část je jako jediná definována vždy od začátku pro každé vaše nové theme.

View Common Libs

Tato knihovna byla založena a uložena v adresáři ~/.config/awesome/fishlive. Obsahuje colorschemes, nové layouts, wallpaper různorodá ovládání, widgety a utility.

View Color Schemes

Jsou zavedena pomocí vytvořeného příkazu local theme = fishlive.colorscheme.default, který do modelu/tabulky theme nastaví všechny důležité barvy, základní proměnné pro grafické view pro zvolené poslední barevné schéma, které lze dynamicky měnit.

View Theme

Je uloženo v každém theme.lua souboru. Tento soubor mám principiálně tvořen touto strukturou:

  • theme = fishlive.colorscheme.default Defaultní naplnění modelu daným barevných schématem a přípravou atributů modelu
  • model attribute settings Další specifické nastavení modelu dle zvoleného theme, okraje, fonty, notifikační události, taglist, layouts, menu
  • wallpaper support Nastavení adresářů a základních atributů pro ovládání wallpapers v awesomewm
  • widget declaration Vytvoření instanací widgetů a jejich specifické nakonfigurování do wibox grafických prvků, které lze umístit do prostředí
  • menu a application launcher declaration Deklarace grafické části menu dle modelu a controlleru
  • screen.connect_signal(request:desktop_decoration) Hlavní funkce, která provádí zavádění a hlavní činnost každého theme při jeho inicializačním procesu. Další body jsou již součástí tohoto procesu, volání této funkce, listenera.
  • tags and layout settings Nastavení tagů a layotů, taglistu pro dané theme
  • tasklist configuration Nastavení tasklistu pro zobrazování aktivně běžících aplikací systému
  • main panel configuration Sestavení hlavního top panelu ze všech wiboxes, taglistu, tasklistu, systray apod.
  • naughty configuration Nastavení notifikačních událostí a notification center a error handling support
  • wallpaper handling Nastavení wallpaper ovládání a propojení s controllerem. V mém případě mám rád wallpapers, takže mám i velmi silnou podporu vytvořenou v awesomewm.

Controller - rc.lua

je možné taky rovněž dělit na další celky. Nicméně já mám v tomto ohledu rád minimalismus a lepší údržbu, neměl jsem tedy důvod tento soubor rozdělovat, naopak jej strukturalizuji pomoci folding sekcí a používám jednotlivé listenery, které awesome API nabízí k oddělení jednotlivých funkcionálních bloků. Soubor je tedy pořád jeden rc.lua, obsahuje však pouze vše co není grafika nebo grafická komponenta. Obsahuje tedy veškerou business logiku a workflow. Konkrétně obsahuje:

  • naughty.connect_signal(request:display_error) Error handling (zpracování výjimek a chyb v awesome a spojených aplikacích)
  • modkey, terminal, editor, menus Definice základních proměnných pro základní klávesy, terminaly, editory, menu modely
  • tag.connect_signal(request:default_layouts) Definice základních layouts, které budete používat
  • beautiful.init Výběr model-view (theme), které bude napojedno a zobrazováno
  • awful.mouse.append_global_mousebindings Nadefinování myších událostí a chování myši
  • awful.keyboard.append_global_keybindings Definice globálních keybindings pro váš systém, rozděleno dle kategorií a účelu (folding style a separátní listeners)
  • client.connect_signal(request:default_keybindings) Clientská konfigurace keybindings pro jednotlivá zobrazovaná okna (client = běžící aplikace v okně)
  • ruled.client.connect_signal("request:rules" ...) Definice pravidel (rules) pro zobrazování aplikací, druhů aplikací a reakce oken na speciální events
  • special connect_signal events for specific handling Poslech dalších několik speciálních událostí pro specifické změny v awesomewm prostředí. Patří sem titlebars (horní lišta na okně), zpracování událostí, další chování myši apod.
  • awful.spawn.with_shell("~/.config/awesome/autorun.sh") Poslední částí rc.lua souboru je spuštění vašeho autorun.sh skriptu pro aplikace, služby a další přednastavení prostředí, ve kterém awesomewm běží.

AwesomeWM Multicolor Theme Instalace

Demostraci principů si předvedeme na mém github projektu raven2cz/awesomewm-config.

Zajištění resources a podpůrných skriptů pro spolupráci systémového prostředí (external resources)

# 1. backup your awesomewm configuration first
# 2. git clone repository to ~/.config/awesome
git clone git@github.com:raven2cz/awesomewm-config.git ~/.config/awesome
# 3. ensure prerequsities and dependencies
paru -S rofi # rofi similar app like d-menu
# my used wallpapers and event images
mkdir ~/Pictures/wallpapers && git clone git@github.com:raven2cz/public-wallpapers.git
# my global colorscheme switcher script
# make steps which are described in the raven2cz/global-colorscheme.git project, you need themes for your terminal mainly
mkdir ~/git/github && git clone git@github.com:raven2cz/global-colorscheme.git && cd ~/git/github/global-colorscheme && ./install.sh
# rofi project themes
mkdir ~/.config/rofi && git clone https://github.com/raven2cz/rofi-themes ~/.config/rofi

Těmito několika kroky jsme si připravili celé prostředí a zajistili potřebné grafické resources, které jsou v projektu používány. Nejedná se tedy pouze o jeden projekt, ale řadu několika projektů, které spolu spolupracují. Pamatujte, že vždy v GNU/Linux platí, každá věc musí dělat jednu dílčí činnost a dělat ji správně. Nedělejte multi věci, pak se to nabaluje na sebe a nefunguje. Dělejte malé komponenty, které se navzájem používají a dají se použít i pro další linuxová prostředí a uživatele…

Já ještě používám externí aplikaci xmenu, pro rychlé restartování, vypnutí počítače, oblíbené aplikace, kernel nástroje a skupiny aplikací. Nicméně to není podmínkou. Mám jej na klávesové zkratce super+w. Viz například nahrávka DistroTube XMenu.

Nyní již máte připraveno celé prostředí pro spuštění. Jediné co chybí je zkontrolovat váš ~/.xinitrc, který by měl být nastaven již z minulé nahrávky a autorun.sh, který pouze jako ukázku zde prezentuji.

#!/usr/bin/env bash
function run {
  if ! pgrep -f $1 ;
  then
    $@&
  fi
}

run /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
run /usr/lib/kactivitymanagerd
#run /use/lib/polkit-kde-authentication-agent-1
run /usr/lib/pam_kwallet_init
run nm-applet
run pamac-tray
if ! pgrep -f cloud-drive-ui; then synology-drive start; fi
run parcellite
run clipmenud
run volctl
run /usr/bin/emacs --daemon
run ~/.config/conky/start_conky ~/.config/conky/MX-CoreBlue/conkyrc2core
run remmina -i
run picom --experimental-backends --config $HOME/.config/picom/picom.conf

Autorun běžících aplikací a služeb je nespočet. Tento berte jako můj základ, pokud budou nejasnosti, napište to do youtube vlákna k nahrávce, nebo na naše diskuzní fórum.

Základní ovládání

Complete Guide here.

super+ctrl+s

Základní ovládání se točí kolem klávesy Super (modkey), která je výhdardně určena pro AW prostředí. Samostatné alt, ctrl a shift nikdy nejsou použity, pouze ve vazbě. Toto je nezbytné pro další všechna programová prostředí a aplikace. Výhradně se snažte nastavovat ve svých prostředích X11 bindingkeys. Například DWM svůj default používá velmi nevhodně.

S učením klávesových zkratek nespěchejte, doporučuji se je osvojit, jsou totiž sebrány z nejlepších WM současnosti a nastaveny pro nejlepší ergonomii a efektivní práci. Několik rad bude uvedeno ve videu.

Změna barevných schémat a aplikací

super+c -> change color scheme, super+alt+c -> next colorschme wallpaper, super+ctrl+c -> previous colorscheme wallpaper

Změna barevného schématu probíhá na třech úrovních:

  • Nejprve se zavolá globální skript global_colorscheme.sh, který změní podporované externí aplikace. V aktuální verzi mezi ně patří kitty, alacritty, doom emacs, atom. Dojde k okamžité dynamické změně.
  • Pak dojde ke změně základních barev pro conky aplikaci. Ta vytváří změnu v konfiguračním souboru, který je načítán conky knihovnou. Dojde k okamžité dynamické změně.
  • Naposled dojde k přepsání souboru last.lua v multicolor scheme AW, kam se nastaví aktuální zvolené schéma a dojde k restartu AW. Celkově se tak završí celkové přenastavení všech schémat celého systému

Změna wallpapers pro jednotlivé tagy

  • random wallpaper for 1st tag
  • different wallpaper per actual shown tag
  • user wallpaper tags

super+alt+w next user wallpaper, super+ctrl+w previous user wallpaper

  • dev tag uses as default colorscheme wallpaper

super+c -> change color scheme, super+alt+c -> next colorschme wallpaper, super+ctrl+c -> previous colorscheme wallpaper

Prohlídka prostředí a programového Lua řešení

Po spuštění multicolor theme awesomewm projektu si můžeme prohlédnout detailněji strukturu projektu.

nvim ~/.config/awesome/rc.lua
nvim ~/.config/awesmoe/themes/multicolor/theme.lua

Zde se opět vraťe k první kapitole a postupně projděte seznam rc.lua a theme.lua přímo v kódu si mozkově propojit, které části kódu patří k daným strukturám.

Tato část je popsána primárně ve druhé video nahrávce věnované awesomewm ricing…

Propojení aplikací do awesomewm prostředí

  • ukázka s tmux a nvim propojení s awesomewm

Spustit tmux, nvim a zobrazit super+ctrl+s, napojení na awesomewm a jeho klávesové propojení a možnosti controlleru

  • propjení barevných schémat a unifikace GNU/Linux aplikací s prostředím awesomewm a jeho model-view schématem
  • napojení událostí aplikací s naughty

dokončená kompilace nebo testy vašich projektů v maven, komprimací, událostí z browseru, napojení cron tasků, stavů běhu aplikací na pozadí bash terminálu, dokončení kdenlive vytvoření videií a mnoho dalšího.

https://www.youtube.com/watch?v=KDJbas2FVXM

Důležité odkazy

Číst dál

AwesomeWM Basics

AwesomeWM patří k nejlepším window managerům s podporou vyššího programovacího jazyka Lua. Ukážeme si, proč tento WM má takový význam a jeho nesporné výhody. Naučíme se jej nainstalovat, nastavit základní témata a testovat svá nastavení v testovacím prostředí. Nakonec vyzkoušíme základní ovládání a nápovědu klávesových zkratek. Součástí nahrávky je rovněž velmi jemný úvod do programovacího jazyka Lua. Další díl seriálu Tondy Fischera.

Awesome Window Manager

Awesome je vysoce konfigurovatelný správce oken nové generace pro Xorg. Je velmi rychlý a rozšiřitelný pomocí perfektně zdokumentovaného API. Primárně se zaměřuje na pokročilé uživatele, vývojáře a všechny lidi, kteří se zabývají každodenními složitějšími úkoly a chtějí mít plnou kontrolu nad ovládáním jejich vlastního grafického prostředí.

LUA - Programovací jazyk

Lua Wiki Info

Lua je odlehčený, reflexivní, imperativní a procedurální programovací jazyk navržený jako skriptovací jazyk s rozšiřitelnou sémantikou. Název je odvozen z portugalského slova pro měsíc.

Jazyk Lua je určen jako rozšiřující nebo skriptovací jazyk a je dostatečně malý, aby se vešel na nejrůznější hostitelské platformy. Podporuje jen malé množství atomárních datových struktur jako jsou boolovské hodnoty, čísla (implicitně s dvojitou přesností plovoucí čárky) a řetězce. Běžné datové struktury jako jsou pole, množiny, hashovací tabulky, seznamy a záznamy mohou být reprezentovány použitím jediné nativní datové struktury – tabulky, která je v podstatě heterogenním asociativním polem. Jmenné prostory a objekty mohou být vytvořeny taktéž za použití tabulek. Zahrnutím minimálního počtu datových typů se Lua pokouší dosáhnout rovnováhy mezi sílou a velikostí.

Sémantika Lua může být rozšiřována a měněna předefinováním některých zabudovaných funkcí v metatabulkách. Navíc podporuje Lua pokročilé vlastnosti, jako jsou funkce vyššího řádu a garbage collector. Kombinací mnoha těchto vlastností je možné v Lua psát i objektově orientované programy.

Lua se uplatňuje především v mnoha hrách, jako je World of Warcraft, masivní onlinová multiplayerová hra na hrdiny, ve které si mohou uživatelé přizpůsobit uživatelské rozhraní, animace postav a vzhled světa právě v jazyku Lua, a sérii Baldur’s Gate a videohře MDK2, kde je použit jako skriptovací jazyk pro moduly. Také se objevuje v některých open source hrách, jakými jsou Battle for Wesnoth, Daimonin a hry ve stylu Rogue: ToME a H-World. Skripty v jazyce Lua jsou také využity u her Worms 3D, Worms 4: Mayhem, Mafia II a v modifikaci pro GTA V, FiveM. Therescript, použitý k řízení vozidel a animací v There, je mírně upravená verze Lua. Správce oken Ion používá Lua pro své přizpůsobování a rozšiřování. Program Chat Mapper pro zapisování a ukládání rozhovorů (například mezi postavami ve hrách) používá jazyk Lua k řízení rozhovoru. Program LuaTeX rozšiřuje primitivní příkazy TeXu o možnost zadávání kódu v jazyce Lua.

V našem případě budeme Lua používat pro AwesomeWM a Neovim.

The Eight-Queen in Programming in Lua Fourth Edition (8 královen z knihy programování Lua 4. vydání)

N = 8 -- board size

-- check whether position (n, c) is free from attacks
function isplaceok (a, n ,c)
    for i = 1, n - 1 do -- for each queen already placed
        if (a[i] == c) or           -- same column?
        (a[i] - i == c - n) or      -- same diagonal?
        (a[i] + i == c + n) then    -- same diagonal?
            return false -- place can be attacked
        end
    end
    return true -- no attacks; place is OK
end

-- print a board
function printsolution (a)
    for i = 1, N do                 -- for each row
        for j = 1, N do             -- and for each column
            -- write "X" or "-" plus a space
            io.write(a[i] == j and "X" or "-", " ")
        end
        io.write("\n")
    end
    io.write("\n")
end

-- add to board 'a' all queens from 'n' to 'N'
function addqueen (a, n)
    if n > N then -- all queens have been placed?
        printsolution(a)
    else -- try to place n-th queen
        for c = 1, N do
            if isplaceok(a, n, c) then
                a[n] = c -- place n-th queen at column 'c'
                addqueen(a, n + 1)
            end
        end
    end
end

-- run the program
addqueen({}, 1)

Awesome základní instalace

paru -S awesome-git
mkdir -p ~/.config/awesome
cp /etc/xdg/awesome/rc.lua ~/.config/awesome/
nvim ~/.xinitrc

Awesome základní konfigurace před spuštěním

Editujte ~/.config/awesome/rc.lua Zkopírujte požadované themes do vašeho prostředí: /usr/share/awesome/themes/ Copy it to ~/.config/awesome/themes/

-- theme examples: default, zenburn
-- beautiful.init(gears.filesystem.get_configuration_dir() .. "/themes/default/theme.lua")
local theme_path = string.format("%s/.config/awesome/themes/%s/theme.lua", os.getenv("HOME"), "default")
beautiful.init(theme_path)
-- terminal and editor settings
terminal = "kitty"
editor = os.getenv("EDITOR") or "nvim"

Ověření a testování AwesomeWW Sandbox

Použijeme Xephyr pro testování Xorg.

paru -S xorg-server-xephyr
Xephyr :1 -ac -br -noreset -screen 1980x1024 &
DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua

Volitlně použít wrapper: awmtt (Awesome WM Testing Tool) z AUR

Defaultní ovládání awesome (AwesomeWM Default Keybindings)

awesome-keybindings-default

Defaultní rc.lua

Pojďme si projít základní sekce a organizaci nvim ~/.config/awesome/rc.lua

https://www.youtube.com/watch?v=wi_EM5zXt8s&t=112s

Důležité odkazy

Číst dál

Command-Line Shell

V dalším díle seriálu Tondy Fischera se podíváme na prostředí příkazového řádku. Představíme si postupně 3 nejrozšířenější shelly v GNU/Linux (sh nepočítám). Shells si postupně nakonfigurujeme a přizpůsobíme opět pro nejlepší efektivitu svojí práce. Terminálové aplikace se tak dostanou na zcela jinou úroveň, se kterou se často nemohou měřit ani normální aplikace s tlačítky. Batch processing je nenahraditelnou součástí pokročilého používání počítačů, historie příkazů a fuzzy processing je něco, co se jiným operačním systémům ani nesnilo.

Popis shellů je uveden na arch wiki Command-Line Shell.

Základní shelly, které si ukážeme:

  • Fish - Není POSIX, jde vlastní cestou. Inteligentní a uživatelsky přívětivý shell příkazového řádku. Fish provádí plnobarevné zvýraznění syntaxe příkazového řádku, stejně jako zvýraznění a dokončení příkazů a jejich argumentů, existence souboru a historie. Podporuje kompletní, jak píšete pro historii a příkazy. Fish je schopen analyzovat manuálové stránky systému, aby určil platné argumenty pro příkazy, což mu umožňuje zvýraznit a dokončit příkazy. Snadnou revizi posledního příkazu lze provést pomocí Alt+Up Pro další info https://fishshell.com/

Bash

Bash byl prezentován po celou dobu instalace a používání až do této nahrávky. Pro bash existuje bezpočet návodů, příkladů, psaní skriptů. Určitě doporučuji českou knihu pro shell https://www.alza.cz/media/prikazovy-radek-v-linuxu-d2366810.htm Dokumentace je zde https://www.gnu.org/software/bash/manual/bash.html

Zsh

Zsh Instalace

My použijeme jako náš systémový shell ZSH.

sudo pacman -S zsh
chsh -s /usr/bin/zsh 
nvim ~/.zshrc

Použijeme Oh My Zsh. Nebo GitHub OhMyZsh.

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Zsh Prompt Themes

# Change theme
ZSH_THEME="robbyrussell"
ZSH_THEME="agnoster"
ZSH_THEME="dst"
ZSH_THEME_RANDOM_CANDIDATES=(
  "robbyrussell"
  "agnoster"
  "dst"
)
# Need install p10k!
ZSH_THEME="powerlevel10k/powerlevel10k"

Instalace Zsh plugins

plugins=(git zsh-autosuggestions zsh-syntax-highlighting z fzf sudo pass)

# Instalace plginu
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
#fzf
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

Instalace Colorscriptů

Colorscripty zkrášlují shell a uvozují danou instanci terminálu.

# DT Colorscript
git clone https://gitlab.com/dwt1/shell-color-scripts.git
makepkg -cf
sudo pacman -U *.pkg.tar.zst

# pokemon-colorscript
paru -S pokemon-colorscripts-git

Fish

Arch wiki https://wiki.archlinux.org/title/Fish

Fish Instalace

sudo pacman -S fish
# plugin manager - nutno spoustet z fish shell
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
fisher list
fisher update jorgebucaran/fisher
fisher remove jorgebucaran/nvm.fish@2.1.0
fisher list | fisher remove
# next useful scripts
paru -S lolcat exa fd bat timg p7zip glow

STARSHIP Cross-Shell Prompt Instalace

Hlavní stránka https://starship.rs/

sh -c "$(curl -fsSL https://starship.rs/install.sh)"
# add last line to your config.fish
starship init fish | source

Personal Starship Settings

Moje osobní nastavení starship je v dotfiles uloženo v ~/.config/starship.toml Toto moje nastavení nepoužívá dvě prompt řádky, ale pouze jednu, plus změnu symbolu. Nejprve zkuste defaultní nastavení a teprve potom můžete testovat tyto změny.

# Don't print a new line at the start of the prompt
add_newline = false

# Make prompt a single line instead of two lines
[line_break]
disabled = true

# Replace the "❯" symbol in the prompt with "➜"
[character]                         # The name of the module we are configuring is "character"
success_symbol = "[➜](bold green)"  # The "success_symbol" is set to "➜" with color "bold green"

# Use custom format
# format = """
# [┌───────────────────>](bold green)
# [│](bold green)$directory$rust$package
# [└─>](bold green) """

# Disable the package module, hiding it from the prompt completely
[package]
disabled = false

Fish jako uživatelský interaktivní shell

Fish budeme používat jako uživatelský interaktivní shell, nikoliv jako systémový (pro init si ponecháme POSIX support). Do našeho .zshrc vložíme na konec toto

# jump from zsh to fish
if [[ $(ps --no-header --pid=$PPID --format=cmd) != "fish" ]]
then
	exec fish
fi

Fish Raven2cz Dotfiles

Zkopírujte fish adresář do ~/.config/fish z raven2cz dotfiles.

nvim ~/.config/fish/config.fish

https://www.youtube.com/watch?v=_K4ESyYuzE0

Důležité odkazy

Číst dál