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í.

Příspěvek byl publikován v rubrice Počítače. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

15 komentářů: 300 dnů na i3wm

  1. z0ny napsal:

    Hmm, asi tomu zkusim dat nekdy sanci, zni to zajimave a dokazu si predstavit kde bych to pouzil :)

    • Heron napsal:

      Určitě vyzkoušej.

      • Ondřej Súkup napsal:

        jj , u me to byl predstupen k XMonadu:)

        • Heron napsal:

          Na haskell jsem se díval, zajímavej funkcionální jazyk, ale jak se v tom dá napsat DE mi teda není jasné.

          Ale píšu si do todo.

          • Ondřej Súkup napsal:

            Neni TO „DE“ ale to ani i3wm.

            Narozdil od i3wm je XMonad spise framework k vlastnimu VM (podobne jako awesome), zakladni config je primitivni ale daji se delat neskutecna kouzla

  2. lzap napsal:

    Zdá se že i3 je nesmírně populární, což je super.

    Přešel jsem z dmenu na xlunch protože umožňuje přes tabelátor rychle spustit aplikaci u které si přesně nepamatuju příkaz, což je pro takového „občasné spouštění“ dobré.

    Nabindování na print jsem převzal, na to jsem zapomněl a spouštím ručně. Trochu ale nechápu proč ten move, lze zapsat přímo absolultní cestu:

    bindsym Print exec scrot -bs ‚/tmp/_SCREEN_%Y-%m-%d-%T_$wx$h.png‘
    bindsym $mod+Print exec scrot -b ‚/tmp/_SCREEN_FULL_%Y-%m-%d-%T_$wx$h.png‘

    Taky jsem nedávno přešel na náhodný obrázek na pozadí, taková sranda u tiling manageru nepodstatná ale proč ne:

    feh –bg-fill $(find /usr/share/backgrounds -type f -name \*jpg -o -name \*.png | shuf -n 1)

    Poslední poznámka pro čtenáře tohoto blogu – nic proti jiným terminálům, ale ještě než xterm zavrhnete, přečtěte si tento článek Hidden gems of xterm: https://lukas.zapletalovi.com/2013/07/hidden-gems-of-xterm.html :)

    • Heron napsal:

      Ad ten scrot – popravdě jsem to neřešil. Screenshoty jsem potřeboval jen pro potřeby tohoto článku, mrtvý balíček tu nechci, takže budu hledat dál. Vypadá to, že cesta je ImageMagick import:

      bindsym $mod+Print exec ~/bin/scrshot
      
      cat ~/bin/scrshot
      
      #! /bin/bash
      
      DATE=`date +%F_%T`
      
      import -w root ~/Pictures/screenshots/${DATE}.png
      

      K xtermu, jo, proč ne. Terminálů je milion. Dík za návod.

  3. Max Devaine napsal:

    Moc pěkné, ale asi zůstanu u KDE. Hodně využívám kio slaves, každou chvíli přistupuji nějak na share, buď k uživateli, nebo na různé servery. Je pro mně nesmírně jednoduché v krusaderu použít smb://IP/c$, funguje to okamžitě, rychleji než na win.
    Dalším důvodem je automatické pospouštění a rozmístění oken sw po různých plochách apod. Na yakuake (minimálně 15 terminálů) nedám dopustit a spousta KDE aplikací mi taktéž vyhovuje včetně základních efektů na urychlení práce (průhlednost při tažení, náhled na všechny plochy) a na doimplementování window tab stále čekám (v KDE4 to bylo, v KDE5 to stále chybí).
    Jinak standardně používám 9 ploch a 16GiB ram je pro mně už minimum jen na obyč práci :-/.
    Zdar Max

    • Heron napsal:

      Pokud ti KDE vyhovuje, tak není co řešit.

      Já i mount fs vždy řešil na řádce, takže nějaké kio nebo gvfs jsem nepotřeboval (a v xfce / lxde ani neměl).

      Automatické spouštění programů na různých plochách umí i i3wm. Ostatně i ten tmux :-D.

      Co se týče počtu ploch, tak tady se to neustále mění, jak plochy vznikají a zanikají. Asi maximum bylo 7 ploch skutečně využitích ke konkrétní práci s tím, že na hlavní terminálové ploše bylo 6x terminal (do mřížky) a na dalších 6 asi dalších 12 pomocných oken.

      Asi bych měl po vzoru Petra nahodit další monitor. :-)

      • Max Devaine napsal:

        kio je proti klasickému mountu hodně rychlá věc. Klasický mount dělám jen tam, kde k tomu chci permanentně přistupovat, pokud chci něco jen zkopírovat, nebo se jen na něco podívat, tak kio je nejrychlejší cesta. Používám to hodně, takže pro mně best featurka. A nejen pro použití s cifs, ale s ftp apod.
        V jobu mám dva monitory a už bych si to bez druhého nedokázal představit, je to silně návykové. A kdo si i domu pořídí druhý monitor, tak si rychle zvykne a už nechce jinak.
        Zdar Max

        • Heron napsal:

          Tak zrovna CIFS příliš často nemountuju. Max tak NFS. Soubory si zkopíruju pomocí rsync nebo scp. FTP fuck off, nejsme v pravěku.

          Apropos komu se ještě stává, že místo ssh píše cd? :-D Pro mě je práce na desítkách strojů tak přirozená, že místo ssh píšu cd, když se chci dostat na vzdálený stroj.

          Jo, dva monitory jsou extrémně návykové. Měl jsem to tak dřív a zvykl jsem si na to tak, že jsem nebyl schopen pracovat na single monitoru.

          Potom jsem druhý monitor daroval kámošovi, když mu jeho odešel. Každopádně, dneska jsem (asi po roce co mám nový herní FreeSync monitor), konečně zapojit i původní LP2465. Ještě budu muset dokoupit vesa držák, ale pohoda.

          i3wm automaticky na druhý monitor pustí plochu 2, takže po loginu jsou dvě plochy na dvou monitorech a lze mezitím elegantně přepínat. Na toto si zvyknu teda hodně rychle.

          • Max Devaine napsal:

            „FTP fuck off“

            Řekni to firmám, které si s námi chtějí vyměňovat data (edi zprávy) :-/.
            Němci dokonce cítí, že ftp není bezpečné, ale mají na tom postaveno asi hafec věcí, takže to řeší tak, že klientovi pošlou cisco router, který musí připojit do netu a nejdříve naladí tunel, přes který pak teče ftp.
            Jo, bohužel to tak je :-/.
            A největší fór je, že to mají jako business. Tzn., že jedna firma zajišťuje připojení (tunely) a druhá zajišťuje ftp proxy a servery a to poskytují firmě číslo 3, která si s námi chce data vyměňovat. Fakt magořina na entou.
            Naštěstí takových klientů moc nemáme.
            Jen jedna firma po nás chtěla scp a předání fingerprintu. A to se bavíme o velkým spedičních firmách ve světě. Zrovna nedávno jedné z nich odstavil cryptovir celou pobočku (což fakt nechápu):
            http://container-mag.com/2017/07/03/maersk-update-apmt-maasvlakte-ii-crawls-towards-reopening/
            Zdar Max

            • Heron napsal:

              Řekni to firmám

              Já to firmám říkám poměrně pravidelně. Neustále na předání dat chce někdo FTP, tak se jim automaticky pošlou údaje na SFTP s tím, že se to v mailu explicitně uvede, že FTP nevedeme. Většinou není problém.

              Jo, jsou firmy, které stále jedou přes FTP, ale to je spíš o člověku, který na druhé straně sedí (prostě posledních 25 let používal FTP a vždy to fungovalo). Někdy to jde zlomit přes jeho šéfa, někdy ne.

              pošlou cisco router,

              Ano, takhle to řeší státní správa. Chceš komunikovat? Pošleme ti router. Vzhledem k tomu, že každý úřad používá tytéž sítě (192.168.0.0/16), jeden úřad používá dokonce kompletně celou 10.0.0.0/8), tak si asi umíš představit routovací tabulky na naší straně, když se všemi chceme komunikovat).

              • lzap napsal:

                FTP je stale nejvykonnejsi file transfer na LAN. Pouzivam obcas.

                • Heron napsal:

                  Nejvýkonnější z jakého pohledu?

                  Na gigabitu nemá smysl protokol řešit, ten se dá saturovat čímkoliv (NFS, Samba, sshfs, sftp, https).

                  Co jsem si zatím hrál s 10GbE, tak NFS s přehledem 800MB/s, potom už spíš nestíhal zdrojový komp.

                  Kolega se na 2x10GbE bondu dostal přes 1GB/s.

                  Fakt netuším, proč bych měl používat FTP (krom vyloženě speciálních podnímek nějakých HW destiček apod.)

Komentáře nejsou povoleny.