Minulý díl jsem ukončil přípravou konfiguračních souborů na úpravu sekce pro spouštění aplikací. Než se pustím do konkrétních kroků, tak by asi bylo vhodné si stanovit některé základní předpoklady:
- spouštěné aplikace, které budou v konfiguraci, si rozdělím na tři typy: systémové funkce prostředí, spouštěče aplikací a základní sadu uživatelských aplikací
- modifikátor nastavím tak, aby nekolidoval s běžnými klávesovými zkratkami ve standardní konfiguraci (u mne důležité i proto, že některé kombinace Spectrwm jsou stejné jako moje nastavení mateřského Awesome!)
- všechny akce pro spuštění vybraných aplikací a funkcí budou v hlavním konfiguračním souboru, z toho lokalizovaného se naopak odstraní
Akci začnu tím, že z lokalizovaného konfiguračního souboru odstraním tyto funkce:
- bind[lock] = MOD+Shift+Delete – uzamčení obrazovky
- bind[menu] = MOD+p – spuštění aplikace dmenu
- bind[quit] = MOD+Shift+q – ukončení WM
- bind[restart] = MOD+q – restart WM
- bind[term] = MOD+Shift+Return – spuštění aplikace XTerm
Pro přidání akcí do hlavního konfiguračního souboru je nejjednodušší použít tamtéž umístěnou nápovědu:
# EXAMPLE: Define 'firefox' action and bind to key. # program[firefox] = firefox http://spectrwm.org/ # bind[firefox] = MOD+Shift+b
Jinak je možné celou sekci s názvem PROGRAMS smazat a přesunout na přednější místo v konfiguračním souboru. Já se při tvorbě této sekce nebudu úplně striktně držet výše uvedené nápovědy, ale deklaraci funkcí rozdělím na definici funkcí v příslušné sekci a společnou definici klávesových zkratek. Jako první vytvořím sekci systémových funkcí prostředí, kde budou pouze dva zástupci:
program[lock] = i3lock --color=008080 --pointer=default --show-failed-attempts program[session] = oblogout
Parametry aplikací nebudu komentovat, protože pocházejí z nastavení v minulých seriálech o Arch a Manjaro Linuxu. Očekávané systémové funkce pro ukončení a restart WM zde být nemusí, protože mají přímo definované funkce. Ve druhé sekci spouštěčů aplikací budou tři položky:
program[dmenu] = dmenu_run -fn monospace:bold:size=11 program[gmrun] = gmrun program[rofi] = rofi -show run -lines 20 -columns 2
Do sekce vložím všechny tři spouštěče aplikací, které jsem v prvním dílu seriálu instaloval pro použití ve všech popisovaných WM. Poslední sekce uživatelských aplikací bude mít čtyři položky pro spuštění terminálu, textového editoru, správce souborů a webového prohlížeče:
program[term] = lilyterm program[webb] = netsurf program[fman] = xfe program[tedi] = mousepad
Pak už může následovat sekce s jedenácti propojeními deklarovaných aplikací s příslušnou klávesovou zkratkou. Pro všechny zkratky použiju jednotný modifikátor, který představuje kombinace kláves Win+Alt:
bind[quit] = MOD+Mod1+Q bind[restart] = MOD+Mod1+R bind[lock] = MOD+Mod1+Delete bind[session] = MOD+Mod1+End bind[dmenu] = MOD+Mod1+P bind[gmrun] = MOD+Mod1+G bind[rofi] = MOD+Mod1+mezerník bind[term] = MOD+Mod1+Enter bind[webb] = MOD+Mod1+B bind[fman] = MOD+Mod1+F bind[tedi] = MOD+Mod1+E
Spuštění uživatelských aplikací nemá smysl nijak blíže komentovat nebo demonstrovat na obrázcích.Úplně postačí, když si každý funkčnost klávesových zkratek ověří, stejně jako u příkazů pro restart či ukončení WM. O trochu zajímavější jsou funkce pro uzamčení obrazovky, správu sezení a spouštění aplikací. Ty ukážu na příslušných obrázcích. První z nich ukazuje zamčení uživatelského sezení
Jak je z obrázku zřejmé, není toho nijak moc vidět. Případné zájemce ale odkážu buď přímo do nápovědy aplikace I3lock nebo do minulého seriálu, kde byla podrobně popsána. Dalším v pořadí je správce sezení Oblogout. Jedná se pouze o ukázku, protože jsem zatím neprováděl žádná nastavení (některé volby ale mohou být funkční!)
Dále následují všechny tři spouštěče aplikací v pořadí dmenu, gmrun, rofi
První z nich (dmenu) asi moc nepřekvapí, ale ještě se k němu vrátím. Gmrun už vypadá celkem podivně, protože je roztažený na celou obrazovku. I toto se následně pokusím vyřešit. No a poslední je již konfigurovaný pomocí úpravy vzhledu v souboru $HOME/.Xresources (kopie z příslušného webu Rofi).
Spouštění aplikací a jejich následný (ne)vzhled nechám zatím stranou a zaměřím se na něco, co je pro dlaždicové WM poměrně důležité až zásadní: rozložení otevřených oken na pracovní ploše. K dispozici jsou tři základní možnosti – horizontální, vertikální a maximalizované. Názvy možností jsou asi celkem jasné a není třeba k tomu více podrobností. Proto pouze dvě jednoduché poznámky:
- aktuální rozložení je viditelné v panelu mezi číslem regionu a pracovní plochy a názvem pracovní plochy. Pro uvedené tři možnosti jsou také tři značky: [|] – vertikální, [-] – horizontální, [ ] – maximalizované
- změnu rozložení oken pro aktuální pracovní plochu lze plynule měnit pomocí kombinace kláves Win+Mezerník
Bylo by asi vhodné k tomuto tématu objasnit systém, jaký Spectrwm používá pro označení zobrazovacích zařízení. Základem je samozřejmě fyzické zařízení (monitor), který se označuje jako obrazovka (1. screen). Obrazovka musí být minimálně jedna, ale může jich být i více. Další úrovní je 2. region. Ten může nebo nemusí být definován a může se rozkládat na ploše jedné nebo více obrazovek. Je to vlastně jakási virtuální obrazovka. Na ploše obrazovky či regionu leží vždy minimálně jedna pracovní plocha (3. workspace). Ta pokrývá vždy celou plochu obrazovky či regionu. A konečně na pracovní plochu se umisťují okna aplikací (4. windows).
Následující tři obrázky ukazují všechny tři uvedené základní možnosti rozložení oken na ploše
Při pohledu na obrázky je nutné uvést zásadní princip, na kterém je rozložení oken postavené. Jedná se o dvě plochy, které se na pracovní ploše objevují. První z nich je tzv. hlavní plocha (master area), která obsahuje standardně pouze jedno okno. Jeho velikost a počet umístěných oken je možné pomocí klávesových zkratek měnit či nastavovat. Hlavní plocha pro vertikální dělení je vždy vlevo, pro horizontální dělení nahoře. Druhou plochou je tzv. stohovací (stacked area), která může obsahovat prakticky libovolný počet otevřených oken. Její velikost není možné měnit pomocí klávesových zkratek, je ale možné s jejich pomocí měnit počet oken aktuálně zobrazených. Ve vertikálním rozložení má stohovací plocha jeden sloupec (pravý), v horizontálním rozložení jeden řádek (spodní).
Existuje i funkce, kterou je možné prohodit hlavní a stohovací plochu. Jedná se o funkci flip_layout. Aby bylo možné jí ovládat pomocí klávesových zkratek, je nutné upravit původní variantu v lokalizovaném konfiguračním souboru (používání kláves s nutností přeřazovače může být docela ošidné, a proto je lepší volit nějaké „bezpečné“ varianty…):
bind[flip_layout] = MOD+Shift+backslash => bind[flip_layout] = MOD+Shift+F10
Kromě uvedeného základního rozložení je možné využít i další možnost, kterou Spectrwm nabízí. Jedná se o nastavení ploch uživatelským způsobem tak, aby se dané rozložení objevilo vždy při startu WM. Obecně je možné popsat tuto vlastnost/funkci následovně:
ws[N]:master_grow:master_add:stack_inc:always_raise:stack_mode
Pro lepší přehled uvedu následně tabulku, kde budou všechny možnosti pro nastavení oken, rozložení a ploch. Bude jich o něco víc, než je nutné pro nastavení jednotlivých pracovních ploch:
Název funkce | Klávesová zkratka | Popis funkce |
master_grow | MOD+L | zvětší hlavní plochu |
master_shrink | MOD+H | zmenší hlavní plochu |
master_add | MOD+comma (des. čárka) |
přidá okno do hlavní plochy |
master_del | MOD+period (des. tečka) | odebere okno z hlavní plochy |
stack_inc | MOD+Shift+comma | přidá řádek/sloupec do stohovací plochy |
stack_dec | MOD+Shift+period | odebere řádek/sloupec ze stohovací plochy |
always_raise | není | vždy zajistí možnost sestavy dlaždic překrýt plovoucího okna |
stack_mode | není | může mít hodnoty vertical, vertical_flip, horizontal, horizontal_flip, fullscreen |
stack_reset | MOD+Shift+Mezerník | obnoví základní rozložení oken na pracovní ploše |
Nyní už je z výše uvedené tabulky (a hlavně položky stack_mode) jasné, proč bylo zvoleno číslo pět jako maximální počet pracovních ploch. Pro startovní nastavení pracovních ploch totiž beze zbytku využiju standardní možnost, která je v hlavním konfiguračním souboru. Celou sekci pouze přesunu za definici klávesových zkratek a odkomentuji výkonné příkazy
layout = ws[1]:4:0:0:0:vertical layout = ws[2]:0:0:0:0:horizontal layout = ws[3]:0:0:0:0:fullscreen layout = ws[4]:4:0:0:0:vertical_flip layout = ws[5]:0:0:0:0:horizontal_flip
Pro změny v rozložení oken na pracovních plochách nestačí restart WM, je nutné jeho ukončení kombinací
Win+Alt+Q
a nové spuštění příkazem
xinit swm
Následující série čtyř obrázků ukazuje rozložení čtyř otevřených oken na plochách A, B, D, E. Vzhled na ploše C nemá smysl ukazovat, protože je viditelné pouze jedno okno přes celou plochu. Plocha A se od minulé série obrázků liší v tom, že je hlavní plocha zvětšená na úkor plochy stohovací. Plocha B je stejná jako při minulém zobrazení horizontálního rozložení oken. Plocha D má opět zvětšenou hlavní plochu a pořadí této a stohovací plochy je prohozené. Plocha E má horizontální rozložení a prohozené pořadí hlavní a stohovací plochy.
Plocha A, vertikální rozložení, zvětšená hlavní oblast
Plocha B, horizontální rozložení
Plocha D, prohozené vertikální rozložení, zvětšená hlavní oblast
Plocha E, prohozené horizontální rozložení
Uvedené obrázky by mohly být posledním počinem v oblasti rozložení oken na ploše a další, na co se zaměřím, je panel. Jak je asi z předchozích obrázků i popisu zřejmé, ten nějak funguje a něco zobrazuje. A to dokonce i bez toho, aby bylo nutné mu věnovat pozornost a provádět konfiguraci. Určitě to ale není proto, že by se nastavit nedal nebo to bylo nějak složité. Následující kapitola snad všechny přesvědčí, že je tomu spíše naopak. V hlavním konfiguračním souboru je k dispozici celá zakomentovaná sekce, a tak prvotně odkomentuji některé parametry:
bar_enabled = 1 bar_border_width = 1 bar_border[1] = rgb:00/80/80 bar_border_unfocus[1] = rgb:00/40/40 bar_color[1] = black bar_font_color[1] = rgb:a0/a0/a0 bar_font = -*-profont-*-*-*-*-12-*-*-*-*-*-*-* # bar_action = baraction.sh bar_justify = left bar_format = +N:+I +S <+D>+4<%a %b %d %R %Z %Y+8<+A+4<+V # bar_at_bottom = 1 # stack_enabled = 1 # clock_enabled = 1 # clock_format = %a %b %d %R %Z %Y # iconic_enabled = 0 # maximize_hide_bar = 0 # window_class_enabled = 0 # window_instance_enabled = 0 # window_name_enabled = 0 # verbose_layout = 1 # urgent_enabled = 1
Jedná se o tyto funkce WM pro zobrazení a konfiguraci panelu:
- bar_enabled – nastaví hodnotu/stav funkce bar_toggle na 1, tzn. povolí zobrazení panelu. Zobrazit/skrýt panely na všech použitých pracovních plochách lze pomocí kombinace Win+B. Pomocí kombinace Win+Shift+B lze zobrazit/skrýt panel na aktuální pracovní ploše (funkce bar_toggle_ws)
- bar_border[1] – barva rámečku panelu na první obrazovce
- bar_border_unfocus[1] – barva rámečku panelu na regionu, který nemá fokus a je na první obrazovce
- bar_color[1] – barva pozadí panelu na první obrazovce
- bar_font_color[1] – barva písma v panelu na první obrazovce
- bar_font – druh písma použitý v panelu. Pro jeho popis je možné použít specifikaci podle XFT nebo XLFD
- bar_justify – umístění panelu na ploše, jsou možné varianty left, center, right
- bar_format – nastavení formátu, který určuje počet a pořadí jednotlivých položek panelu
Obrázek po uložení změn a restartu WM nemá smysl předkládat, protože se na vzhledu prostředí vlastně díky zachování původních hodnot nic nezměnilo. Další úpravy a hlavně podrobnější konfiguraci panelu si nechám až na příští díl seriálu.
Dnešní díl jsem věnoval popisu spouštění aplikací pomocí klávesových zkratek. Dále byly popsány možnosti nastavení stylu rozložení otevřených oken na ploše a funkce pro jejich ovládání. Na konci dílu jsem zahájil uživatelskou konfiguraci systémového panelu. V příštím dílu tuto konfiguraci dokončím a předvedu instalaci a konfiguraci externí systémové lišty. Díl pak bude ukončen popisem nastavení parametrů spouštěných aplikací, které Spectrwm nabízí.