Konfigurace Spectrwm – nastavení panelu, systémová lišta, parametry spouštěných aplikací

Jaromír Vojtaj 15. 9. 2016

Minulý díl byl věnován popisu spouštění aplikací, rozložení oken na ploše a nastavení panelu. Dnešní díl zaměřím na dokončení konfigurace panelu, systémové lišty a parametrům spouštěných aplikací

Minulý díl jsem ukončil základním uživatelským nastavením panelu a v dnešním dílu se k němu vrátím podrobněji. První úpravou, kterou dnes ukážu, docílím lepší čitelnosti údajů na panelu. Touto úpravou bude změna fontu písma v panelu. Použiju k tomu kromě jiného a přehlednějšího způsobu zápisu. Příslušný řádek v konfiguračním souboru bude vypadat následovně:

bar_font = Terminus:style=Bold:pixelsize=18:antialias=true

Výsledek této změny je vidět na následujícím obrázku

Změna fontu písma panelu

Když už mám provedené změny v panelu a fontu, je možné se vrátit znovu k nastavení spouštěče aplikací dmenu a nastavit ho do původní podoby:

program[dmenu] = dmenu_run $dmenu_bottom -fn $bar_font -nb $bar_color -nf $bar_font_color -sb $bar_border -sf $bar_color

Výsledný vzhled je patrný z dalšího obrázku.

Nový vzhled Dmenu

Tímto bych přešel k asi „nejzáhadnějšímu“ parametru pro nastavení panelu, funkci bar_format. Je to zdánlivě nesmyslný  a neprůhledný sled písmen a číslic, kde ale každý ze znaků má svůj smysl. Pro lepší přiblížení se podívám na všechny možnosti, které WM dává pomocí jednoduché tabulky:

Znak   Zobrazení v panelu
+<     mezera
+A     výstup externího skriptu
+C     třída okna (z WM_CLASS)
+D     název pracovní plochy
+F     indikátor plovoucí plochy
+I     pořadí (index) pracovní plochy
+M     počet ikonizovaných (minimalizovaných) oken na pracovní ploše
+N     číslo obrazovky
+P     třída a instance okna, oddělené dvojtečkou
+S     způsob rozložení oken na ploše
+T     instance okna (z WM_CLASS)
+U     naléhavé doporučení
+V     verze aplikace WM
+W     název okna (z _NET_WM_NAME/WM_NAME)
++     znak ‘+’

U všech znaků je možné nastavit rozsah (počet zobrazených znaků, např. +64A) jejich výstupu v panelu. Pokud vezmu v úvahu tabulku možností a poznámku o počtu znaků, je možné rozšifrovat stávající nastavení panelu v konfiguračním souboru:

+N:+I +S <+D>+4<%a %b %d %R %Z %Y+8<+A+4<+V

číslo obrazovky:index pracovní plochy, způsob rozložení oken na ploše, název pracovní plochy ve špičatých závorkách, 4 mezery, datum v určitém formátu, 8 mezer, výstup externího skriptu, 4 mezery, verze WM.

Tím by skoro všechno kolem panelu mělo být jasné a je možné se tak vrátit k jeho nastavení. Nebudu zbytečně dlouho napínat a rovnou uvedu, jak jsem nastavil pracovní verzi konfigurace panelu (nepovolené položky jsem pro lepší přehlednost smazal):

bar_enabled              = 1
bar_border_width         = 2
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                 = Terminus:style=Bold:pixelsize=18:antialias=true
# bar_action             = baraction.sh
bar_justify              = left
bar_format               = (+D):+I +S+2<+M>+2<%F %R+2<+W+2<+U
iconic_enabled           = 1
verbose_layout           = 1
urgent_enabled           = 1

V horní části jsem změnil pouze šířku okraje panelu, takže stačí si podrobněji popsat poslední čtyři položky:

  • formát panelu je nastaven na zobrazení: (název pracovní plochy):pořadí pracovní plochy, způsob rozložení oken na ploše, počet minimalizovaných oken na ploše, datum ve formátu YYYY-MM-DD, hodiny ve formátu HH:MM, zobrazení názvu aktivního okna, zobrazení indikátoru naléhavého doporučení
  • iconic_enabled – povoluje zobrazení počtu minimalizovaných oken na aktuální pracovní ploše
  • verbose_layout – povoluje zobrazení počtu otevřených oken na hlavní ploše a počtu sloupců/řádků na stohovací ploše aktuální pracovní plochy. Zobrazení je součástí indikace způsobu rozložení oken na pracovní ploše, např. ve formě[1|1]  – jedno okno na hlavní ploše, vertikální rozložení oken, jeden sloupec na stohovací ploše
  • urgent_enabled – povoluje zobrazení indikátoru naléhavého doporučení. Většinou neukazuje vůbec nic, ale některé aplikace (např. emulátory terminálu) něco podobného občas vyžadují či očekávají

Následující dva obrázky ukazují stav po uložení změn a restartu WM. První z nich čistou plochu, druhý se spuštěným terminálem

Čistá pracovní plocha

Spuštěný terminál na ploše

Kromě jiného jsem při nastavení panelu zmínil možnost minimalizace oken, kterou jsem ale blíže nespecifikoval. Tato akce probíhá tak, že okno vlastně úplně „zmizí“, a proto byl do panelu zařazen indikátor počtu takto minimalizovaných oken. Další dva obrázky ukazují stav po minimalizaci dvou oken (kombinace Win+W) a při pokusu o jejich „navrácení“ do původního stavu (kombinace Win+Shift+W. Tato funkce nabízí přehled všech minimalizovaných oken a uživatel si může vybrat, které z nich obnoví do původního rozložení

Počet minimalizovaných oken

Zpětná maximalizace oken

Na konec jsem v rámci úpravy panelu ponechal funkci bar_action. Ta umožní zobrazit výstup nějakého uživatelského skriptu v rámci stavového panelu. V popisu Spectrwm na ArchWiki je možné najít dvě možnosti, jak tuto funkci využít. První z nich je vytvoření spustitelného souboru se skriptem (baraction.sh) a druhou je použití aplikace Conky. První možnost považuji za čistě ukázkovou, proto se zaměřím rovnou na Conky. Pro aplikaci této možnosti je nutné udělat čtyři jednoduché kroky:

  • instalovat Conky pomocí příkazu

yaourt -S conky

  • vytvořit soubor $HOME/.conkyrc s obsahem např.
out_to_x no
out_to_console yes
background no
no_buffers yes
double_buffer yes
update_interval 30.0
uppercase no
total_run_times 0
use_spacer none
TEXT
|=> Uptime:${uptime_short} |RAM:$memperc%-${mem} |CPU:${cpu}% |Net down/up:${downspeedf ens33}/${upspeedf ens33} kB/s
  • změnit formát panelu takto:
bar_format = (+D):+I +S+1<+M+1<%F %R+1<+W+1<+U+2<+A
  • nastavit spuštění Conky v rámci panelu odkomentováním a konfigurací příslušné položky
bar_action = conky

Na obrázku je vidět výsledek výše uvedených opatření

Conky v panelu

Tím se dostávám k závěrečné fázi popisu konfigurace Spectrwm. Než ji ale dokončím, musím upozornit na jednu věc, kterou jsem záměrně zatím neprezentoval. Ten čtenář, který si popsané postupy zkouší, zjistil jednu nemilou věc: při startu WM se sice spustí správce schránky CopyQ, ale otevře se přes celou obrazovku a naopak se neusadí v systémové liště. Kromě toho se chová jako „běžné“ okno aplikace a usazuje se vedle ostatních otevřených oken. Lépe je to vidět na obrázku

Maximalizované okno CopyQ

Žádné zásadní vylepšení nepřinese ani pokus přesunout okno aplikace na třetí pracovní plochu, kde je nastaven plovoucí způsob rozložení otevřených oken. Nebudu zde dlouho spekulovat a vrátím se na úplný začátek popisu Spectrwm. Tam bylo uvedeno, že použitý panel nemá k dispozici systémovou lištu, kterou je třeba nahradit nějakou specializovanou aplikací. Možností se zde nabízí několik a já využiju jednu z nich: Stalonetray. V prvním kroku provedu jednoduchou instalaci

yaourt -S stalonetray

Na obrázku je vidět, že jeho velikost je zanedbatelná:

Instalace Stalonetray

Spolu s instalací se vytvoří i globální konfigurační soubor, který je nutné přenést do domovského adresáře uživatele:

cp /etc/stalonetrayrc $HOME/.stalonetrayrc

Tento soubor je nutné otevřít a pro daný účel změnit pouze jeden řádek konfigurace, např.:

geometry 100x1+1330+0

Po uložení změny je nutné ještě změnit způsob startu WM v souboru $HOME/.xinitrc. V něm se vypustí nebo zakomentuje globální spuštění CopyQ, které se spolu se spuštěním Stalonetray přesune do sekce pouze pro Spectrwm

;;
swm)
    stalonetray &
    copyq &
    exec spectrwm
;;   

Po uložení změn je nutné ukončit a znovu nastartovat WM. V pravém horním rohu se pak objeví okno Stalonetray i se zobrazenou ikonou CopyQ, jak je to v systémových lištách obvyklé – viz obrázek

Spuštění Stalonetray

Z lišty je samozřejmě možné správce schránky otevřít, ale pořád je roztažený na celou obrazovku, což je celkem nepříjemné. Je to samozřejmě dáno tím, že se otevírá dialogové okno v dlaždicovém prostředí. Pro tento účel má Spectrwm v konfiguraci funkce, kterým se obecně říká quirks (nějak nevím, který překlad do češtiny by mohl být ten správný: vtípky, manýra, výstřednost, slovní trik, šprým, škubnutí…). Každopádně jsou to funkce a nastavení, které má na starosti manipulaci s okny, které v dlaždicovém uspořádání vyžadují „zvláštní pozornost“. Patří sem hlavně různé dialogy nebo naopak aplikace, které potřebují celoobrazovkový režim. Zatím bez bližšího vysvětlení přidám do konfiguračního souboru $HOME/.spectrwm.conf dva řádky do příslušné sekce:

quirk[copyq:copyq] = FLOAT + ANYWHERE + IGNORESPAWNWS + NOFOCUSCYCLE + NOFOCUSONMAP + OBEYAPPFOCUSREQ
quirk[stalonetray:stalonetray]  = FLOAT + ANYWHERE + NOFOCUSCYCLE + NOFOCUSONMAP + OBEYAPPFOCUSREQ

Po uložení změna a restartu WM je situace mnohem příznivější: správce schránky už se neotvírá po celé ploše a hlavně: „nesoupeří“ s ostatními okny a dlaždicemi na ploše. Otevírá se tak, jak je dobrým zvykem: nad ostatními okny! Patrné je to z obrázku

Systémová lišta s aplikací CopyQ

A nyní zpět ke quirkům. Obecně je možné konstatovat, že se tyto funkce tvoří podle obecného vzoru

quirk[class[:instance[:name]]] = quirk [+ quirk ...]

Položky class, instance, name jsou atributy oken příslušných aplikací. Tyto hodnoty je možné zjistit pomocí systémové aplikace

xprop

Ta kromě jiného poskytuje potřebné výstupy

WM_NAME(STRING)  = "CopyQ"          = name
WM_CLASS(STRING) = "copyq", "copyq" = instance, class

Samotný quirk se pak vybírá z následujícího seznamu:

  • ANYWHERE – povoluje oknu samostatnou, necentrovanou pozici
  • FLOAT – okno nemá být umístěno do dlaždic, ale být plovoucím
  • FOCUSONMAP_SINGLE – okno získá fokus pouze tehdy, pokud je prvním oknem na obrazovce a není zde žádné jiné okno se stejnou hodnotou class/instance
  • FOCUSPREV – po opuštění okna získá fokus předchozí aplikace s fokusem, nikoliv předchozí aplikace ve stohu
  • FULLSCREEN – odstraní rámeček okna kvůli využití celé velikosti regionu
  • IGNOREPID – ignoruje PID při určení startovací pracovní plochy pro nové okno aplikace
  • IGNORESPAWNWS – ignoruje nastavenou pracovní plochu při určení startovací pracovní plochy pro nové okno aplikace
  • MINIMALBORDER – odstraní rámeček okna, které nemá fokus a není plovoucí
  • NOFOCUSCYCLE – odstraní aplikaci z normálního cyklu přenášení fokusu
  • NOFOCUSONMAP – okno nezíská fokus, pokud se jako první objeví na obrazovce
  • OBEYAPPFOCUSREQ – pokud aplikace vyžaduje fokus přes klientskou zprávu _NET_ACTIVE_WINDOW, požadavku se vyhoví
  • TRANSSZ – nastaví se velikost okna, pokud by bylo příliš malé
  • WS[n] – vynutí zobrazení nového okna na definované pracovní ploše
  • XTERM_FONTADJ – při změně velikosti zajistí nastavení velikosti fontu v aplikaci XTerm

Celkově se dá říct, že nastavení quirků může být docela ošemetné a pokud člověk někde nenajde konkrétní sestavu, může jít hodně o použití metody pokus-omyl. To by ale bylo již na rámec seriálu a tak ukončím popis konfigurace Spectrwm upozorněním na možnost spuštění aplikací při startu WM. K tomu asi stačí uvést nápovědu z globálního konfiguračního souboru (v tom uživatelském jsem tyto řádky vypustil):

# Launch applications in a workspace of choice
# autorun = ws[1]:xterm
# autorun = ws[2]:xombrero http://www.openbsd.org

Jako úplně poslední příspěvek do kapitoly Spectrwm dávám do přílohy konečné verze důležitých konfiguračních souborů:

Uživatelský konfigurační soubor

Lokalizovaný konfigurační soubor

Konfigurační soubor Conky

Konfigurační soubor Stalonetray

widgety

Uživatelský init soubor

Dnešní díl jsem věnoval dokončení konfigurace systémového panelu včetně spuštění akce se zobrazením systémových informací v něm. Dále byla popsána instalace a konfigurace externí systémové lišty, která ve standardním panelu není k dispozici. Jako poslední v aktuálním dílu i celé kapitole o Spectrwm bylo popsáno nastavení parametrů spouštěných aplikací. V příštím dílu se již pustím do dalšího zástupce dlaždicových WM – Qtile. Bude představena konfigurace klávesových zkratek, pracovních ploch a stylů rozložení oken na ploše.

Našli jste v článku chybu?
Lupa.cz: Blíží se konec Wi-Fi sítí bez hesla?

Blíží se konec Wi-Fi sítí bez hesla?

Root.cz: Hořící telefon Samsung Note 7 zapálil auto

Hořící telefon Samsung Note 7 zapálil auto

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Vitalia.cz: Nová vakcína proti chřipce se aplikuje nosem

Nová vakcína proti chřipce se aplikuje nosem

Podnikatel.cz: Chystá se smršť legislativních novinek

Chystá se smršť legislativních novinek

DigiZone.cz: Sat novinky: NASA Ultra HD (4K)

Sat novinky: NASA Ultra HD (4K)

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

Vitalia.cz: Tradiční čínská medicína a rakovina

Tradiční čínská medicína a rakovina

DigiZone.cz: Budoucnost TV vysílání ve Visegrádu

Budoucnost TV vysílání ve Visegrádu

Lupa.cz: Co všechno je Facebook schopný cenzurovat?

Co všechno je Facebook schopný cenzurovat?

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

120na80.cz: Nejsilnější alergeny jsou pryč

Nejsilnější alergeny jsou pryč

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

DigiZone.cz: Regionální tele­vize CZ vysílá "Mapu úspěchu"

Regionální tele­vize CZ vysílá "Mapu úspěchu"

Vitalia.cz: Jsou vegani a vyrábějí nemléko

Jsou vegani a vyrábějí nemléko

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Lupa.cz: Proč jsou firemní počítače pomalé?

Proč jsou firemní počítače pomalé?

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?