V minulém dílu jsem ukázal standardní konfiguraci vybraných dlaždicových WM a od dnešního dílu se zaměřím na jednotlivé zástupce, kde se budu snažit ukázat základní i rozšířenou uživatelskou konfiguraci. Ukázku začnu na příkladu Spectrwm. Zatím se provedla pouze základní instalace a při spuštění byl použit globální konfigurační soubor. Tento soubor se nachází zde:
/etc/spectrwm.conf
Jeho standardní verzi dávám do přílohy Spectrwm – standardní konfigurace. Abych mohl zahájit uživatelskou konfiguraci, musím dostat globální soubor na vytvořeného uživatele. To se provede jednoduchým kopírováním pomocí příkazu:
cp /etc/spectrwm.conf $HOME/.spectrwm.conf
Pokud se na tento soubor zaměřím, tak je jasných několik věcí:
- jedná se o běžný textový soubor, což bylo již dříve avizováno
- konfigurace se nastavuje pomocí formátu klíčové slovo/název parametru = nastavení/hodnota parametru
- soubor má celkem 122 řádků včetně těch prázdných
- všechny řádky kromě jednoho jsou zakomentované
Jediný funkční řádek definuje tzv. modifikátor, což je klávesa, s jejíž pomocí je možné spouštět standardní nebo uživatelské akce. V konkrétním případě vypadá úsek konfigurace pro nastavení modifikátoru takto:
# Mod key, (Windows key is Mod4) (Apple key on OSX is Mod2) modkey = Mod4
Jak je jasně patrné z nápovědy, je standardním modifikátorem klávesa Win. Je samozřejmě možné použít i jinou klávesu, ale podle mého názoru to není nutné ani moc vhodné. Proto jí nechám na původní hodnotě. Následně se pak můžu pustit do popisu a představení uživatelského nastavení. V rámci nějakého rozumného rozsahu článků i celého seriálu není možné uvést všechno, co je v konfiguraci možné. Proto vyberu jenom některé věci a ty ostatní z konfiguračního souboru odstraním. V reálné konfiguraci by to asi nebylo moc vhodné, ale pro demonstrační účely to bude akceptovatelné. Konfiguraci začnu u nastavení pracovních/virtuálních ploch. Ve standardní konfiguraci jsou pro ně vyhrazené dva parametry: celkový počet ploch a jejich názvy. Je docela zajímavé si všimnout, že počet ploch je 22 (hodně ďábelské číslo pro přehled nad desktopem…), ale název je definován pouze pro čtyři z nich. Ono je to ale vlastně úplně jedno, protože parametry jsou zakomentované a v panelu se proto neobjevují.
Kromě sjednocení celkového počtu panelů a jejich názvů provedu i seřazení souvisejících částí konfiguračního souboru. V základní verzi jsou zbytečně oddělené a to nezlepšuje přehlednost a čitelnost konfigurace. Nový konfigurační soubor proto zahájím nastavením pracovních ploch pomocí tohoto textu (v rámci úpravy přesunu na úplný začátek konfiguračního souboru i definici modifikátoru):
workspace_limit = 5 # Set workspace name at start name = ws[1]:A name = ws[2]:B name = ws[3]:C name = ws[4]:D name = ws[5]:E
Provedené změny v souboru uložím a hned předvedu změny ve vzhledu panelu. K tomu stačí použít jediný jednoduchý příkaz (zatím nebudu podrobněji objasňovat, kde se „zadrátované“ příkazy berou!):
Win+Q
Výsledek změny konfigurace je vidět na obrázku
Na obrázku je vidět první pracovní plocha pod označením <A>. Bylo by asi na místě uvést příkaz/y, které by mohly sloužit pro přepínání pracovních ploch. Já to ale neudělám a ukážu něco, co jsem již několikrát použil bez bližšího vysvětlení: předdefinované příkazy pro ovládání prostředí WM. Za tímto účelem je třeba nahlédnout do adresáře /etc/spectrwm. Jeho obsah je vidět na obrázku
Jak je z obrázku patrné, nachází se zde celkem šest konfiguračních souborů, a jak napovídají jejich názvy, zřejmě mají něco společného s jazykovým nastavením. Ve skutečnosti se jedná o soubory, které obsahují standardní sadu klávesových zkratek pro ovládání prostředí pro různé jazykové rozložení klávesnice. Je asi docela s podivem, že se zde nachází i české rozložení (na rozdíl třeba od německého), ale je to prostě tak… Pro využití této „lokalizované“ konfigurace se nabízejí dvě možnosti:
- z vybraného konfiguračního souboru zkopírovat celý text do hlavního konfiguračního souboru $HOME/.spectrwm.conf
- použít lokalizovaný konfigurační soubor jako celek
Vzhledem k tomu, že lokalizovaný konfigurační soubor má cca stejný počet řádků jako ten hlavní, kopírování by nebylo úplně šťastným řešením. Proto ukážu druhou variantu, která použije lokalizovaný soubor s tím, že v hlavním konfiguračním souboru na něj bude vytvořen odkaz. K naplnění záměru stačí udělat dva jednoduché kroky:
- zkopírovat vybraný lokalizovaný konfigurační soubor do domovského adresáře jeho uživatele
cp /etc/spectrwm/spectrwm_cz.conf $HOME/.spectrwm_cz.conf
- v hlavním konfiguračním souboru najít a odkomentovat odkaz na lokalizovaný konfigurační soubor
# This allows you to include pre-defined key bindings for your keyboard layout. keyboard_mapping = ~/.spectrwm_cz.conf
Pak už nezbývá, než se podrobněji zaměřit na lokalizovaný konfigurační soubor. Já jeho globální verzi pro lepší přehled dávám do přílohy Lokalizovaný konfigurační soubor. Na jeho začátku jsou dva řádky s nápovědou:
# Key bindings for Czech Republic (cz) keyboards # unbind with: bind[] = <keys>
První z nich říká, že se jedná o propojení akcí na ovládání prostředí s klávesami na české lokalizaci. Druhý pak napovídá, jak se zbavit nechtěného propojení akce s klávesovou kombinací (samozřejmě funguje i její vymazání ze souboru, to je asi jasné). Další řádky (v konkrétním případě jich je celkem 119) pak mají obecný tvar klíčové slovo bind[akce/funkce] = klávesová zkratka/kombinace kláves. Jsou řazené podle názvu funkce abecedně. Po krátké přípravě se tedy mohu vrátit k ovládání pracovních ploch. Za tímto účelem jsou v lokalizovaném konfiguračním souboru dva úseky, které obsahují dva druhy funkcí:
ws_n
– přepne na pracovní plochu N v rozsahu 1 – maximálně povolený počet pracovních ploch. Aktuálně se jedná o řádky 93–114mvws_n
- přesune aktivní okno na pracovní plochu N v rozsahu 1 – maximálně povolený počet ploch. Aktuálně se jedná o řádky 39–60
Při podrobnějším pohledu na definované akce je jasné, proč byl v původním konfiguračním souboru nastaven maximální počet ploch na zpočátku nepochopitelné číslo 22. Vychází to totiž z nastavení funkcí pro jejich ovládání: prvních deset se ovládá pomocí horní řady kláves s číslicemi (nefunguje to samozřejmě s čísly na numerické klávesnici!), resp. právě lokalizovanými znaky s nabodeníčky. Dalších dvanáct pracovních ploch se potom ovládá pomocí funkčních kláves F1-F12. Podle mého názoru není použití horní řady kláves úplně šťastné, a proto provedu změnu, který zajistí tři výsledky:
- přizpůsobí počet klávesových zkratek maximálnímu počtu pracovních ploch
- sníží celkový počet řádků v lokalizovaném konfiguračním souboru
- přiřadí ovládání pracovních ploch ke k funkčním klávesám F1-F5
Tímto krokem se zbavím celkem 44 řádků v souboru a přibude mi deset nových:
bind[mvws_1] = MOD+Shift+F1 bind[mvws_2] = MOD+Shift+F2 bind[mvws_3] = MOD+Shift+F3 bind[mvws_4] = MOD+Shift+F4 bind[mvws_5] = MOD+Shift+F5 bind[ws_1] = MOD+F1 bind[ws_2] = MOD+F2 bind[ws_3] = MOD+F3 bind[ws_4] = MOD+F4 bind[ws_5] = MOD+F5
Jak se změní vzhled panelu při použití funkce pro přepnutí pracovní plochy, je vidět na obrázku
Z obrázku jsou patrné dvě změny: podle čísla pracovní plochy se změní první symbol zleva (konkrétně na hodnotu 1:3, tedy první obrazovka/region, třetí pracovní plocha) a ukazatel plochy má hodnotu <C>. Výše uvedené ovládání ale není to jediné, co Spectrwm pro daný účel nabízí. Než se ale pustím do dalšího popisu, dám do přílohy kompletní nápovědu Nápověda Spectrwm. Z ní budu totiž čerpat hlavně popis „náplně práce“ jednotlivých funkcí. Pro manipulaci s pracovními plochami se jich nabízí celkem sedm:
- ws_next_all = MOD+Up – přepne na následující pracovní plochu
- ws_prev_all = MOD+Down – přepne na předchozí pracovní plochu
- ws_next_move = MOD+Shift+Up – přepne na následující pracovní plochu a přenese na ní aktivní okno
- ws_prev_move = MOD+Shift+Down – přepne na předchozí pracovní plochu a přenese na ní aktivní okno
- ws_next = MOD+Right – přepne na následující pracovní plochu, ale jenom tehdy, pokud je na ní nějaké otevřené okno. Na prázdné plochy tato funkce nefunguje!
- ws_prev = MOD+Left – přepne na předchozí pracovní plochu, ale jenom tehdy, pokud je na ní nějaké otevřené okno. Na prázdné plochy tato funkce nefunguje!
- ws_prior = MOD+A – přepne na poslední zobrazenou pracovní plochu. Umožní střídavě zobrazovat dvě naposledy otevřené pracovní plochy
Jak je z předchozího popisu patrné, jsou k dispozici docela pokročilé funkce pro manipulaci s pracovními plochami. Při této příležitosti bych se chtěl zmínit ještě o jedné věci, která s tím úzce souvisí. Je to něco, čemu se ve Spectrwm říká region. V jiných dlaždicových WM je také možné najít označení obrazovka (screen) nebo i jiné. V podstatě se ve většině běžných nasazení jedná skutečně o fyzický monitor či obrazovku a tím pádem vlastně není co nastavovat nebo používat. Zajímavá je tato možnost pouze v případě, že by byl požadavek na region, který má větší rozlišení, než fyzická obrazovka nebo by bylo k dispozici více monitorů. Toto nebudu dále rozebírat a všechny odkazy na regiony z konfiguračních souborů odstraním:
- z hlavního konfiguračního souboru nastavení vzdálenosti mezi okny v regionu
# Region containment # Distance window must be dragged/resized beyond the region edge before it is # allowed outside the region. # boundary_width = 50
- z hlavního konfiguračního souboru nastavení regionu
# Split a non-RandR dual head setup into one region per monitor # (non-standard driver-based multihead is not seen by spectrwm) # region = screen[1]:1280x1024+0+0 # region = screen[1]:1280x1024+1280+0
- z lokalizovaného konfiguračního souboru odkazy na přesun aktivního okna do vybraného regionu (funkce
mvrg_n
), celkem devět řádků - z lokalizovaného konfiguračního souboru odkazy na přepnutí do vybraného regionu (funkce
rg_n
), celkem devět řádků - z lokalizovaného konfiguračního souboru odkazy na přepnutí do předchozího/dalšího regionu (funkce rg_prev/rg_next), celkem dva řádky
Tímto bych považoval kapitolu o pracovních plochách za dostatečně popsanou a tím pádem i ukončenou. Než se pustím do další kapitoly, kterou bude spouštění aplikací, tak se ještě vrátím na samý začátek hlavního konfiguračního souboru. Tam jsou totiž ještě tři nepovšimnuté, i když zakomentované sekce:
1. globální nastavení prostředí
- # focus_mode = default – celkové nastavení fokusu okna
- # focus_close = previous – nastavení fokusu okna při jeho zavření
- # focus_close_wrap = 1 – přenos fokusu na poslední okno pokud je první okno zavřené a obráceně
- # focus_default = last – nastavení fokusu pokud ho žádné okno nemá
- # spawn_position = next – nastavení pozice ve stohu (stack) nově otevřeného okna
- # workspace_clamp = 1 – chování pracovních ploch při přechodu do jiného regionu
- # warp_focus = 1 – chování fokusu okna/pracovní plochy/regionu při jejich svázání s jinou plochou
- # warp_pointer = 1 – centrování ukazatele při změnách fokusu okna nebo jiných ploch
Celou tuto sekci na nic nepotřebuji, stačí standardní nastavení. Proto jí z konfigurace kompletně odstraním.
2. nastavení dekorace oken
# Window Decoration border_width = 1 color_focus = red color_focus_maximized = yellow color_unfocus = rgb:88/88/88 color_unfocus_maximized = rgb:88/88/00 region_padding = 0 tile_gap = 0
Tuto sekci ponechám beze změny a provedu pouze odkomentování výkonných řádků
3. odstranění okraje okna
# Remove window border when bar is disabled and there is only one window in workspace # disable_border = 1
V aktuálním nastavení by daný případ neměl nikdy nastat, a tak je možné celou sekci z konfigurace odstranit.
Těmito kroky je již vše připravené na popis sekce pro spouštění aplikací, kterou si ale nechám na příští díl.
Dnešní díl jsem věnoval popisu uživatelského konfiguračního souboru Spectrwm. Dále bylo na řadě nastavení počtu a označení pracovních ploch a příkazy pro manipulaci s nimi. Díl byl ukončen nastavením některých globálních parametrů prostředí. V příštím dílu se zaměřím hlavně na spouštění uživatelských aplikací pomocí klávesových zkratek. Také budou demonstrovány styly rozložení oken na pracovní ploše a funkce pro manipulaci s nimi. Na konci dílu bude zahájen popis struktury a konfigurace systémového panelu.