Prostředí uživatele máme již nějak (a asi celkem uspokojivě pro naše účely) nastavené a můžeme se pustit do nastavení systémových. Z nich si vybereme pro nás dostačující dvě úlohy – české systémové prostředí včetně klávesnice a nastavení systémového času (tedy spíše jeho synchronizace) pomocí NTP – Network Time Protocol. Obě funkce jsou součástí systemD, takže se můžeme pomocí příslušných příkazů podívat na jejich aktuální stav:
localectl status timedatectl status
Výsledek je vidět na prvním obrázku v první galerii a my se můžeme blíže zaměřit na každou položku.
Nastavení systémové klávesnice – tento úkol provedeme pomocí funkcí systemD a nápovědy zde: Keyboard config. Na předchozím obrázku si můžeme povšimnout, že generální lokalizace je správně nastavena na češtinu, obě další položky ale nejsou nastavené pro změnu vůbec. První položka představuje nastavení klávesnice pro konzolu a druhá pro grafické prostředí. Jako první si zkusíme zjistit, jaké nám systém nabízí typy klávesnic s českým rozložením a zadáme tedy příkaz
localectl list-keymaps | grep cz
Výsledek je vidět na druhém obrázku první galerie. Výběr typu rozložení klávesnice je samozřejmě individuální, takže uvedeme pouze jeden z možných příkladů:
sudo localectl set-keymap cz-qwertz sudo localectl set-x11-keymap cz
Ověření stavu na třetím obrázku první galerie nám ukazuje, že nastavení je provedené a okamžitě funkční. Lépe řečeno je funkční české rozložení QWERTZ tak, jak je na to většina uživatelů zvyklá. Diakritické znaky také sice „fungují“, ale protože není v konzole nastavené jejich zobrazování, tak vypadají poněkud „nezvykle“. To nám ale nemusí nijak vadit, protože se v konzole diakritika moc nepoužívá. Ukázkové nastavení je tak pro nás dostatečné a můžeme pokročit dále.
Synchronizace systémového času – systém NTP umožní systémový čas synchronizovat se specializovanými časovými servery přes internet automaticky při startu a bez zásahu uživatele. K jeho zprovoznění je třeba udělat tři kroky. Prvním z nich je úprava souboru /etc/systemd/timesyncd.conf tak, jak je to vidět na čtvrtém obrázku první galerie. Můžeme samozřejmě použít i jiné NTP servery (NTP Pool), ale bylo by to zbytečné a komplikovanější. Výchozí hodnoty budou určitě dostatečné. Druhým krokem je instalace příslušného balíčku příkazem
sudo pacman -S ntp
Ve třetím kroku se už můžeme zaměřit na systemD a nastavit synchronizaci tak, aby se spouštěla při startu systému. Postupně tak zadáme dva příkazy výkonné a jeden kontrolní:
sudo systemctl enable ntpd.service sudo systemctl start ntpd.service systemctl status ntpd.service
Na pátém obrázku v první galerii je vidět, že služba je skutečně aktivní a funkční. Následně pak můžeme systém restartovat a po jeho náběhu znovu zkusit zobrazit stav služby
timedatectl status
Šestý obrázek první galerie nám pak ukazuje, že se změnil také status příslušné služby a synchronizace času je zapnutá. Na závěr této kapitoly by asi bylo vhodné uvést upozornění na další používaný příkaz
sudo timedatectl set-ntp true
Tento příkaz slouží ke konfiguraci způsobu synchronizace času jinak (systemD Timesyncd) a není možné jej kombinovat s námi použitou službou NTPD. Ta bude pro naše účely naprosto dostatečná. Tímto bychom mohli systémová nastavení opustit a plně se vrhnout na konfiguraci JWM. Jak již bylo uvedeno, konfigurace JWM je obsažena v jednom jediném souboru $HOME/.jwmrc. My máme k dispozici systémový soubor, který byl instalován společně s balíčkem jwm – viz příloha system.jwmrc.
Pokud se na konfigurační soubor podíváme blíže, tak zjistíme několik věcí:
- jedná se o typ souboru XML se vším, co dobrého i horšího k tomu patří
- soubor je poměrně obsáhlý a má včetně komentářů přes 170 řádků
- konfigurace je v souboru rozdělená na několik kapitol – Menu, Groups, Tray, Visual Styles, Virtual Desktops, Key bindings
S typem souboru nic nenaděláme, ale pro zlepšení přehlednosti a oddělení jednotlivých kapitol se možnost nabízí. Kdo bude chtít, může veškerou konfiguraci ponechat v jednom jediném souboru! My si ale předvedeme možnosti, které JWM nabízí a konfiguraci postavíme následovně:
- vytvoříme si nový adresář $HOME/.config/jwm
- v tomto novém adresáři si postupně vytvoříme dílčí XML soubory a do nich uložíme jednotlivé kapitoly konfiguračního souboru
- v uživatelském konfiguračním souboru tak zůstanou pouze odkazy na dílčí konfigurační soubory s omezeným rozsahem a obsahem
Při změnách konfigurace budeme vycházet z celkem slušné nápovědy, která je k dispozici na stránkách projektu JWM Config. K tomu ještě jedno důležité upozornění: s novějšími verzemi JWM došlo i ke změnám ve formátu jednotlivých parametrů konfigurace! Pro nové uživatele to není problém, ale pokud někdo má nějakou starší konfiguraci nebo vychází ze starších pramenů (včetně dříve zmiňovaného článku zde!), musí se mít na pozoru a vše řádně zkontrolovat a případně upravit. V první fázi si vytvoříme šest dílčích souborů, do kterých přeneseme kapitoly z konfiguračního souboru. Konkrétně to bude vypadat následovně (vycházíme z toho, že jsme přihlášeni jako běžný uživatel archguide):
- vytvoříme si nový adresář pomocí příkazu
mkdir .config/jwm
- postupně vytvoříme šest souborů pomocí série příkazů
touch ./config/jwm/desktops touch ./config/jwm/groups touch ./config/jwm/keybinds touch ./config/jwm/menu touch ./config/jwm/styles touch ./config/jwm/tray
- všechny nově vytvořené dílčí konfigurační soubory si postupně otevřeme, vložíme do nich hlavičku XML souboru a změny uložíme
<?xml version="1.0"?> <JWM> </JWM>
- pro jistotu si uděláme zálohu původního konfiguračního souboru (i když máme k dispozici ten systémový z původní instalace)
cp .jwmrc .jwmrc.old
- do dílčího souboru $HOME/.config/jwm/menu vložíme z konfiguračního souboru vše, co se týká nastavení menu, konkrétně pak řádky 4–31
- do dílčího souboru $HOME/.config/jwm/groups vložíme z konfiguračního souboru vše, co se týká nastavení aplikačních skupin, konkrétně pak řádky 33–46
- do dílčího souboru $HOME/.config/jwm/tray vložíme z konfiguračního souboru vše, co se týká nastavení systémového panelu, konkrétně pak řádky 48–63
- do dílčího souboru $HOME/.config/jwm/styles vložíme z konfiguračního souboru vše, co se týká nastavení stylu a vzhledu, konkrétně pak řádky 65–114
- do dílčího souboru $HOME/.config/jwm/desktops vložíme z konfiguračního souboru vše, co se týká nastavení virtuálních ploch, konkrétně pak řádky 124–150
- do dílčího souboru $HOME/.config/jwm/keybinds vložíme z konfiguračního souboru vše, co se týká nastavení klávesových zkratek, konkrétně pak řádky 152–173
- v konfiguračním souboru nám zbylo ještě pár „volných“ řádků, konkrétně 116–122. Ty se týkají odkazů na ikony, ale jak ukazuje první obrázek ve druhé galerii, tak odkaz stejně nikam nevede. Proto nám nebrání nic v tom, abychom kromě hlavičky XML celý obsah souboru smazali a přidali odkazy na dílčí soubory:
<Include>$HOME/.config/jwm/desktops</Include> <Include>$HOME/.config/jwm/groups</Include> <Include>$HOME/.config/jwm/keybinds</Include> <Include>$HOME/.config/jwm/menu</Include> <Include>$HOME/.config/jwm/styles</Include> <Include>$HOME/.config/jwm/tray</Include>
Původní konfiguraci jsme vlastně nijak nezměnili, pouze jsme využili možností, které nám JWM nabízí. To je zajímavé nejen z okamžitého pohledu na zjednodušení a zpřehlednění konfigurace, ale i do budoucna. Pak už bude stačit přidat jenom další dílčí soubor a odkaz na něj a bude možné konfiguraci dále rozvíjet a přizpůsobovat přáním a požadavkům uživatele. Zde by se asi nabízelo vyzkoušení nové konfigurace. Můžeme samozřejmě pomocí menu JWM ukončit a znovu spustit, ale má to, resp. může mít celkem neblahý následek: pokud bychom někde udělali chybu, je pak otázkou, jestli a jak by se JWM spustilo. Naštěstí existuje řešení, které nám pomůže. Použijeme k tomu v první řadě nápovědu:
jwm --help
Jak je vidět na druhém obrázku druhé galerie, máme k dispozici celkem 8 možností, co s JWM dělat. Dvě jsou klasické – zobrazí nápovědu a verzi JWM. Pak jsou zde tři další pro ukončení a restart JWM a znovunačtení globálního menu. Pro nás je zajímavý příkaz, který zkontroluje syntaktickou bezchybnost konfiguračního souboru a zobrazí případné problémy:
jwm -p
Abychom si to nějak přiblížili, vytvoříme umělou chybu tak, že změníme jeden z odkazů:
<Include>$HOME/.config/jwm/groupss</Include>
Na třetím obrázku ve druhé galerii si můžeme prohlédnout výsledek kontroly po zavedení chyby. JWM vypsal varování pro konkrétní soubor a řádek v něm a popis chyby – nelze najít soubor, na který se konfigurace odkazuje. Vrátíme tedy odkaz do původního správného formátu a znovu zkusíme kontrolu. Pokud se žádné hlášení o problémech nevyskytne, můžeme JWM ukončit, vrátit se do konzole a znovu spustit grafické prostředí. Výsledkem je spuštění JWM tak, jak jsme to viděli a zažili při prvotně použité systémové konfiguraci. Tímto máme vše připravené a můžeme se pustit do vlastní konfigurace. Na tomto místě je nutné poznamenat, že se budeme snažit vybrat nejdůležitější a nejobvyklejší parametry a jejich nastavení. Není možné na daném rozsahu seriálu popisovat všechny možnosti a varianty, protože jich JWM má opravdu hodně.
Jako první si vezmeme do parády to, co je nejvíce viditelné – systémový panel. Jak je vidět na čtvrtém obrázku druhé galerie, je k dipozici celkem 6 viditelných oblastí:
- JWM – otevře hlavní systémové menu
- znak podtržítka – _ – minimalizuje/obnoví všechna otevřená okna na ploše
- čtyři virtuální plochy
- ikony a popis minimalizovaných oken
- systémová oblast, kde je ikona trvale spuštěného správce schránky
- systémový čas
Abychom si trochu rozklíčovali základní nastavení panelu, bude nutné se podívat do přílohy na dílčí konfigurační soubor tray. Ten je velmi stručný a obsahuje vlastně pouze devět „výkonných“ řádků, z toho dva přidávají mezeru mezi ostatní prvky či oblasti. Pokud se podíváme do nápovědy, tak máme pro systémový panel k dispozici celkem 8 možností:
- nastavení vlastního panelu – automatické skrývání, rozměry, zarovnání, způsob umístění na ploše, postavení vůči jiným oknům
- Clock – hodiny s definovaným formátem, velikostí a možností spustit vybranou aplikaci
- Dock – místo pro systémovou oblast, lze nastavit šířku
- Pager – zobrazení virtuálních ploch, možnost nastavit štítky
- Spacer – vložení mezery se zadaným rozměrem mezi ostatní prvky
- Swallow – přidání spustitelné aplikace do panelu, nastavuje se název spouštěcího souboru a rozměry
- TaskList – zobrazení otevřených oken s nastavením rozměrů
- TrayButton – přidání tlačítka pro spuštění aplikace s zadaným názvem, ikonou a krátkou nápovědou
Podle dokumentace a obsahu dílčího souboru pak můžeme udělat příslušné změny. Vždy prvně uvedeme původní parametr a krátké vysvětlení k němu, pak to samé s novou variantou. Začneme nastavením vlastního panelu
<!-- Tray at the bottom. --> <Tray x="0" y="-1" autohide="off">
Nastavení panelu na spodní hranu plochy je způsobeno zápornou hodnotou parametru y. My si zkusíme přesunout panel nahoru a klidně můžeme vynechat nastavení automatického skrývání. Původně nastavená hodnota je totiž defaultní (jinak může být nastavena hodnota top, bottom, left, right). Kromě toho si ještě zvětšíme výšku panelu a nová verze nastavení tak může vypadat třeba takto:
<!-- Tray on the top. --> <Tray x="0" y="0" height="30">
Pak následuje tlačítko s interní funkcí pro vyvolání hlavní nápovědy. Ta je zobrazena pod názvem JWM a vyvolá se levým tlačítkem myši:
<TrayButton label="JWM">root:1</TrayButton>
My si pouze změníme název a kliknutí necháme původní:
<TrayButton label="Menu">root:1</TrayButton>
Další tlačítko obsahuje inetrní funkci pro minimalizaci/obnovení všech otevřených oken na aktuální virtuální ploše:
<TrayButton label="_">showdesktop</TrayButton>
My změníme znak podtržítka na něco, co bude více viditelné:
<TrayButton label="|X|">showdesktop</TrayButton>
Následující nastavení přepínače virtuálních ploch, zobrazení otevřených oken na panelu a systémové oblasti necháme beze změn a podíváme se na poslední položku panelu, což je zobrazení času:
<Clock><Button mask="123">exec:xclock</Button></Clock>
Zobrazení času je ponecháno ve standardním formátu a při kliknutí libovolným tlačítkem myši se otevře zobrazení analogových hodin (viděli jsme je při zkoušení grafického prostředí bez WM). Pro kliknutí a otevření zadané aplikace pod zobrazením času je použita další zatím neuvedená možnost – přidání příslušného „tlačítka“. Také si můžeme všimnout, že při najetí kurzorem myši na zobrazení času se objeví podrobnější informace o datumu a čase ve formátu zkratka dne v týdnu, datum číslem, název měsíce, rok číslem a čas včetně vteřin. My si doplníme jiný formát zobrazení hodin (na bližší informace nám postačí výše uvedené najetí myši a tak si zobrazíme pouze samotný čas). Pokud by někdo chtěl nastavit jiný formát zobrazení hodin, je možné použít formátování podle strftime. Také změníme spouštěnou aplikaci, protože vyvolávat hodiny ze zobrazení hodin nemá velký smysl. Proto si je nahradíme personálním organizátorem Osmo (v základní instalaci není, takže ho musíme nejprve instalovat sami). Mezi systémovou oblast a zobrazení hodin ještě vložíme oddělovač, jak je to použito pro oddělení třeba tlačítek pro menu a minimalizaci otevřených oken. Deklaraci tlačítka můžeme dokonce vynechat a přesto zůstane zachováno otevření aplikace libovolným tlačítkem myši. Zobrazení hodin se hodně zjednoduší a může vypadat nakonec takto:
<Clock format="%H:%M">exec:osmo</Clock>
Po ukončení úprav v dílčím souboru můžeme změny a jejich vliv na JWM vyzkoušet pomocí položky menu Restart nebo příkazem do terminálu
jwm -restart
Tento příkaz můžeme samozřejmě vyvolat po každé jednotlivé změně, abychom měli jistotu, že vše funguje dle předpokladu. Také můžeme samozřejmě využít příkaz pro kontrolu chyb v konfiguraci
jwm -p
Celkový výsledek je vidět na posledním obrázku ve druhé galerii a do přílohy dáváme konečnou verzi souboru tray-final. Tímto bychom také mohli dnešní díl ukončit a v konfiguraci pokračovat v tom následujícím.
Dnešní díl jsme věnovali dokončení systémové konfigurace nastavením české klávesnice a synchronizace systémového času. Hlavně jsme se pak zabývali podrobnější konfigurací JWM se zaměřením na vytvoření a úpravu dílčích konfiguračních souborů. Popis jsme ukončili změnami v nastavení systémového panelu. V příštím dílu se budeme na začátku věnovat instalaci balíčků z AUR včetně nového nástroje, který zvládá veškeré dostupné balíčky bez ohledu na jejich umístění. Budeme také pokračovat v konfiguraci hlavního menu JWM ručně i pomocí vhodného nástroje pro generování položek menu.