Heronovo IT doupě

300 dnů na i3wm

Jsem zvyklý pracovat na řádce. CLI nebo TUI považuju na zcela plnohodnotné pracovní prostředí, ostatně i tento článek píšu ve vimu v terminálu (potom mě tedy bohužel čeká náročná úprava ve WordPressu). Grafické rozhraní jsem vždy bral jako něco navíc, co je příjemné mít, ale není to základ.

Tohle vychází jednak z mé počítačové minulosti (když v 6 letech začínáte na Didaktiku, tak je pro vás textový režim asi naprosto normální), ale taky z toho, jak programy ve skutečnosti pracují. Grafické nebo textové nebo webové rozhraní je jen … rozhraní. Tomu samotnému kódu je (by mělo) být jedno, jak do něj tečou vstupy a kam píše výstup.

Takže pro mě není rozdíl, zda parametry pro lame naklikám v audacity nebo napíšu na příkazové řádce. Na té řádce je to pro mě jednodušší, protože když si vyladím parametry, tak už to můžu rovnou spustit na 1000 dalších souborů. I paralelně pomocí xargs.

tmux

Proč tento dlouhý úvod? Jako admin běžně pracuju přes ssh. Připojuju se na hromadu serverů, na každém serveru mám trvale spuštěné screen / tmux sezení.

Pokud někdo neví o co jde, tak je to program, který vám umožní rozdělit jeden terminál na více tabů, dokonce lze i jeden tab rozdělit na více oken a v nich mít spuštěné programy.

tmux s deseti taby a třemi okny v jednom tabu

Běžně mám nachystáno 10 tabů (snadno dostupné přes klávesy 1 až 0), na kterých pracuji. 3 taby mám vyhrazené pro určitý typ činností, dalších 7 je potom obecně použitelných.

Toto používám už možná přes 10 let. Na svém serveru mám screen / tmux terminál a pomocí ssh se tam připojuji a tam dělám vlastně veškerou soukromou práci. Připojím se odkudkoliv (kde je dostatečně kvalitní linka s nízkou latencí) a pracuju. Programy mi tam běží tak dlouho, jak dlouho běží server. V některých případech i několik let.

XFCE

Pochopitelně dneska potřebujeme grafické prostředí. A to nejen k vůli tomu, aby se nám na plochu vešlo víc terminálů :-D. Chceme si prohlížet obrázky, sledovat videa a třeba i tím webem se na terminálu nebrouzdá nejpohodlněji. Takže GUI je nutnost. (Pokud člověk stříhá video nebo upravuje fotky, tak aalib je sice super, ale přece jen detaily unikají. ;-) )

No, takže jsem dlouho hledal prostředí, které by mi vyhovovalo. Nemám rád žádné eye-candy, chci mít co nejvíc místa na programy a co nejméně nutného režijního místa na „dekorace“ oken, menu, různé paletky nástrojů apod.

Na linuxu jsem na dlouhou dobu zakotvil u XFCE a občas střídal s LXDE. Nechá se to nastavil velmi minimalisticky. Bylo to dobré, ale furt to nebylo ono.

O Windows ani nemluvím, jistě, programátoři MS odvádějí skvělou práci, prostředí vypadá hezky, ve W10 toho ani moc nezavazí, ale pokud mají OS pojmenovaný podle grafického prostředí, tak by to mohlo být lepší. (Ale pochopitelně je ořech udělat jedno prostředí pro všechny kategorie uživatelů. Tady máme v linuxu výhodu velkého výběru.)

Takže jsem hledal něco a ani jsem vlastně nevěděl co.

Dlaždicový správce oken

O dlaždicových prostředích jsem věděl, že existují. Na screenshotech to vždy vypadalo strašně divně. Nechápal jsem, jak tohle může někdo používat, je to strašný chaos, strašně nepřehledné…

Není.

Dlaždicové prostředí se snaží o jednu věc. Vyplnit celou plochu okny s programy. Jeden program běží na celé ploše. Dva programy, plocha se rozdělí buď horizontálně nebo vertikálně. Třetí okno se vejde buď vedle nich, nebo se podělí o prostor s jedním z těch dvou oken. A tak dále.

Dvě okna vedle sebe
Třetí okno se může podělit o místo s dalším oknem ve vertikálním boxu
Nebo i čtyři

i3wm

A tak se stalo, že jsem si jedno páteční odpoledne sedl a pod dojmem videa od Petra Krčmáře nainstalovat a zkusil použít i3wm. A od té doby jsem se do xfce ani nepřihlásil (teda on už ani není nainstalovaný).

Pokud se na to video budete dívat poprvé, asi to bude strašný chaos. Ano je, protože práce s tiling wm se dost špatně dostává do videa. Je to asi jako když někomu popisujete práci pomocí kl. zkratek. win+ctl+f. Zní to strašně. Přitom při práci to stisknete ve zlomku sekundy a ani vám to nepřijde.

Opravdu doporučuju si práci v i3wm vyzkoušet. Třeba během sledování videa od Petra.

Co mě na tom zaujalo

Kromě toho povídání nahoře, já jsem zvyklý pracovat s programy na fullscreen. Nevím proč, možná je to velikostí monitoru (a popravdě nevím, jak velký by monitor musel být, abych tam měl okna, možná jako ten v laboratoři na ČVUT). Takže moje běžná práce ve Windows vypadá tak, že mám appky na fullwindows a pomocí Alt+Tab se jen mezi nimi přepínám. Výhoda oken veškerá žádná. V XFCE vlastně taky.

Krom toho jsem velmi zvyklý používat taby. Ve screen / tmux se běžně přepínám mezi 10 taby. Nic nezvyklého. (Některé mám teda ještě rozdělené na panely, ale tam nepracuju, jen tam jsou zobrazené monitory určitých veličin.)

V i3wm je práce na x plochách velmi snadná. Pomocí win+1 až win+0 se dostanu na libovolnou plochu z 10.

Takže win+3, win+d (výběr programu), kodi, enter a bum, na ploše 3 mám kodi. Kdykoliv stisknu win+3, dostávám se okamžitě na běžící kodi.

Apropos kodi. Hledal jsem multimediální přehrávač, který by zapadal do i3wm. Používal jsem DeadBeef, nebo Audacios a vlc, ale to prostě nebylo ono. Kodi je ideální, protože je to fullscreen aplikace a umí jak hudbu, tak videa a navíc díky pluginům i přehrávat youtube. Takže mi sedí na třetí ploše, pokud chci pustit další album, tak win+3 a jsem v kodi. Nechá se ovládat i přes ipad, takže po letech mám opět „televizi“ s dálkovým ovládáním.

Na 2. ploše mám webové prohlížeče a poštovního klienta. Většinou 2 (firefox a thunderbird), někdy ještě i chrome. Nemám je jako 3 okna vedle sebe, ale mám je jako „stack“.

Stack se třemi okny

Ovládání je velmi snadné. win+2 (přesun na plochu 2), win+šipka nahoru/dolů – přeskakuju mezi navrstvenými okny ff, tb, chrome. Velmi jednoduché.

Pokud jste dočetli až sem, tak jste asi poznali, že i3wm umí:

  • plochy – snadno dostupné, snadno přepínatelné
  • na každé ploše udělat horizontální / vertikální uspořádání nebo jejich kombinaci
  • „stack“ – jak se to řekne česky, prostě okna navrstvená na sebe (asi)
  • tab – tohle příliš nepoužívám, tohle zobrazí okna jako taby tak, jak jsme zvyklí z prohlížečů.

Mimochodem, tohle znamená, že program neumí umět taby a přesto ho tam můžete používat.

Dále i3wm umí – a to je pro mě fakt killer featura – libovolné okno přenést na fullscreen. Mám fokus na nějakém okně, win+shift+f a okno skočí na fullscreen. Pokud dělám něco, na co se musím soustředit nebo něco, co vyžaduje velkou plochu, tak win+shift+f a mám to na celé ploše. Po skončení práce opět jen win+shift+f a okno se umístí zpět na své místo dle původního umístění.

i3wm umí i floating window. Některá oka jsou plovoucí automaticky (třeba toolbary Gimpu), ale libovolné okno můžete označit jako plovoucí stiskem win+shift+space.

Petr Krčmář to ukazoval na kalkulačce, tak jsem taky jednu nainstaloval.

Plovoucí okno

Jinak používám bc -l na řádce.

Jak jste asi pochopili, i3wm se ovládá na klávesnici. Lze jej do jisté míry ovládat i myší, klikat na čísla ploch, přesouvat myš nad okno a tím na něj mít focus. Ale to je asi tak vše. Vytvoření layoutu už se dělá na klávesnici.

Pokud jste tedy zvyklí ovládat počítač pomocí klávesnice a na myš běžně nesaháte, je to další impuls vyzkoušet i3wm.

Jak začít

Já jsem se podíval na video, našel jsem si dokumentaci od Lukáše Zapletala (další zkušenosti lze načerpat z diskuse pod blogem Pavlixe), otevřel jsem si i3 config a četl řádek po řádku.

Opravdu to doporučuju, v konfigu (který není nijak dlouhý) se dozvíte, co i3 umí a jak se ovládá. Já jsem si spoustu klávesových zkratek změnil. Jako mod klávesu používám win. Mimochodem, pomocí win+enter se spouští terminál. Tj asi moje nejpoužívanější zkratka. win+g se mi spustí editor ((g)vim), můžu rychle začít psát poznámky. win+d spustí DMenu (ale lze použít i xlunch který může sloužit i jako aktivní plocha i3wm), kde si lze rychle vybrat, jaký program spustit.

Doporučuju přemapovat zkratku pro zavření programu. Default je tuším win+q, tohle se mačká až příliš snadno. Jsem dokonce schopen omylem stisknout i win+shif+q. (Tj zvyk z FF, kde používám ctrl+shift+r, nebo ctrl+shift+t – takže tříprstové zkratky mám zažité – a stačí místo ctrl stisknout win a už se dějí věci…)

Varování pro uživatele windows: Klávesa win ve Windows taky není jen tak na okrasu, takže pokud si zvyknete na win+něco a budete to mačkat v prostředí Windows, tak se taky občas dějí věci.

Moje konfigurace

Více méně default, asi tady nemá smysl psát všechny kl. zkratky (to si projděte v Lukášově konfigu). Něco bych tady ale zmínit chtěl:

# start a terminal
bindsym $mod+Return exec sakura
bindsym $mod+Shift+Return exec rxvt

# start editor
bindsym $mod+g exec gvim

# screen shot
bindsym Print exec scrot '%Y-%m-%d-%T_$wx$h_scrot.png' -e 'mv $f ~/Pictures/screenshots/'
  • win+enter spustí terminál, win+shift+enter – alternatívní terminál (používám sakura a rxvt)
  • win+g – editor
  • Print – pořídí screenshot (pomocí programu scrot – jo, asi by to chtělo něco živého)

Programy po startu:

# Nastaveni ceskeho layoutu
exec --no-startup-id setxkbmap -variant ,qwerty -layout us,cz -option grp:alt_shift_toggle,grp_led:scroll

# Nastaveni obrazku na pozadi
exec --no-startup-id feh --bg-fill ~/Pictures/lions_pair.jpg

# Nastaveni redshiftu
exec --no-startup-id redshift -l 50:17
  • Nastavení přepínání US/CZ klávesnice
  • Obrázek na pozadí pomocí feh.
  • A redshift – automaticky upravuje teplotu barvy monitoru dle místního času. V noci nechci koukat na jasně modrou plochu – brání to spánku.

Nespouštím automaticky žádné programy na plochách, i když to lze udělat též. Po loginu si to naklikám sám, postupně, jak začínám pracovat.

Takže si někdy udělejte pěkný večer a dejte i3wm šanci. Já už nic jiného na linuxovém desktopu nepoužívám, tohle je pro mě to ono, co jsem hledal. Mimořádně efektivní.