Hlavní navigace

Konfigurace Notion – spouštění aplikací, stavový panel a lišta Notion, ukončení první části seriálu

Jaromír Vojtaj

Minulý díl byl věnován klávesovým zkratkám a deklaraci menu. V dnešním dílu se zaměřím na spouštění aplikací a stavový panel a lištu. Tímto dílem bude ukončena první část seriálu o dlaždicových WM.

minulém dílu jsem zahájil úpravu konfigurace pro spouštění základní sady uživatelských aplikací. Na začátku dnešního dílu tuto kapitolku dokončím. Již v minulém dílu jsem uvedl formát klávesové zkratky, která spouští terminál. Abych zachoval původně zadané předpoklady, vytvořím pro tento účel novou zkratku, která bude zadání odpovídat. Všechny nové spouštěče aplikací je nutné zařadit do oddílu defbindings(„WMPlex.toplevel“, { v konfiguračním souboru cfg_notioncore.lua. Jako první zkusím upravit spuštění terminálu pomocí klávesové kombinace Win+Alt+Enter. Přidržím se vzoru v jiných podobných konfiguracích a zkusím první variantu příkazu:

bdoc("Run a terminal emulator."),
kpress(META.."ALTMETA+Return", "mod_query.exec_on_merr(_, XTERM or 'xterm')"),

Možná se už od pohledu zdá konstrukce divná, přesto ale změnu uložím a provedu restart WM. Jak je vidět na dalším obrázku, první pohled na nezvyklou konstrukci nezklamal:

Chyba v konfiguraci

Jedná se sice o konkrétní chybu, ale na obrázku je možné obecně ukázat, jak se Notion chová při nějakém problému s konfigurací. Při zjištění problému na startu WM se objevilo okno s chybovým hlášením, kde je na prvním místě hláška s popisem problému: neznámá klávesa ALTMETA. Pak následují odkazy na příslušné sekce konfiguračních souborů, kde je možné problém lokalizovat. Ve spodní části okna vlevo je pak tlačítko okay, pomocí kterého je možné okno s chybovým hlášením zavřít. Důležitá je jedna věc: nelze to samozřejmě konstatovat úplně obecně, ale v konkrétním případě chyby WM bez problémů funguje. Samozřejmě s výjimkou deklarované klávesové zkratky. Řešení nastalého problému je samozřejmě jednoduché a výkonný příkaz, který je plně funkční, vypadá následovně:

kpress(META.."Mod1+Return", "mod_query.exec_on_merr(_, XTERM or 'xterm')"),

Na základě ověření funkčnosti je pak možné doplnit celou sadu funkcí pro spouštění sady základních uživatelských aplikací. Jako první bude na řadě modifikovaná sestava systémových funkcí. V předchozím dílu jsem sice deklaroval funkci pro spuštění aplikace Oblogout, ale v prostředí Notion její uplatnění není příliš vhodné. Proto použiju pouze systémovou funkci pro ukončení WM. Kromě ukončení běžícího WM by asi bylo vhodné implementovat i jeho restart. Celá sekce pak může vypadat třeba následovně:

-- Systemove funkce prostredi
    bdoc("Zamceni uzivatelske obrazovky."),
    kpress(META.."Mod1+Delete", "mod_query.exec_on_merr(_, LOCK)"),
    bdoc("Sprava uzivatelskeho sezeni - ukonceni WM."),
    kpress(META.."Mod1+End", "ioncore.shutdown()"),
    bdoc("Sprava uzivatelskeho sezeni - restart WM."),
    kpress(META.."Mod1+Home", "ioncore.restart()"),

Po uložení změn je možné provést restart prostředí ještě původním způsobem (kombinace Alt+F12 a zadání příkazu session/restart). Pokud nedošlo k nějaké chybě, prostředí nastartuje bez hlášení a je možné všechny deklarované funkce vyzkoušet. Fungují samozřejmě tak, jak se předpokládalo. Je tak možné přikročit k další sekci, což jsou funkce pro spuštění spouštěčů aplikací. Zde bych chtěl upozornit na to, že Dmenu je použito pouze v nejzákladnějším formátu bez nastavení fontů a barev. Je proto možné, že při jeho zobrazení nebudou v příslušném poli viditelné názvy aplikací!

-- Spoustece aplikaci
bdoc("Spusteni Dmenu."),
kpress(META.."Mod1+P", "mod_query.exec_on_merr(_, DMENU)"),
bdoc("Spusteni Gmrun."),
kpress(META.."Mod1+G", "mod_query.exec_on_merr(_, GMRUN)"),
bdoc("Spusteni Rofi."),
kpress(META.."Mod1+space", "mod_query.exec_on_merr(_, ROFI)"),

Změny se opět uloží a k restartu WM jej již možné použít před chvílí deklarovanou kombinaci Win+Alt+Home. Po odzkoušení funkčnosti (pozor na malé písmeno na začátku zápisu mezerníku pro spuštění Rofi!) je možné dokončit tuto kapitolku deklarací funkcí pro spuštění základní sady uživatelských aplikací. Já k nim přeřadím již dříve popsané spuštění terminálu a celá sekce tak bude vypadat takto:

-- Uzivatelske aplikace
    bdoc("Spusteni terminalu."),
    kpress(META.."Mod1+Return", "mod_query.exec_on_merr(_, XTERM or 'xterm')"),
    bdoc("Spusteni weboveho proshlizece."),
    kpress(META.."Mod1+B", "mod_query.exec_on_merr(_, WEBBR)"),
    bdoc("Spusteni spravce souboru."),
    kpress(META.."Mod1+F", "mod_query.exec_on_merr(_, FIMAN)"),
    bdoc("Spusteni textoveho editoru."),
    kpress(META.."Mod1+E", "mod_query.exec_on_merr(_, TEDIT)"),   

Vyzkoušením poslední várky spouštěčů by asi bylo možné ukončit celou kapitolu. Bylo by samozřejmě možné pokračovat v popisu ještě dále, ale nemá to valný smysl. Proto proberu poslední dvě záležitosti, které se týkají Notion WM – stavový panel a způsob rozložení oken v jednotlivých rámečcích (layouts). O panelu již byla krátká zmínka při úvodním popisu vzhledu základní obrazovky. Pro oživení je vidět na obrázku

Stavový panel Notion

Jak je z obrázku patrné, v panelu jsou dvě informace: aktuální datum a čas a vytížení stroje, na kterém WM běží. Vzhled a chování panelu má „na svědomí“ konfigurace, která se nachází v souboru cfg_statusbar.lua. Tento soubor v sobě obsahuje dvě sekce nastavení panelu. První z nich má na starost základní vzhled a vytvoření panelu na obrazovce (v kódu ponechávám pouze výkonné příkazy, řádky s nápovědou jsem vymazal):

mod_statusbar.create{
   
    screen=0,
    pos='bl',

    fullsize=false,

    systray=true,

    template="[ %date || load: %load ] %filler%systray",
}

Z výpisu je zřejmé, že se jedná o celkem pět položek nastavení:

  • panel se zobrazí na první obrazovce
  • panel bude umístění na spodní hraně obrazovky v levém dolním rohu (bl = Bottom Left)
  • panel není nastaven na plnou šířku obrazovky
  • je povoleno zobrazení systémové lišty
  • v panelu je viditelné datum, zatížení stroje a systémová lišta

Ve druhé sekci je pak nastavení konkrétního formátu zobrazených informací. V daném případě je standardně nastavený pouze formát data, ostatní nastavení jsou prázdná:

mod_statusbar.launch_statusd{

    date={
        date_format='%a %Y-%m-%d %H:%M',
    },

    load={
        --update_interval=10*1000,
        --important_threshold=1.5,
        --critical_threshold=4.0,
    },

    mail={
        --update_interval=60*1000,
        --mbox=os.getenv("MAIL"),
        --files={},
    },
}

Předchozí výpis napovídá, že kromě data a zatížení stroje je možné v panelu zobrazit také informace o mailové komunikaci. Více bude případným zájemcům patrné z kompletního výpisu příslušného konfiguračního souboru, který na konci dílu dám do přílohy. Nastavení systémového panelu je poměrně chudé, takže v něm udělám pouze dvě změny. První bude velmi jednoduchá a bude spočívat ve změně formátu zobrazení data:

date={
        date_format='%F %T',
    },

Po uložení změny se může WM restartovat a výsledek je vidět na obrázku

Nový formát datumu v panelu

Druhá změna bude představovat snahu o zobrazení „něčeho“ v systémové liště. Při této činnosti vyjdu z doporučení na stránce projektu Notion na SF, kde se kromě jiných doporučuje využití aplikací Stalonetray a Parcellite. Výhoda je v tom, že Stalonetray jsem již několikrát použil a je k dispozici příslušný konfigurační soubor. K prvnímu pokusu tedy stačí doplnit spuštění obou aplikací do inicializačního souboru $HOME/.xinitrc:

nwm)
    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    stalonetray &
    parcellite &
    exec notion
;;

Výsledek této úpravy je vidět na obrázku

Systémová lišta Notion

Jak obrázek ukazuje, obě aplikace se spustily bez problémů, ikona správce schránky je na svém místě, ale:

  • panel se objevuje kdesi uprostřed obrazovky
  • při bližším pohledu je zřejmé, že zabírá celý jeden rámeček
  • panel vůbec „nerespektuje“ aktuální konfiguraci aplikace

Nemá asi velký smysl zde rozebírat nějaké další podrobnosti, a to z jednoduchého důvodu: ani po delším snažení se mi NEPODAŘILO docílit rozumného nastavení panelu tak, aby splňoval alespoň základní požadavky:

  • Stalonetray bez problémů zobrazí ikonu spuštěného Parcellite
  • oba panely jsou viditelné tak, jak je zvykem – stavový panel vlevo dole, systémová lišta vpravo dole
  • systémová lišta přizpůsobuje svoji velikost požadavkům uživatele

Výše uvedené požadavky se mohou zdát jednoduché a vlastně základní (a u všech předchozích dlaždicových WM se je podařilo celkem obstojně realizovat), ale jednoduché to opravdu není. Pro nastavení je totiž nutné nalézt tu správnou kombinaci pro spuštění Stalonetray s příslušnými parametry v inicializačním souboru, nastavit příslušnou konfiguraci Stalonetray v souboru $HOME/.stalonetrarc, deklarovat příslušným způsobem vytvoření a nastavení systémové lišty v konfiguračním souboru cfg_statusbar.lua a konečně nastavit pravidla pro zobrazování oken aplikací v konfiguračním souboru cfg_kludges.lua. To vše je samozřejmě nutné udělat v nějaké funkční kombinaci a to je docela slušná alchymie!!! Jenom pro ilustraci uvádím dva odkazy na to, jak se to řeší v předchůdci WM Ion3: ArchWiki Stalonetray, Ion3 + Stalonetray.

Jak je z odkazů asi celkem jasně patrné, návody se různí a stejně tak výsledný vzhled a funkčnost panelu a lišty. Z tohoto důvodu se již touto problematikou nebudu dál zabývat a přejdu rovnou k ukončení popisu Notion WM a celé první části seriálu. Vynechám tedy i původně avizovaný popis systému a konfigurace rozložení oken. Kdo by se chtěl tomuto WM ještě dál věnovat, může použít podrobnější popis zde: Stručné nahlédnutí. Zkušenější uživatele bych pak chtěl požádat o jejich zkušenosti a postřehy s konfigurací Notion, které bych případně použil jako doplnění ve druhé části seriálu a dlaždicových WM.

Pro lepší přehled dávám do přílohy všechny důležité konfigurační soubory Notion WM:cfg_defaults.lua, cfg_notion.lua, cfg_notioncore.lua, cfg_kludges.lua, cfg_layouts.lua, cfg_statusbar.lua, stalonetrayrc

Na úplný závěr první části seriálu bych si dovolil velmi stručně shrnout první čtyři probírané zástupce dlaždicových WM:

  • Spectr WM – jedná se o poměrně dobře konfigurovatelný WM, konfigurace se skládá vlastně pouze ze dvou běžných textových souborů. WM obsahuje standardní stavový panel a velmi dobře umí zacházet s pracovními plochami
  • QTile – jedná se o velmi aktivně vyvíjený WM v Pythonu. Konfigurace se provádí v jediném souboru (Python) a je možné použít jednak vlastnosti samotného jazyka a také mnoho knihoven, které patře k vlastnímu WM. Ten obsahuje zajímavou sadu vestavěných rozložení oken včetně jejich provázání s konkrétní pracovní plochou, velké množství různých widgetů do stavového panelu a propracovaný systém reakcí na systémové události
  • Dwm – tento WM je odlišný od všech popisovaných v tom, že se jeho konfigurace provádí změnami v hlavičkovém souboru pro překlad konečné verze aplikace v jazyce C. Vzhledem k tomu se může zdát komplikovaný, ale je to spíše opačně. Základ v jazyce C umožní uživateli použít připravené patche, které do WM přinesou další zajímavou funkčnost
  • Notion WM – odlišnost je hlavně ve statickém umisťování oken. Konfigurace je velmi složitá (i když v poměrně jednoduchém jazyce LUA) díky velkému množství konfiguračních souborů a hlavně vzhledem k rozsáhlým možnostem konfigurace. Ve svém důsledku je to až nepřehledné a těžké na orientaci uživatele

Pokud by chtěl někdo začít s pokusy na dlaždicových WM, tak bych mu asi jednoznačně doporučil Qtile. Mým osobním favoritem je ale Dwm (už pár měsíců ho používám jako hlavní WM na vlastním stroji a chystám se ho instalovat i na novou verzi OS, na kterou se v době historicky krátké chystám). Spectr WM také není špatný, ale osobně jsem v něm žádnou zásadní výhodu proti Dwm neobjevil. A Notion WM je podle mého míněný jenom těžko stravitelný WM pro většinu uživatelů, i když může pro někoho mít význam. Jeho konfigurace i použití se mi jeví jako velmi složité a těžkopádné.

Tímto bych považoval první část seriálu o dlaždicových WM za uzavřenou. Po nějaké době, kdy dostanou přednost jiná témata, se k nim opět vrátím. Půjde nejenom o popis dalších vybraných WM podle přehledu na začátku seriálu, ale také o srovnání všech popisovaných WM ve vztahu k systémovým prostředkům stroje.

V dnešním dílu jsem celkem ne moc úspěšně dokončil popis konfigurace Notion WM. Vzhledem k tomu by nemělo smysl pokračovat s dalšími možnostmi konfigurace, a proto byl tento díl a celá první část seriálu ukončena. Pokračování přijde v budoucím termínu podle dohody s redakcí.

Našli jste v článku chybu?