Konfigurace Notion – spuštění nové verze, tagy a okna, manipulace s nimi

5. 1. 2017
Doba čtení: 8 minut

Sdílet

V minulém dílu byla dokončena kapitola o Dwm aplikací vybraných patchů. Od dnešního dílu se zaměřím na Notion a začnu s popisem základních možností uživatelské konfigurace včetně ovládání prostředí.

V minulém dílu jsem dokončil ukázku aplikace patchů do WM Dwm. Od dnešního dílu se budu věnovat popisu funkčnosti a konfigurace dalšího dlaždicového WM – Notion. Více podrobností je možné najít na stránce projektu SF Notion. Jak je z webové stránky zřejmé, WM sám sebe charakterizuje jako dlaždicový a „tabulkový“ se třemi základními znaky:

  • dlaždicový – Obrazovka se rozdělí do nepřekrývajících se dlaždic. Každé okno obsadí jednu dlaždici a je v jejím rámci maximalizované.
  • tabulkový – Dlaždice může obsahovat více oken a stává se tabulkovou.
  • statický – Většina dlaždicových WM (a všechny, které jsem dosud představil) automaticky rozmisťují a mění velikost otevíraných oken. Notion toto nedělá a rozdělení plochy ponechává plně v režii a pod kontrolou uživatele.

Notion jsem sice již krátce představil a předvedl. Bylo to ale ve standardní konfiguraci, pouze na základě instalace z balíčků distribuce. Aby bylo možné Notion uživatelsky konfigurovat, je potřeba přenést globální konfiguraci do adresářové struktury běžného klienta. Na rozdíl od dříve popisovaných WM je v Notion ne jeden konfigurační soubor, ale hned několik (tedy spíše až moc…). Přenesení konfigurace se provede pomocí kopírování dvěma příkazy.

mkdir $HOME/.notion
cp /etc/notion/*.* $HOME/.notion

Na obrázku je pak vidět celkem třicet konfiguračních souborů v původním umístění.

Konfigurační soubory Notion

Jak je z obrázku patrné, v adresáři se nachází mnoho konfiguračních souborů, které jsou ale rozdělené do dvou hlavních skupin – samotná konfigurace (prefix cfg) a nastavení vzhledu (prefix look). Obrázek také jasně dokumentuje to, co již bylo zmíněno dříve – Notion se konfiguruje podobně jako WM Awesome pomocí souborů a skriptů v jazyce Lua. Naštěstí jsou pro základní konfiguraci důležité jenom některé soubory, které postupně představím. Jako první je shodou okolností i první v pořadí – cfg_defaults.lua. V něm jsou vlastně pouze odkazy na další potřebné konfigurační soubory a jeho obsah je velmi „stručný“:

---- Notion default settings--

dopath("cfg_notioncore")
dopath("cfg_kludges")
dopath("cfg_layouts")

dopath("mod_query")
dopath("mod_menu")
dopath("mod_tiling")
dopath("mod_statusbar")
dopath("mod_sp")
dopath("mod_notionflux")
dopath("mod_xrandr")

Pak už následuje soubor, který je sice o hodně rozsáhlejší, ale funkční jsou v něm pouze tři řádky – cfg_notion.lua. Ostatní řádky jsou zakomentované a mohou se rozdělit do čtyř sekcí:

  • nastavení modifikátoru a standardního terminálu
  • nastavení základních vlastností prostředí
  • odkazy na další konfigurační soubory
  • nastavení starší verze zobrazení hlavního menu

Ještě než se pustím do jednoduché úpravy tohoto souboru, upozorním případné zájemce na to, že vše zatím provádím MIMO prostředí WM Notion. Jeho start bude na pořadu až později a na daném místě na něj upozorním. Ve výše uvedeném souboru budu měnit pouze první sekci, která v původní verzi vypadá následovně:

-- Set default modifiers. The default is the 'windows' key; it is usually mapped
-- to Mod4 on Xorg-based systems. Any other modifier, such as Alt, can be used
-- instead. The 'xmodmap' tool can be used to get/set which key codes correspond
-- to which modifiers, and the 'xev' tool can be used to see what codes are
-- generated by particular keys.
--META="Mod4+"
--ALTMETA=""

-- Terminal emulator.
--XTERM="xterm"

Jak je patrné z nápovědy, je hlavním modifikátorem klávesa Win a já ji v této roli zachovám. Změny v konfiguraci pak budou jednoduché:

META="Mod4+"
ALTMETA="Mod1+"

-- Terminal emulator.
XTERM="lilyterm"

Nejdůležitějším konfiguračním souborem je cfg_notioncore.lua. V něm se nacházejí deklarace a nastavení všech důležitých ovládacích akcí prostředí. Soubor má skoro 400 řádků a je tak docela rozsáhlý. Než se pustím do jeho změn, bylo by asi vhodné objasnit systém objektů na ploše. Ty jsou definovány ve čtyřech úrovních:

  • Screen – fyzický monitor/obrazovka, může jich být i více. V konkrétním případě samozřejmě pouze jeden kus
  • Workspace – pracovní plocha na obrazovce
  • Frame – rámeček/rámečky na pracovní ploše
  • Client – okno nebo klientská aplikace uvnitř rámečku

Nyní by se mohlo zdát, že je na čase zkusit spuštění WM v „nové“ uživatelské konfiguraci. Než to ale udělám, tak (zatím bez podrobnějšího komentáře) přidám dva řádky do příslušné sekce inicializačního souboru $HOME/.xinitrc:

nwm)
        export LC_ALL=en_US.UTF-8
        export LANGUAGE=en_US.UTF-8
        exec notion
    ;;

Pak už stačí jenom uložit změny a nastartovat WM příkazem

xinit nwm

Spuštěné prostředí je vidět na obrázku:

Co je na obrázku vlastně k vidění:

  • V horní části jsou lišty od dvou rámečků, které jsou umístěné standardně na pracovní ploše.
  • V levé dolní části je umístěný panel, který zatím nechám bez povšimnutí a vrátím se k němu později.

Co je možné v daném případě dělat a jak?

  • přenos fokusu mezi oběma rámečky je možný prostým přesunem kurzoru myši
  • přenos fokusu mezi rámečky lze provádět také pomocí klávesové kombinace Win+Tab. Jedná se o pohyb směrem doprava s tím, že z posledního rámečku vpravo se přeskočí na první vlevo a jede se znovu. Stačí držet klávesu Win a postupně mačkat klávesu Tab
  • další možností přenosu fokusu je klávesová zkratka Win+K a následně Tab (tuto kombinaci budu dále uvádět ve formátu MOD+K1 ⇒ K2). K systému nastavení klávesových zkratek se ještě vrátím a zde upřesním pouze konkrétní příkaz. Při stisku první kombinace se objeví na pozici myšího kurzoru speciální značka (něco jako křížek ve čtverci) a stisknutím tabelátoru se fokus přesune na další rámeček směrem doleva
  • aktivní rámeček je možné vertikálně rozdělit pomocí kombinace Win+S
  • mezi vertikálními rámečky je možné přenášet fokus pomocí kombinací Win+P (směrem nahoru) nebo Win+N (směrem dolů)
  • aktivní rámeček je možné horizontálně rozdělit pomocí kombinace Win+K ⇒ S
  • v aktivním rámečku je možné otevřít okno terminálu pomocí kombinace Alt+F2
  • na otevření okna libovolné aplikace v aktivním rámečku je možné použít jednoduchý spouštěč aplikací, který se skrývá pod kombinací Alt+F3. Při jejím použití se vlevo dole (v aktivním rámečku!) objeví pole s názvem Run:, kde je možné buď použít přímé zadání názvu aplikace nebo listování v seznamu již použitých pomocí šipek nahoru a dolů. Pomocí klávesy Esc je možné spouštěč zavřít, klávesou Enter se vybraná aplikace spouští. Při zadání již prvního písmena se v seznamu objeví přehled všech možností, který se postupným psaním dalších písmen redukuje. Ze seznamu bohužel nelze vybrat a spustit položku pomocí myši, je nutné vypsat celý název.

Na obrázku je vidět situace při otevření spouštěče a snaze o spuštění webového prohlížeče NetSurf.

Spouštěč aplikací

Na dalším obrázku jsou vytvořené čtyři rámečky a v nich spuštěné čtyři základní aplikace. Z něj je zřejmé, že do horní lišty rámečku byly zobrazeny názvy otevřených oken aplikací a že panel ubírá pouze z levého dolního rámečku.

Otevřená okna aplikací v rámečcích

Kromě již uvedených akcí je možné měnit velikost rámečků. Existuje na to několik klávesových kombinací, které ale fungují trochu jinak, než byly výše uvedené. Např. pro zvětšení šířky aktivního rámečku je nutné držet kombinaci Win+R a pomocí šipky vpravo nastavit příslušnou šířku rámečku. Pomocí stisku Enter se pak do nového prostoru rozprostře i případné okno otevřené aplikace. Základních možností je samozřejmě ještě víc a nemá smysl je zde uvádět. Proto odkážu na příslušnou nápovědu k projektu: Klávesové zkratky

Po krátkém úvodu do základů ovládání prostředí WM Notion je možné se vrátit k hlavnímu konfiguračnímu souboru cfg_notioncore.lua. Aby bylo více pochopitelné, co je v něm vlastně obecně obsaženo, je nutné uvést schéma hierarchie objektů a tříd:

Obj
     |-->WRegion
     |    |-->WClientWin
     |    |-->WWindow
     |    |    |-->WRootWin
     |    |    |-->WMPlex
     |    |    |    |-->WFrame
     |    |    |    `-->WScreen
     |    |    `-->WInput (mod_query)
     |    |         |-->WEdln (mod_query)
     |    |         `-->WMessage (mod_query)
     |    |-->WGroup
     |    |    |-->WGroupWS
     |    |    `-->WGroupCW
     |    `-->WTiling (mod_tiling)
     `-->WSplit (mod_tiling)

Bližší vysvětlení je možné najít v rámci nápovědy Hierarchie tříd. Ještě podrobnější přehled je možné prozkoumat v příslušném dodatku k nápovědě Úplná hierarchie tříd. Na základě předchozích informací je možné konstatovat, že hlavní konfigurační soubor obsahuje dvě základní sekce. První z nich představuje definici klávesových zkratek pro vybrané třídy (WScreen, WClientWin, WGroupCW, WMPlex, WFrame, WMoveresMode). Ve druhé sekci jsou pak definovány některé položky hlavního a kontextového menu. Jednotlivé sekce pro klávesové zkratky se definují pomocí příslušné funkce, která má obecný tvar

ioncore.defbindings(context, bindings)

Další používanou funkcí pro definici klávesových zkratek je:

ioncore.bdoc(text)

Jak už asi trochu napoví její název, tato funkce slouží pro zadání nápovědy/dokumentace k předchozí funkci ioncore.defbindings. Příkaz sám o sobě nic nevykonává, ale umožní čitelnost nápovědy/dokumentace jiným programům a aplikacím. Pro jednotlivé klávesové zkratky se používá funkce:

ioncore.kpress(keyspec, cmd, guard)

Ta hlídá stisknutí příslušné kombinace kláves (keyspec), na které reaguje provedením příkazu (cmd). Spuštění příslušné funkce může být ještě podmíněno splněním podmínky ve výrazu (guard). Poslední funkcí, která se používá pro definici klávesových zkratek, je:

bitcoin_skoleni

ioncore.submap(keyspec, list)

Tato funkce zajistí chování, které bylo již stručně popsáno dříve v základním přehledu ovládání. Při použití první klávesové zkratky (keyspec) systém čeká na použití další klávesy či zkratky, která je definovaná „podřízenou“ funkcí kpress. Tímto obecným vysvětlením způsobu definice klávesových zkratek bych dnešní díl ukončil a podrobnosti a příklady představím v dílu příštím.

Dnešní díl jsem věnoval úvodu do popisu a konfigurace WM Notion. Byla popsána základní konfigurace a možnosti ovládání prostředí pomocí klávesových zkratek. Na konci dílu byla zahájena uživatelská konfigurace v hlavním konfiguračním souboru popisem způsobu definice klávesových zkratek. V příštím dílu dokončím uživatelskou konfiguraci klávesových zkratek a popis definice menu. Zahájím také popis a implementaci funkcí pro spuštění základní sady aplikací tak, jak to bylo demonstrováno u předchozích popisovaných WM.

Autor článku