Dláždění I

Was?

i3_skorologoZačal jsem používat i3. Proč? Protože můj zdánlivě bezedný pohár trpělivosti s GNOME Shellem přetekl. Když jsem se rozhodoval, kam přejdu, měl jsem (jak už to na Linuxu bývá) fakt hodně možností. Nadupané prostředí, nebo něco minimalistického? Plovoucí okna, nebo kachle? A který z těch strašně moc okenních manažerů za to stojí? Nakonec jsem se rozhodl vystoupit ze své comfort zone a zvolil jsem přístup nejvíce vzdálený mémugr. dosavadnímu oknaření.[1]

Navykání

Vlastně trochu lžu. Zvykání si na tiling je nakonec to poslední, co mohlo být challenge. Moje používání GNOME Shellu totiž sestávalo z umístění každého okna na jinou plochu a následného přepínání mezi plochami scrollováním nad horním panelem. Tuto pro mě nejdůležitější funkci ale i3bar (to je výchozí panel) obsahuje, takže nemusím hned měnit všechny své návyky.

Zvykání na nové paradigma tak probíhá postupně a docela přirozeně. Jediné, co mi trochu chybí (a co bych i od tohoto typu WM v roce 2016 čekal), je použitelnost myši na změnu uspořádání oken. Oceňuji sice ovládání klávesnicí, ale to se přece nevylučuje. Jo, a ještě křížek na zavření okna. Jak bez toho někdo může žít? Naštěstí se dá okno zabít mnoha kreativními způsoby.

Trošku mi vadí taky to, že tento správce oken není kompozitní. To znamená, že kreslení na zamrzlé okno z dob xpéček opět ožívá! Koneckonců, retro se vrací do módy.

Konfigurace

Nejlepší na nové hračce je ta spousta konfigurace, kterou je nutné provést. Většina běžných věcí, zde čeká na ruční zanesení do konfiguráků různě po systému.

Upozornění: přecházím z GNOME. Stále mám nainstalováno GNOME. Proto používám různé utility z tohoto prostředí, stejně jako jiné zrůdnosti, které bych možná jinak nainstalovány neměl (dívám se na tebe, systemd). Toto není obecný návod; dokonce to není ani návod. Navíc je to česky, takže užitečnost pro ostatní je minimální. Ale proč to přesto nenapsat.

EDIT: Dnes, o dva roky později, je to trošku jinak. Především jsem součástky GNOME vyměnil za součástky MATE.

Ikska

Nepřekvapivě se klávesnice přestala chovat, jak se od ní chtělo (poněkud překvapivě měla alespoň správné rozložení) a touchpad přestal reagovat na klepnutí. Ačkoli by tyto věci šly nastavit přes setxkbmap a spol., šáhl jsem do hlubin /etc a nemohl jsem si nevzpomenout na tematické xkcd.

Section "InputClass"
        Identifier "keyboard defaults"
        MatchIsKeyboard "on"
        Option "XkbLayout" "cz"
        Option "XkbVariant" "dvorak-ucw"
        Option "XkbOptions" "caps:escape,lv3:lsgt_switch,keypad:oss,compose:rctrl-altgr,numpad:shift3,nbsp:level3,terminate:ctrl_alt_bksp"
EndSection

Section "InputClass"
        Identifier "NevypnutelnyTouchpad"
        MatchIsTouchpad "on"
        Driver "libinput"
        Option "Tapping" "on"
EndSection

Zde je pozoruhodné, že na touchpad používám ovladač libinput, ačkoli právě přechod od Synaptics na něj a s ním spojená náhlá nefunkčnost tap-to-click byla tou poslední kapkou chybějící k zahození GNOME. I když zahození je patrně silné slovo (vizte výše i níže).

Samotné i3

Po prvním spuštění mě přivítal dialog, v němž jsem nastavil jako svou klávesu k ovládání i3 (často označováno $mod) klávesu Super a který mi v dobré víře nastavil zkratky tak, aby odpovídaly rozložení Dvorak. Což bych jistě ocenil, kdybych nebyl z Vimu zvyklý na nezměněné rozložení. Proto jsem si všechny klávesy překonfiguroval.

Veškeré nastavení se odehrává v souboru ~/.config/i3/config a sestává ze dvou větších skupin: klávesové zkratky a programy spuštěné při startu i3. Plus nějaké drobnosti jako písmo a panel. Nebudu zde poskytovat návod, jak konfigurovat i3, to nejlépe popisuje uživatelská příručka. Ale nějaké mé insights by možná někdo (🌼) ocenil. Zde poskytuji svůj konfigurák; níže některé jeho části ve stručnosti popíšu.

Klávesové zkratky

Ovládání oken

Na klávesách ovládajících samotného správce oken není pranic zajímavého. Jediné, co jsem si přidal, je vypínání a zapínání dekorací oken, což se občas hodí, jelikož některé (GNOME) aplikace používají CSD. Trochu více jsem v oblasti správy oken přidal do „myších zkratek“ – jedná se o přepínání floatingu oken (pravé tlačítko) a jejich zabíjení (náhrada křížku; prostřední tlačítko).

Hlasitost

Ovládání hlasitosti přes klávesnici mám zatím vyřešeno velmi nešťastně. Nejspíš na něj vyčlením nějaký skript, neboť zatím má dvě zásadní nevýhody oproti hlasitosti na panelu: Jde přes 100 % (což se občas hodí, ale taky to dokáže nepříjemně překvapit) a ovládá pouze reproduktory/sluchátka (měl by ovládat výchozí výstup, což může být i HDMI). Jediné, co je zde snad dokonalé, je vypínač mikrofonu.

Ten záhadný pkill na konci má za úkol informovat zasláním signálu správce panelu, že se změnila hlasitost a je proto zapotřebí část panelu překreslit.

Podsvícení obrazovky

Změnu jasu bych pro lepší čitelnost taky mohl přesunout do samostatného skriptu. Používám interní utilitku gnome-settings-daemona, kterou musím kvůli oprávnění (sahám přece na hardware) spouštět přes pkexec. Celé je to obaleno bashem kvůli aritmetické expansi. Nevýhodou (kterou opět řeší až ovládání jasu na panelu) je, že má-li dojít k přetečení 100 %, zůstane jas na původní úrovni a nezvýší se na maximální možnou.

Zamykání a uspávání

Využívám i3lock. Po zamknutí  vypínám obrazovku (na to ten xset). Prostor pro zlepšení vidím v agresivnějším šetření energií při zamčeném počítači (spravil by to xset, ale spíše budu prozkoumávat možnosti gnome-settings-daemona mimo GNOME, když už ho mám).

Spouštění aplikací

Krom výchozího $mod+d na spouštění příkazů jsem přidal (prakticky jen odkomentoval) $mod+D na spouštění aplikací – programů s GUI, přesněji řečeno se svým .desktop záznamem. Je to nejspíš mířeno na lidi přecházející z desktopových prostředí, takže dík. Obvykle se k tomu prvnímu používá dmenu, k tomu druhému i3-dmenu-desktop. To se mi ale zdálo neskutečně líné, proto jsem je vyměnil za j4-dmenu-desktop. Proč se tak asi jmenuje?

Oblíbené aplikace ale nechci spouštět takto zdlouhavě. Já jsem byl již z dřívějška zvyklý mít na Super+F1 Vim a na Super+Shift+F4 aptitude,was? takže jsem podobný systém zavedl i v novém prostředí.was again? Prohlížeč mezi těmito zkratkami však nenajdete, protože ho zpravidla spouštím jednou na začátku sezení a provází mne až do vypnutí počítače. Možná bych ho měl nechat spouštět automaticky při přihlášení.

Nejdůležitější aplikací je samozřejmě terminál. Ten se v i3 spouští tradičně přes $mod+Enter. Protože ale člověk vždycky nepotřebuje spustit plnohodnotný terminál přes půl obrazovky, přidal jsem si i zkratku na spuštění malého plovoucího terminálu. Že se bude skutečně vznášet nad ostatními okny zajišťuje poslední z pravidel pro okna (řádky začínající for_window).

Protože o externí monitory (hot-plug a zejména hot-unplug) se vždy staralo GNOME (a nevím, proč to nedělá gnome-settings-daemon), nastavil jsem si na klávesu pro přepínání obrazovek spuštění programu lxrandr, který dostatečně jednoduše nabízí nastavení více monitorů. Pro složitější nastavení vzájemné polohy lze z grafických programů využít také arandr. Klávesová zkratka na xrandr --auto se hodí při odpojení monitoru. Automatisovat je to možné nadvakrát: přidáním pravidla pro udev (to jsem udělal) a přidáním skriptu po probuzení, kdyby k odpojení došlo při spánku (to brzy udělám).

Ovládání hudebního přehrávače

Poslední čtveřice zkratek slouží k ovládání Rhythmboxu pomocí $mod+Alt+šipka, na což jsem taky zvyklý již z dřívějška.

Procesy na pozadí

Při startu i3 se spouští několik procesů. Prvním je skript ~/.fehbg vygenerovaný programem feh. Tímto skriptem se vykreslí tapeta. Nečekejte ale zázraky při připojování monitorů, neboť se jedná jen o načtení obrázku do X root window. Podobně může posloužit i utilitka xsetbg.

Dalším je už několikrát zmíněný gnome-settings-daemon. Jestli to správně chápu, část funkcionality tohoto démona se přelila do GNOME Shellu, takže aktuálně jediný jeho viditelný efekt je poskytování XSettings, díky čemuž jsou GTK+ aplikace krásné. A možná se ještě trochu montuje do správy napájení, ale to je u mě aktuálně trochu schizofrenní, takže si nejsem jist.

Protože vytvářet dobrý panelový indikátor sítě by bylo neskutečně namáhavé, zvlášť když chci jednoduché přepínání bezdrátových sítí, přišel ke slovu applet NetworkManagera. Ten (jako všechny ostatní applety) sídlí v „ikonkové oblasti“ tray, která je na i3baru zcela vpravo a zjevně to není lze změnit. To trochu rozbíjí celkové rozvržení lišty, ale to je holt cena za příjemně klikací nastavení Wi-Fi.

Dunst je jméno démona starajícího se o oznámení. To je dnes poměrně zavedená součást desktopu, ačkoli příliš mnoho notifikací nedostávám. Budu se mu věnovat zanedlouho.

Protože nechci v noci příliš namáhat své vzácné oči, spouštím ještě redshift, jenž v nočních hodinách přidává obrazovce červený nádech. Opravdu je mnohem příjemnější se na takový obraz za tmy dívat.

Další nastavení

Co by to bylo za okenní manažer, kdyby neuměl spravovat okna podle různých pravidel. Jedno z pravidel for_window jsem nakousl už v sekci o spouštění aplikací. Jiným pravidlem vypínám dekoraci u oken Firefoxu (protože chci, aby se posuvník dotýkal okraje obrazovky). Další slouží k většímu pohodlí panelu.

Právě panel je jedním z těch „dalších“ nastavení. Jeho vlastnosti jsou zadány v bloku bar. Zejména jsem jej přesídlil k hornímu okraji obrazovky. Za zmínku stojí taky posloupnost dvou voleb tray_output, jejíž význam je u mě zhruba takový: Je-li připojen monitor, který je označen jako primární, vykresli nm-applet tam. Jinak jej vykresli na monitoru připojeném přes HDMI. Nm-appletem se samozřejmě myslí jakékoli ikonky v tray, ale panel samotný (i s indikátory tvořenými programem specifikovaným za direktivou status_command) se vykreslí na všech výstupech. Toto se dá změnit obdobnou sérií voleb output.

Nakonec bych upozornil na nastavení písma, a to jak panelu, tak zbytku WM. Nechcete-li používat písma X Serveru, je nutno název písma  předepnout gr. řetězcem „pango:“ podle používaného vykreslovacího enginu.

Notifikace

Konfigurace notifikačního démona dunst probíhá skrze soubor ~/.config/dunst/dunstrc. Můj exemplář naleznete zde. Vzhled je nastaven tak, aby nesl známky staršího GNOME Shellu (umístění dole vprostřed, zobrazování ikon, barva). EDIT: Dnes už je to takové Androidovější: upozornění se objevují na panelu. Samotná práce s oznámeními je místy krkolomná, neboť je dunst orientován, stejně jako i3, na klávesnici. Na druhou stranu nabízí tento démon zajímavé možnosti skriptování, sám jsem vyzkoušel předčítání došlých upozornění. Aktuálně ale žádnou takovou vychytávku nepoužívám.

Vyměním; zn. nespěchá

Nutně muselo nastat hledání nových aplikací, neboť ty Gnomí úplně nezapadají (zejména kvůli CSD). V této oblasti jsem ale pravda moc nepostoupil, neboť mi k životu (zvlášť o zkouškovém) stačí málo:

  • Emulátor terminálu – stále se držím gnome-terminalu.
  • Prohlížítko internetů – stále se držím Iceweaselu Firefoxu.
  • Prohlížítko souborů – stačí mi cd a ls. Lžu, mám rád klikátka a Nautila jsem vyměnil za lehký a rychlý pcmanfm.
  • Prohlížítko PDF – sice jsem si doinstaloval Atril, což je honosný název pro starou Evince, ale ponejvíce teď využívám malý a vimosní prográmek zathura.
  • Prohlížítko obrázků – Nějakou dobu mi postačil eog, pak jsem ale zabrousil mezi GTK+ alternativy a jako nejsympatičtější se mi jeví viewnoir.
  • Kalkulačka – bohužel se stále držím gnome-calculatoru. Sice vůbec nezapadá do prostředí, ale lepší jsem rychlým projetím aptitude nenašel.
  • Textový editor – to nemyslíte vážně.
  • Mixér – nikoli kuchyňský spotřebič, nýbrž utilitka ke správě zvuku. Používaje PulseAudio jsem sáhl po pavucontrol.
  • Přehrávátko hudby – stále se držím Rhythmboxu, hlavně kvůli statistice přehrání jednotlivých skladeb.
  • Přehrávátko videa – z gnome-mplayeru jsem přešel na… mplayer bez GUI. Ale nejspíš se zase vrátím, až se vyřeší stochastická správa napájení.

V příštím díle…

Nejzajímavější práce se, alespoň u mě, odehrála (a stále průběžně odehrává) na panelu. Z minimalistického defaultu jsem se proskriptoval až k hybridu plnému ikonek, který připomíná klasická desktopová prostředí. Poněvadž je to ale téma rozsáhlé, ponechám ho až na „někdy příště“.

A samozřejmě nesmí chybět snímek obrazovky.

Snímek obrazovky mého i3 desktopu
Poměrně komplexní rozdělení oken. Povšimněte si i režimů „tabbing“ a „stacking“.

3 thoughts on “Dláždění I”

  1. K tomuhle nemám slov.

    Ale komentáře jsou potravou bloggerů/pseudo-twtterů a tak ti tady musím jednu lehčí večeři zanechat.

    To je ten delší článek, cos nemohl dopsat?

    1. Díky, Le ty! Ano, to je on; jakmile jsem se pohanil, že ho nikdy nedokončím, jal jsem se ho dopsat. Klasika.

Komentáře nejsou povoleny.