abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 23:15 | IT novinky
Firma Raptor Computing Systems, která stojí také za pracovní stanicí Talos II, představila levnější desku Blackbird s podporou jednoho 4-/8jádrového CPU POWER9 Sforza a formátem microATX; bližší specifikace jsou ve wiki výrobce.
Fluttershy, yay! | Komentářů: 0
včera 22:11 | Zajímavý projekt

Byla vydána verze 1.0 svobodné federalizované platformy pro sledování a sdílení videí, alternativy YouTube s podporou P2P, PeerTube (Wikipedie). Za vývojem PeerTube stojí nezisková organizace Framasoft snažící se mimo jiné nahradit svými svobodnými Frama službami služby společnosti Google (De-google-ify Internet).

Ladislav Hagara | Komentářů: 0
včera 19:44 | Zajímavý projekt

Společnost System76 prodávající počítače s Pop!_OS nebo Ubuntu plánuje prodej vlastního open source počítače s názvem Thelio. Informací je poskrovnu. Na Twitteru byla představena open source rozšířující deska (daughterboard), která by měla převzít funkce proprietárního softwaru na základní desce (motherboard).

Ladislav Hagara | Komentářů: 2
včera 00:22 | Nová verze

Google Chrome 70 byl prohlášen za stabilní (YouTube). Nejnovější stabilní verze 70.0.3538.67 tohoto webového prohlížeče přináší řadu oprav a vylepšení. Vylepšeny byly také nástroje pro vývojáře (YouTube). Opraveno bylo 23 bezpečnostních chyb.

Ladislav Hagara | Komentářů: 6
16.10. 22:44 | Komunita

Open source nástroj pro monitorování zabezpečení počítačových sítí Bro (Bro Network Security Monitor, Wikipedie) byl přejmenován na Zeek (Zeek Network Security Monitor). Nový název bez negativní konotace by měl být pro uživatele atraktivnější.

Ladislav Hagara | Komentářů: 13
16.10. 22:00 | Nová verze

Po dvou letech od vydání verze 0.4 byla vydána nová major verze 5 linuxové distribuce elementary OS (Wikipedie) vycházející z Ubuntu. Kódové jméno této nejnovější verze je Juno. Přehled novinek i s náhledy v příspěvku na Medium.

Ladislav Hagara | Komentářů: 0
16.10. 18:33 | Komunita

Svobodná decentralizovaná mikroblogovací platforma a sociální síť podobná Twitteru Mastodon (Wikipedie) slaví 2 roky. Krátkou historii a milníky shrnuje příspěvek na blogu.

Ladislav Hagara | Komentářů: 0
16.10. 11:11 | Zajímavý článek

Společnosti Microsoft, Google, Apple i Mozilla včera shodně oznámily, že z jejich webových prohlížečů Internet Explorer, Edge, Chrome, Safari a Firefox počátkem roku 2020 odstraní protokoly TLS 1.0 a TLS 1.1. Michal Špaček v článku Vypněte TLS 1.0 a 1.1 už dnes na svých stránkách informuje, že TLS 1.0 a 1.1 lze vypnout již dnes. Ověřit to lze například pomocí SSL Labs Server Testu.

Ladislav Hagara | Komentářů: 13
16.10. 05:55 | Humor

Banksy před několika dny šokoval umělecký svět svým obrazem, jenž se přímo v aukční síni po svém prodeji za více než 30 milionů korun sám částečně skartoval. Z obrazu Dívka s balónem vznikl obraz Láska v koši. Command Line Magic ukazuje, jak na podobného Banksyho z příkazového řádku.

Ladislav Hagara | Komentářů: 2
15.10. 16:55 | Komunita

Handshake, decentralizovaná certifikační autorita a peer-to-peer DNS aneb DNS v blockchainu, postupně rozděluje mezi svobodné a open source projekty celkově 10,2 milionu dolarů. V srpnu získalo 300 000 dolarů GNOME a 100 000 dolarů GIMP. Dnes oznámila nezisková organizace KDE e.V. zastupující komunitu kolem KDE v právních a finančních záležitostech, že od Handshake získala 300 000 dolarů, z čehož 100 000 dolarů je alokováno pro multiplatformní balík svobodných kancelářských a grafických aplikací Calligra.

Ladislav Hagara | Komentářů: 69
Přispíváte osobně k vývoji svobodného softwaru?
 (41%)
 (42%)
 (23%)
 (23%)
 (11%)
 (36%)
Celkem 231 hlasů
 Komentářů: 12, poslední včera 21:18
Rozcestník

Bližší pohled na i3

25.8. 23:41 | Přečteno: 3985× | Výběrový blog | poslední úprava: 6.10. 19:03

Koncept dlaždicových správců oken není ve FOSS komunitě žádnou novinkou a jméno jednoho z jeho představitelů – i3 – už mnozí z vás jistě slyšeli. Výchozí konfigurace ovšem zrovna neoslní, což může mnohé zájemce odradit. Nejinak tomu bylo i v mém případě, a proto bych v tomto článku rád poskytnul ucelenější a pokud možno objektivní pohled.

Dláždicový správce oken

Pokud jste o dláždicových (angl. tiling) správcích oken přecejen dosud neslyšeli, pak vězte, že se oproti těm rozšířenějším plovoucím (angl. floating, nebo též stacking) liší v jednom klíčovém detailu: neumožňuje, aby se okna překrývala. Místo toho je umisťuje do určitého „dlaždicového“ rozložení a všechna okna – tedy s výjimkou těch, která se nachází na jiných virtuálních plochách – jsou vždy v plném rozsahu viditelná. Taková je alespoň teorie; v praxi existují jisté výjimky, o kterých pohovoříme dále.

Ačkoliv to na první pohled vypadá jako hloupé omezení, má tato filozofie jednu zásadní výhodu: pořádek. Každý z nás už někdy viděl obrazovku počítače, která silně připomínala desku stolu pokrytou papíry. Jedno okno chaoticky překrývá druhé, položky na taskbaru jsou sotva čitelné a o přehlednosti prezentované informace zpravidla nemůže být příliš řeč. U uživatelů, kteří neumí nebo nemohou používat virtuální plochy (ačkoliv typicky je to spíše neznalostí, neboť i v dnes prehistorických verzích MS Windows bylo možné používat vynikající utilitu VirtuaWin), je situace tradičně nejhorší. Ani jejich používání vás však nezachrání, pokud na jednu virtuální plochu potřebujete umístit více oken.

Dalo by se říct, že zatímco plovoucí okna jsou na plochu rozmisťována hloupě a bez rozmyslu, dláždicový správce oken je skládá do sofistikovanějšího, uživatelem zvoleného rozvržení. Každé okno dostane své místo a zběsilému „Alt+Tabování“ by snad měl být jednou pro vždy konec. Tedy alespoň taková je teorie. V praxi to samozřejmě má svá úskalí, o kterých se zmíním později.

No a v neposlední řadě: dláždicoví správci oken typicky slibují lepší ovladatelnost z klávesnice. Dle mého názoru se ovšem nejedná o věc, která by z konceptu samotného přímo vyplývala. Spíše se jedná o doprovodný koncept, který je právě v dlaždicovém správci oken snažší implementovat. A protože právě ovládání z klávesnice pro mě bylo jednou z hlavních motivací k přechodu na i3, lze paradoxně říct, že příliš velkým fanouškem dláždicových správců oken ani nejsem.

Proč právě i3?

Dláždicových správců oken existuje mnoho. Každý z nich nabízí trochu jiný výklad výše popsané filozofie, cílí na jiné uživatele a stojí za ním odlišné architektonické a technické volby. Život mám jen jeden, a proto se mě neptejte, proč jsem nevyzkoušel všechny – ostatně i tento článek píšu proto, abych vám prvotní seznámení co možná nejvíce usnadnil. i3 mě zaujal svou jednoduchostí a mimořádně kvalitní dokumentací. Současně jsem sledoval alespoň vyhlídkovou podporu Waylandu, kterou i3 sice nenabízí a podle mně známých vyjádření od hlavního vývojáře se ani nechystá, ale již nyní existuje Sway, což je Wayland kompozitor, který je s i3 do jisté míry kompatibilní (netestoval jsem, pozn. autora).

Oproti dalším dvěma konkurentům, na které jsem se alespoň zběžně díval, tedy awesome a Xmonad, si na i3 také cením sympatické a jednoduché deklarativní konfigurace. Zatímco v awesome se konfigurace provádí Lua skriptem, v Xmonadu na vás čeká rovnou Haskell. To vstupní bariéru značně zvyšuje nejen kvůli nutnosti učit se zmíněné jazyky, ale také dostupné API. Samotná myšlenka použít existující jazyk místo hledání toho správného konfiguračního souboru se mi samozřejmě líbí – a stejně tak možnosti, které to přináší. Zvýšená časová investice už ovšem nikoliv. S oběma jazyky jsem sice již trochu pracoval, ale k jejich komfortnímu užívání mám opravdu hodně daleko.

I z hlediska podpory Waylandu je na tom i3 o něco lépe. awesome ji nakonec slibuje, ale zatím je k dispozici jen volný nástupce Way Cooler, který momentálně není kompatibilní. Xmonad ji neslibuje a reimplementace Waymonad životem příliš nehýří.

První krůčky

Jak jsem již zmiňoval v perexu, výchozí konfigurace zrovna neoslní. Proto si kromě vysvětlení základních konceptů také krok za krokem ukážeme, jak je možné i3 upravit do použitelnějšího stavu. Vycházet přitom budu zejména ze svého použití – text si neklade za cíl suplovat manuál. Namísto toho vám ukáže, jak i3 používám já.

Následující text můžete, ale nemusíte následovat. Pokud se rozhodnete pro, začněte instalací patřičného balíku. Návod pro svou oblíbenou distribuci si laskavý čtenář dohledá sám. V Debianu jednoduše nainstalujeme balík i3 ze standardních repozitářů. Jedná se o meta balík, který kromě i3-wm nainstaluje ještě několik dalších užitečných (a potřebných) utilit. Pak už nám nic nebrání i3 spustit – typicky z display manageru.

Pohled na obrazovku po prvním spuštění bude poměrně strohý a nepříliš povzbudivý:

i3 se nás ptá, zda chceme vygenerovat konfigurační soubor. Stisknutím klávesy Enter potvrdíme, že ano. Dále obdržíme dotaz na výchozí modifikátor.

Výběr provedeme stiskem patřičné klávesy (doporučuji zůstat u klávesy Alt) a potvrdíme Enterem, čímž dojde k vygenerování konfiguračního souboru.

Gratuluji. Ten nejotřesnější zážitek snad máte za sebou. Než budeme pokračovat v konfiguraci, pojďme se podívat, co i3 může nabídnout už teď.

Jak tedy funguje ten tiling?

Začneme rovnou na příkladech. Stiskem Alt+Enter (pokud jste si zvolili jiný modifikátor než Alt, pak použijte ten; dále už to uvádět nebudu) spustíme emulátor terminálu.

Jak vidíte, rozprostřel se přes celou pracovní plochu. Zajímavé je, co se stane, pokud klávesovou zkratku stisknete znovu a pak ještě znovu.

Máme tedy otevřené tři terminály horizontálně vedle sebe. Co kdybychom ale chtěli otevřít jeden terminál přes polovinu obrazovky a poté dva do kvadrantů nad sebou? Žádný problém! Nejprve terminály zavřeme (nebojte, je možné měnit rozvržení i již otevřených oken – dostaneme se k němu za chvíli). Pokud marně hledáte křížek v pravém horním rohu okna, pak vás zklamu. Později si sice ukážeme, jak lze okna zavírat myší, ale prozatím si musíme vystačit s klávesnicí. Místo Ctrl+D ale zkuste použít Alt+Shift+Q – dělá totéž co nechvalně známé Alt+F4.

Nyní otevřeme první terminál. Opět nám k tomu poslouží klávesová zkratka Alt+Enter. Pokud se velmi pozorně podíváte, spatříte po pravém okraji okna světlemodrou linku. Ta ukazuje, kde se otevře další okno. Otevřeme tedy i druhé okno a přesvědčíme se, že se opravdu otevřelo napravo. Protože třetím oknem chceme vyplnit pravý dolní kvadrant, musíme sáhnout po další klávesové zkratce: Alt+V. Tou i3 sdělíme, že okno chceme otevřít ve vertikálním (odtud právě klávesa V), nikoliv horizontálním (odtud klávesa H) směru. Že jsme se správcem oken zajedno se opět přesvědčíme pohledem na světlemodrou linku. Ta se nyní nachází při spodním okraji pravého okna, jak ukazuje následující screenshot.

Otevřením dalšího okna, tedy v našem případě terminálu – pomocí již známé zkratky Alt+Enter, dostaneme finální rozvržení.

Pokud jsem v úvodu článku proklínal Alt+Tab, možná se ptáte, jak tedy funguje přepínání mezi okny. Funguje směrově. Do jiného okna se přepnete prostě stiskem kurzorové klávesy spolu s modifikátorem Alt. Do okna nalevo se tedy dostanete zkratkou Alt+Left, do okna nahoře zkratkou Alt+Up a podobně (nebo můžete místo kurzorových šipek používat j, k, l a ;).

Slovníček klávesových zkratek

Alt+Enter Spuštění emulátoru terminálu
Alt+Shift+Q Zavření okna
Alt+V, resp. Alt+H Tiling vertikálně, resp. horizontálně
Alt+Up, Alt+Down, Alt+Left, Alt+Right Přejít do okna nahoře, resp. dole, resp. vlevo, resp. vpravo
Alt+l, Alt+k, Alt+j, Alt+; dtto

Ale bez plovoucích oken nebude fungovat program…

O krok napřed! Zcela bez plovoucích oken, zejména kvůli různým popupům a dialogovým oknům, se obejít skutečně nelze. Proto (a ještě z jednoho dalšího důvodu) i3 ve skutečnosti není čistě dlaždicovým správcem oken. Pokud má okno nastaveno správné flagy (hinty), i3 jej jako plovoucí zobrazí automaticky. Můžete ho k tomu přinutit i ručně klávesovou zkratkou Alt+Shift+Space. Nejprve je samozřejmě nutné dát patřičnému oknu focus.

Plovoucí okna se vždy zobrazují nad tiling okny. Pokud jich máte více, vykreslí se malířovým algoritmem ve správném pořadí.

Až vás to přestane bavit, opětovným stiskem klávesové zkratky Alt+Shift+Space se plovoucí okno zařadí zpátky mezi dlaždice.

Slovníček klávesových zkratek

Alt+Shift+Space Přepínání okna mezi plovoucím a dlaždicovým režimem

Virtuální plochy

Ve chvíli, kdy okna nemůžete schovávat kamsi do hloubky, ale všechna jsou pěkně viditelná (s výjimkou plovoucích oken), jsou virtuální plochy naprostou nutností. Ve výchozí konfiguraci jich máme k dispozici rovných 10 a jsou přístupné klávesovými zkratkami Alt+1, Alt+2, …, Alt+0 (číslice samozřejmě nezadáváme na numerické klávesnici). Na spodní liště – jmenuje se i3bar – však vidíte jen ty, které jsou zrovna používané. Plocha, na které se zrovna nacházíte, bude podbarvená modře. Zbylé jsou šedivé.

Schválně si zkuste na první ploše otevřít terminál a přejít na druhou. V levém dolním rohu byste měli vidět přesně to, co zachycuje screenshot výše. Vraťte se na první plochu, okno zavřete a vraťte se na druhou plochu. První plocha zmizí.

Pro přesunutí okna na jinou plochu jednoduše stiskneme stejnou klávesovou zkratku, jako bychom na danou plochu chtěli přejít, pouze přidáme modifikátor Shift. Vyzkoušejte si to.

Uživatelé, kteří i3 používají s více monitory, si jistě brzy všimnou jedné výrazné odlišnosti oproti běžným správcům oken: každý monitor má vlastní sadu virtuálních ploch. To znamená, že v rámci jednoho monitoru můžete plochy měnit zcela nezávisle na druhém monitoru – tam bude aktivní stále tatáž plocha, dokud explicitně neurčíte jinak. Není potřeba oknům nastavovat příznak „Always on visible workspace“, abyste je viděli po celou dobu.

Slovníček klávesových zkratek

Alt+<num> Přechod na plochu <num>
Alt+Shift+<num> Přesunutí okna na plochu <num>

Měníme rozvržení oken

Základní použití už jsme si osahali a můžeme tedy přistoupit k pokročilejšímu použití. Zatímco v příkladu výše jsme okna jednoduše zavřeli a poté otevřeli znovu v kýženém rozvržení, pro běžné použití potřebujeme něco praktičtějšího. Tak jako jsme pro přesunutí okna na určitou plochu do klávesové zkratky přidali modifikátor Shift, tak jej přidáme pro přesunutí okna na určitou pozici. A klávesové zkratky pro přechod mezi okny už přece znáte!

Zkusíme si zase otevřít tři okna do sloupců vedle sebe jako v příkladu výše.

Tento layout opět chceme upravit tak, že jeden terminál bude zabírat polovinu obrazovky a další dva se budou nacházet v kvadrantech nad sebou. Nejprve tedy přejdeme do prostředního okna (Alt+Left) a stiskneme Alt+V. Poté přejdeme do pravého okna (Alt+Right) a stiskem Alt+Shift+Left jej „zastrčíme“ pod prostřední okno. Protože se přesunutím okna uvolnil prostor napravo, obě okna tento prostor zaplní do šířky. A výsledkem bude stejné rozvržení jako jsme vytvořili minule.

Kdybychom chtěli přidat okno ještě do levého dolního kvadrantu, jednoduše přejdeme do prvního okna, opět stiskneme Alt+V a poté okno otevřeme. Umístí se přesně tam, kde ho chceme mít.

Velikost kontajnerů lze samozřejmě měnit. Stačí stisknout Alt+R (od slova resize), kurzorovými šipkami (nebo opět klávesami j, k, l a ;) provést změnu a ukončit stisknutím klávesy Enter či Escape. Můžete si všimnout, že po stisknutí Alt+R se dole objevil červený nápis:

To jsme totiž přešli do jiného režimu (módu). Neznamená to v podstatě nic jiného, než že platí jiné klávesové zkratky (než v normálním režimu, který je výchozí). Právě proto bylo možné velikost kontajnerů měnit jen pomocí šipek.

Slovníček klávesových zkratek

Alt+Shift+<Left, Right, Up, Down> Přesunutí okna doleva, doprava, nahoru či dolů
Alt+R Přepnutí do režimu resize
Escape, Enter Odchod z režimu resize (v jiných režimech to může být jinak)
kurzorové klávesy nebo jkl; Změna velikosti kontajneru v režimu resize

Taby a stacky

Když jsem říkal, že i3 není striktně dlaždicový window manager, měl jsem kromě podpory plovoucích oken na mysli ještě jeden důvod. Současně jsem trochu lhal, když jsem říkal, že okna není kam schovávat. Existují totiž rovnou dva způsoby, jak do jisté míry emulovat minimalizaci oken.

Stiskem Alt+W všechny okna v kontajneru přesunete do tabů. Do stacku je lze uspořádat stiskem Alt+S, ale protože tuto možnost narozdíl od první zmíněné vůbec nepoužívám, nebudu o ní příliš hovořit. V zásadě se liší jen tím, jak zobrazí neaktivní okna. V prvním případě zobrazí prostě lištu ne nepodobnou liště tabů v prohlížeči:

Ve druhém případě okna „štosuje“ nad sebe tak, že z neaktivních oken je vidět pouze titulek:

Mezi okny je pak možné přecházet opět klávesovými zkratkami Alt+šipka. U tabů tedy přecházíte vlevo/vpravo, u stacku nahoru dolů. Pro přechod zpět do dlaždicového uspořádání jednoduše stisknete Alt+E. i3 si pamatuje, jak byla okna uspořádána a vrátí je do stejného rozvržení. A odtud pramení ohromná síla této zdánlivě ideologicky rozporuplné vychytávky.

Někdy zkrátka potřebujete okno dočasně zvětšit (nebo dočasně otevřít nové), ale nechce se vám přecházet na jinou plochu. Na uvedené klávesové zkratky lze efektivně pohlížet jako na příkazy, které dočasně skryjí všechna ostatní okna. Další možností je pak ještě přepnout okno do fullscreenu pomocí Alt+F (opětovným stiskem pak fullscreen opustíte), ale pak neuvidíte ani titulek okna a i3bar.

Nemyslím si, že by bylo moudré to s používáním tabů přehánět, a proto jsem je záměrně zmínil až později. Používání tabů jako náhrady taskbaru vám klady dlaždicového správce oken opravdu nepřinese. Naopak v plné síle pocítíte jeho nevýhody.

Slovníček klávesových zkratek

Alt+W Přepnutí kontajneru na taby
Alt+S Přepnutí kontajneru na stack
Alt+E Přepnutí kontajneru na dlaždice (tiling)
Alt+F Přepnutí do fullscreenu

Jdeme konfigurovat!

Při konfiguraci i3 nesmírně oceníte klávesovou zkratku Alt+Shift+R. Ta provede teplý restart, při kterém se znovu načte konfigurace, ale zachovají se otevřená okna i jejich rozložení. Operace je to navíc prakticky instantní.

Vygenerovaný konfigurační soubor nalezneme v souboru ~/.config/i3/config. Jak jsem již deklaroval na začátku, tento článek si neklade za cíl suplovat dokumentaci. Zaměřím se proto na změny, které jsem prováděl já ve své vlastní instalaci a které často zahrnují nástroje třetích stran.

Virtuální plochy: Alt+7?! To jako vážně?

Deset virtuálních ploch, které nabízí výchozí konfigurace, není zrovna moc. Tím spíše ne, když pohodlně dostupných je pro mě pouze zhruba prvních pět. Koordinovat při přechodu na plochu (tedy velmi časté operaci) dvě ruce opravdu nemíním, proto jsem raději šel cestou méně číslic a více modifikátorů. S tím se pojí i jistá koncepční změna.

Před přechodem na i3 jsem byl léta zvyklý organizovat si plochy do gridu, který jsem si v grafické podobě nechával zobrazovat na spodní liště. Jednotlivé řádky jsem měl rezervované pro určité skupiny úloh, sloupce pak pro konkrétní úlohy. Základní kostru tohoto dělení dodržuji poměrně striktně, dle situace pak dělám drobné odchylky – a právě ty mě nesmírně zdržují. Otázkou bylo, jak tento způsob práce implementovat v i3.

No, nebudu napínat. Vzhledem k tomu, že dávat plochám lidsky srozumitelné jméno působilo dost nepřehledně a rušivě (zvlášť při větším množství ploch), rozhodl jsem se pro netradiční řešení. Mé názvy ploch v podstatě odpovídají bodům v Kartézské soustavě souřadnic. Řádky značím velkými písmeny anglické abecedy, sloupce pak čísly. Plocha B3 tedy označuje druhý řádek, třetí sloupec.

Pro každý řádek používám jinou kombinaci modifikátorů. Sloupců pak mám nejvýše pět a používám pro ně čísla, na která takto již vcelku pohodlně dosáhnu. Tabulka zachycuje, jaké modifikátory používám pro který řádek.

Řádek Modifikátory
A Alt
B Super (Win)
C Caps Lock (přebindovaný, viz dále)
D Ctrl+Alt

První řádek používám pro web, multimédia, poznámky a IM. Ve druhém programuji, třetí je „servisní“ a často mi na něm poběží terminál, kde jsem přihlášený pod rootem, popřípadě na něj odkládám, co se jinam nevešlo. Poslední, čtvrtý řádek je ve skutečnosti umístěn na druhém monitoru a používám ho dle potřeby.

Nakonfigurovat podobný setup je ovšem trochu záludné. Nejprve je potřeba nastavit, na kterém monitoru se dané plochy mají vytvářet. i3 totiž plochy vytváří dynamicky a pokud si nabindujete klávesovou zkratku pro skok na nějakou plochu, prostě se při prvním použití taková plocha vytvoří. Současně ale po spuštění i3 musí každému monitoru nějakou plochu přiřadit. Pak to dopadne tak, že první plocha skončí na levém a druhá na pravém monitoru. Další plochy, tak jak jsou používány, budou přiřazeny monitoru, který má zrovna focus. Pokud chcete nějakou plochu založit na jiném monitoru, musíte se nejprve přepnout na jednu z jeho ploch.

Kouzelný trik tedy spočívá v deklaraci korektních monitorů pro všechny plochy. Např. tedy:

workspace "1: A1" output HDMI-1

Můžete si všimnout, že jménu plochy je předřazen ještě číselný index. Přesný důvod už si nepamatuji, nicméně mělo to co do činění s řazením. Plochy chci totiž mít stále seřazené konzistentně bez ohledu na to, v jakém pořadí byly (za běhu) vytvářeny. Protože jsem však čísla nechtěl zobrazovat (mají pro mě nulovou informační hodnotu), musel jsem ještě do sekce bar (kde sídlí konfigurace i3baru) přidat kouzelné:

strip_workspace_numbers yes

V neposlední řadě je potřeba nastavit správné rozložení monitorů. Například tedy:

exec_always --no-startup-id "xrandr --output HDMI-1 --primary"
exec_always --no-startup-id "xrandr --output VGA-1 --right-of HDMI-1"

Alternativně si rozložení monitorů nakonfigurujete programem ARandR a vygenerujete si skript, který zde obdobně spustíte. A když už je řeč o více monitorech, asi byste nebyli rádi, kdyby se vám tray zobrazoval na jiném monitoru než chcete. Možnost zobrazovat tray na více monitorech současně bohužel chybí. Proto si nastavíme alespoň:

tray_output HDMI-1

Nyní už stačí nastavit jednotlivé klávesové zkratky. Pro přechod na plochu to tedy bude:

bindsym Mod1+1 workspace number "1: A1"

Pro přesun na plochu pak:

bindsym Mod1+Shift+1 move container to workspace number "1: A1"

Přebindování Caps Locku, aby se choval jako modifikátor (Hyper_L) lze provést vložením následujícího obsahu do souboru ~/.Xmodmap:

! remap Caps Lock to mod3
clear Lock
keycode 66 = Hyper_L
remove mod4 = Hyper_L
add mod3 = Hyper_L

O samotnou aplikaci změn se starám až v konfiguraci pro i3, konkrétně pomocí:

exec_always --no-startup-id xmodmap ~/.Xmodmap

V konfiguračním souboru i3 tomuto modifikátoru odpovídá Mod3. Nejsem si ovšem jistý, zda se to na jiných systémech nemůže lišit (stejně jako keycode klávesy Caps Lock).

Nastavení pozadí

i3 se o pozadí (což je ve skutečnosti kořenové okno) nijak nestará. Pakliže jste na screenshotech výše viděli jako pozadí artwork Debianu, pak vězte, že ho tam vykreslil můj display manager LightDM. Nastavit si vlastní pozadí je ale jednoduché:

exec_always --no-startup-id "xsetroot -solid '#000000'"
exec_always --no-startup-id "feh --bg-scale background.png"

Pokud si správně vzpomínám, při pouhém nastavení pozadí programem feh jsem se setkával s grafickým glitchem. Proto je před něj předřazeno ještě nastavení celého pozadí na černou barvu.

Spouštění programů

Ve výchozí konfiguraci i3 můžete stiskem Alt+D spustit dmenu. To vám bude našeptávat jména programů, které lze spustit.

Jak vidíte, našeptává toho trochu moc. Řešení je však popsané už přímo v komentáři vygenerovaného konfiguračního souboru. Jednoduše můžeme přejít na i3-dmenu-desktop, který programy našeptává již jen podle nalezených záznamů v *.desktop souborech.

Rázem to vypadá zajímavěji. Měl jsem však přecejen obavu, aby mi někdy nechybělo klasické rozklikávací menu. Proto jsem doplnil ještě zkratku pro xfce4-appfinder. Oknu jsem zároveň nastavil floating a velikost:

bindsym $mod+Shift+d exec xfce4-appfinder
for_window [title="Application Finder"] floating enable
for_window [title="Application Finder"] resize set 600 px 600 px

Za zhruba rok jsem jej nepoužil ani jednou. Je hezké mít náhražku pro případ, že bych si nemohl vzpomenout jméno nějakého programu, ale v praxi to zřejmě nenastává tak často, jak jsem se obával.

Pro nejčastěji spouštěné programy jsem si nabindoval samostatné klávesové zkratky. V mém případě tedy Ctrl+Alt+T otevře terminál, Ctrl+Alt+F správce souborů, Ctrl+Alt+E nové okno editoru apod.

Ovládání myší

Jakkoliv preferuji ovládání z klávesnice, občas prostě chci pracovat i s myší. Abych mohl okna zavírat kliknutím prostředním tlačítkem (kolečkem) myši na titulek, nastavil jsem:

bindsym --release button2 kill

Plochy je možné přepínat v i3baru buď přímo kliknutím na patřičnou plochu, nebo kolečkem. Dále jsem vypnul tu výchozí šílenou volbu, kdy najetím kurzoru na okno mu dáte focus:

focus_follows_mouse no

Správa sezení

Zatímco běžná desktopová prostředí nabízí menu, ze kterého je možné provést zamčení obrazovky, restartování systému a další, v i3 něco takového ve výchozí konfiguraci zcela chybí. Hledal jsem, co s tím, protože vytvářet klávesovou zkratku pro každou z operací se mi nechtělo – zejména kvůli riziku nechtěného stisknutí. Podařilo se mi však nalézt velmi elegantní řešení využívající výše zmíněné módy. Osobně jsem to trochu upravil:

# system management -- quitting i3 & alike
set $mode_system System (l) lock, (Shift+e) logout, (s) suspend, (Shift+r) reboot, (Shift+s) shutdown

mode "$mode_system" {
    bindsym l exec --no-startup-id i3exit lock, mode "default"
    bindsym Shift+e exec --no-startup-id i3exit logout, mode "default"
    bindsym s exec --no-startup-id i3exit suspend, mode "default"
    bindsym Shift+r exec --no-startup-id i3exit reboot, mode "default"
    bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default"
    
    # back to normal: Enter or Escape
    bindsym Return mode "default"
    bindsym Escape mode "default"
}

bindsym Mod1+Escape mode "$mode_system"

Po stisknutí Alt+Escape se pak v i3baru zobrazí pěkné menu:

Stejně tak jsem upravil volání programu i3lock v uvedeném skriptu, a to následovně:

i3lock -c '110000'

Přidaný argument nastavuje barvu, kterou bude mít zamčená obrazovka. Výchozí bílá barva totiž působila jako pěst na oko. Co dále možná oceníte – v závislosti na prostředí, kde se s počítačem nacházíte – je automatické uzamčení obrazovky po nějaké době neaktivity:

exec_always --no-startup-id xautolock -time 10 -locker "i3exit lock"

Status bar

S i3barem, který ve výchozí konfiguraci sídlí při dolním okraji obrazovky, jsme se již seznámili. Víme, že po levé straně se zobrazují aktivní plochy. Příliš velkou pozornost jsme však zatím nevěnovali pravé straně, kde se zobrazuje výstup jiného programu: i3status.

Osobně jsem toužil po více konfigurovatelném výstupu než nabízí i3status, a proto jsem sáhl po jiném programu. Je jím i3blocks a nachází se rovněž v repozitářích Debianu. Pro úplnost dodávám, že za ním stojí jiný vývojář než za i3.

Po nainstalování i3blocks prostě i3 sdělíme, že pro zobrazování statusu chceme použít právě tento program. V konfiguraci v sekci bar tedy řekneme:

status_command i3blocks -c ~/.config/i3blocks/i3blocks.conf

(Pozn.: Explicitně uvádět cestu není nutné. i3blocks ji sám bude hledat např. v ~/.config/i3blocks/config)

V konfiguračním souboru i3blocks je poté možné jednoduše nastavovat, co se má zobrazovat. Můžete se spokojit s výchozími bloky, nebo rovnou přidat úplně vlastní. Jak to u mě vypadá ve výsledku se můžete podívat na screenshotu (o některých věcech se ještě blíže rozepíšu dále).

Přepínání klávesnic

Než se mi podařilo nastavit přepínání klávesnicových layoutů dle mých představ, chvíli jsem se navztekal. Potřeboval jsem totiž nejen zachovat přebindovaný Caps Lock, ale také klávesnici přepínat pro jednotlivá okna nezávisle. Aktuální layout jsem chtěl zobrazovat v i3baru.

Nejprve je tedy potřeba nainstalovat daemon kbdd (nachází se v repozitářích Debianu). Právě ten se postará o to, aby změna klávesnicového layoutu platila jen pro aktuální okno. Následně už stačí zavolat setxkbmap, a poté ještě zavolat xmodmap kvůli přebindování Caps Locku. Celé to vypadá jako:

exec_always --no-startup-id kbdd
exec_always --no-startup-id setxkbmap -layout us,cz -option grp:shifts_toggle; xmodmap ~/.Xmodmap

K přepínání rozvržení klávesnice jsem byl dlouho zvyklý používat Shift+Caps Lock. S přebindovaným Caps Lockem to však již bohužel není možné a současné stisknutí obou Shiftů bylo nejrozumnější, co jsem našel. Zvolit si vlastní klávesovou zkratku bohužel také není možné – a pokud bych si je nabindoval v i3 a pokaždé volal setxkbmap s jedním layoutem, přestalo by zase fungovat přepínání pro jednotlivá okna.

Pro zobrazování aktuálního rozvržení klávesnice jsem pak použil skript kbdd_layout, který stačí volat z konfigurace i3blocks (viz odkaz).

Nezbytná infrastruktura

V první řadě jsem chtěl klikátko na nastavení sítě:

exec --no-startup-id nm-applet

Něco na konfiguraci zvukového mixéru se taktéž může hodit:

exec "pasystray"

Zde se ovšem hodí zmínit, že hlasitost zobrazuji již ve status baru – a upravovat úroveň hlasitosti je tam možné kolečkem myši!

Užitečný je rovněž správce clipboardu. Použil jsem ten z Xfce:

exec "xfce4-clipman"

A z Xfce jsem si vypůjčil i kalendář Orage. Chyběla mi možnost kliknout na datum a podívat se, jaký den v týdnu připadá na nějaký datum. Dělám to tak zřídka, že klávesovou zkratku se mi alokovat nechtělo. Samotné spuštění je ekvivalentně triviální:

exec --no-startup-id "orage"

Aby se však kalendář nezobrazoval po spuštění, je ještě nutné se ujistit, že je v nastavení volba Edit → Preferences → Calendar Window → Calendar Start nastavena na Hide. A konečně, samotné zobrazování okna jsem zajistil patřičnou konfigurací v i3blocks:

[time]
command=if [ $BLOCK_BUTTON = 1 ]; then orage -t; fi; date '+%Y-%m-%d %H:%M:%S';
interval=1
color=#ff9900

Průhledný terminál

Pokud si chceme jinak poměrně nudný vzhled přecejen trochu oživit, můžeme si třeba u terminálu pohrát s průhledností. i3 však průhlednost neřeší. Je proto potřeba nejprve doinstalovat nějaký kompozitor, například compton. Pak stačí jej zapnout:

exec_always --no-startup-id compton

Samotnou průhlednost už si nastavíte přímo v emulátoru terminálu – mnou používaný xfce4-terminal to umí. Jak vypadá výsledek si můžete prohlédnout na screenshotu.

Unixová filozofie

i3, stejně jako související nástroje, následují Unixovou filozofii. Celý desktop pak sestává ze správné konfigurace vysoce specializovaných a často až triviálních programů, které je možné dle potřeby nahradit, nebo si dokonce napsat vlastní. Ostatně, i3 je přinejmenším používáním dmenu do jisté míry spjat s komunitou okolo Suckless.

Abych uvedl několik příkladů, tak i3bar je prostě program, který můžete a nemusíte používat. Populární alternativou k němu je Polybar. Pokud už i3bar používáte, můžete mu posílat libovolný výstup – jako JSON. To je tedy i hlavní náplní zmiňovaného programu i3blocks. Jaká data i3baru posílá si můžete ověřit prostě jeho spuštěním z terminálu.

dmenu je program, který zobrazí minimalistické vyhledávací rozhraní. Data, ve kterých bude vyhledávat, obdrží na standardním vstupu. Uživatelem vybranou hodnotu pak pošle na standardní výstup. Můžete si to vyzkoušet třeba takto:

echo -e “foo\nbar\nbaz” | dmenu

dmenu_run je pak program, který celý sestává z jediného příkazu:

dmenu_path | dmenu "$@" | ${SHELL:-"/bin/sh"} &

dmenu_path je rovněž krátký program, který vylistuje všechny programy, které se nachází v cestě ($PATH), a abecedně je seřadí.

Libovolnou část tohoto řetězce lze přetrhnout a chování změnit. Přesně tak to ostatně udělal Michael Stapelberg, autor i3, který v Perlu napsal i3-dmenu-desktop. Ten volá dmenu s jinými vstupy – jmény programů přečtenými z *.desktop souborů.

Pro komunikaci se samotným i3 je možné použít utilitu i3-msg. Kupříkladu kompletní strom všech oken lze získat voláním:

i3-msg -t get_tree | jq .

Závěr

V minulosti jsem používal Xfce, ve kterém jsem pro pohyb mezi virtuálními plochami používal stejné klávesové zkratky jako nyní v i3 (pouze jich bylo méně). Občas jsem se setkával s drobnými bugy, kdy se např. na panelu začaly zobrazovat okna z obou monitorů (ačkoliv to bylo explicitně nastaveno pro jediný), ale to nebyl ani zdaleka ten hlavní problém. Stále více mi totiž ke štěstí chyběly právě klávesové zkratky pro pohodlnou správu oken – tedy něco lepšího než Alt+Tab, nebo Alt+F7 a následné posouvání okna kurzorovými klávesami. Přemýšlel jsem, jestli se mám pustit do programování skriptu, který by v Xfce emuloval tiling a pohyb mezi okny ve stylu i3, nebo jednoduše rovnou přejít na i3. Rozhodl jsem se, jak vidíte, pro druhou variantu – s vědomím, že tím něco získám, ale něco ztratím.

Ztratil jsem možnost snadno přesouvat taby mezi jednotlivými instancemi webového prohlížeče. Tam, kde jsem dříve chytl tab a přetáhl ho z prohlížeče na jedné ploše do prohlížeče na druhé ploše, nyní musím nejprve přesunout tab do nového okna, pak klávesovou zkratkou celé okno přesunout na cílovou plochu a tam teprve mohu tab přetáhnout do cílového okna. O přesouvání celých oken mezi plochami to platí taktéž.

S tilingem jsou občas problémy. Ve VirtualBoxu musím vypnout zobrazování minibaru, jinak se po přepnutí do fullscreenu okno s výstupem VM ztratí neznámo kam a bude se zobrazovat pouze minibar (který nereaguje). Možná by se to vyřešilo nastavením okna jako plovoucího, ale vzhledem k tomu, že mi minibar stejně vždycky pije krev, vyřešil jsem to prostě jeho vypnutím. Spíše tuto epizodu uvádím jako příklad toho, že s konceptem natolik odlišným od zbytku světa prostě občas narazíte.

Těchto problémů naštěstí nebývá moc. Co se mi stává častěji, když jsem mluvil o tom, co jsem ztratil, je, že prostě ztratím přehled. U ploch, které používám stále na stejný účel, se mi to nestává a práce je pak nesmírně efektivní, protože se na cílovou lokaci dostanu jedinou klávesovou zkratkou. Ne vždy a všude si ale můžu dovolit tento komfort. Třeba mám nějakou plochu již obsazenou a musím prostě použít jinou, nebo pracuji na něčem, co nedělám tak často, abych na to měl vyhrazenou speciální plochu. A konečně, někdy je na vině slabá disciplína, kdy okno vědomě umístím na „špatnou“ plochu prostě proto, že byla zrovna po ruce. Ve chvíli, kdy píši tento článek, mám z 20 možných ploch obsazeno celkem 12. Na některých jsou otevřená okna, které už potřebovat nebudu, jen jsem je tam prostě zapomněl. Občas se stane, že úplně zapomenu na okno, které jsem měl někde otevřené, a otevřu další. Tento chaos mi přináší vnitřní napětí, při kterém se špatně pracuje. Získat přehled je však v i3 složitější než jinde. Zvažoval jsem napsání programu, který by zobrazil přehled všech ploch a toho, co na nich je – možná včetně možnosti plochy přejmenovávat. Moje notace sice v principu není špatná, ale nese jen informaci o tom, jak se na plochu dostat, nikoliv, co na ní je. Možná je ale občas prostě nejlepší plochy jednu po druhé projít, připomenout si, co na nich je, a případně je pročistit. Také by nemuselo být špatné něco na způsob KDE aktivit, kde bych pro každou aktivitu získal nový set ploch s tím, že určitá okna bych mohl zpřístupnit ve více aktivitách. Neumím ale posoudit, zda by to ve výsledku situaci ještě nezhoršilo.

A konečně, mám jisté pochybnosti o tom, že s opravdu velkým monitorem by i3 bylo vůbec použitelné. Okna otevřená přes tak velkou plochu budou vypadat šíleně a z tilingu se stane z nouze ctnost. A nebo se pletu a je to přesně naopak, nevím.

Z pozitiv bych kromě ovládání z klávesnice zmínil jednoduchost, stabilitu a konfigurovatelnost. Za zhruba roční používání jsem nezaznamenal jediný pád. Konfigurace je srozumitelná a snadno přenositelná. Ohromně se mi líbí třeba možnost do status baru posílat libovolné zprávy prostým napsáním skriptu, který je zapisuje na stdout, a jeho začleněním do konfigurace i3blocks – což je i včetně následného restartu i3 triviální záležitostí. Napsal jsem si třeba skript, který mě upozorňuje na nepřečtené zprávy v Messengeru.

Rozhodnutí, zda se vám vyplatí i3 používat, musíte udělat každý sám za sebe. Osobně jsem s ním momentálně o něco spokojenější než s Xfce, ale zda i produktivnější, to si nejsem tak jistý. Něco dělám efektivněji, něco možná méně, a ve výsledku to proto bude spíše stejné.

Zdroje

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

Dreit avatar 26.8. 01:52 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Bližší pohled na i3

Dovolím si doplnit co by se mohlo ještě hodit:

workspace_auto_back_and_forth yes - Jsem na ploše [1], zkratkou skočím na plochu [2], opětovným stisknutím zkratky se vrátím na předchozí plochu, tedy plochu [1].

force_display_urgency_hint 500 ms - okno vyžaduje pozornost, ale je na jiné ploše. Po přepnutí na plochu (mimochodem barevně zvýrazněná v seznamu ploch) si bude okno 500ms držet urgency hint (zvýrazněný rámeček), místo aby okamžitě po přepnutí na plochu zmizel.

A abych ušetřil dva pixely na šířku, tak používám ještě hide_edge_borders both :-D

Nope
26.8. 02:01 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Díky. Ten skok na předchozí plochu se může hodit.
Heron avatar 26.8. 09:09 Heron | skóre: 51 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Obliba i3, jak je vidět, stále roste. :-)

Nevadí ti tolik závislostí na xfce? V podstatě máš stále xfce appky, akorát jiný DE. Pro mě byl jednou z motivací zbavit se velkých molochů. Sakura (nepodařilo se mi spolehlivně nastavit xterm) jako terminál, dmenu nevadí (ostatně program se dá vyhledat i na terminálu) apod.

Indikace nastavené klávesnice mám přes scroll lock ledku grp_led:scroll (přepínám jen mezi dvěma).

Ještě by se mohl někomu hodit skript na screenshot
#! /bin/bash
DATE=`date +%F_%T`
import -w root ~/Pictures/screenshots/${DATE}.png
a bind na klávesu:
bindsym Print exec ~/bin/scrshot
potom, pokud pracujete do noci, tak nastavení teploty barev monitorů:
exec --no-startup-id redshift -l 50:17
26.8. 17:52 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Nevadí ti tolik závislostí na xfce? V podstatě máš stále xfce appky, akorát jiný DE. Pro mě byl jednou z motivací zbavit se velkých molochů.
Nevadí. Pokud bych se někdy porozhlížel po náhradě, pak spíše kvůli funkčnosti nebo konfigurovatelnosti. Xfce ostatně ani nepovažuji za velký moloch (ve srovnání s jinými DE; oproti samotnému i3 to moloch opravdu je, ale to není relevantní srovnání).

Ono těch závislostí ostatně není tolik. Používám Thunar, xfce4-terminal a Orage. V článku zmíněný xfce4-appfinder sice mám pro strýčka příhodu nabindovaný, ale reálně jej nepoužívám.
Indikace nastavené klávesnice mám přes scroll lock ledku grp_led:scroll (přepínám jen mezi dvěma).
To je pěkný trik. Mně tato LED bohužel chybí (a současně je ta klávesa trochu z ruky).
Ještě by se mohl někomu hodit skript na screenshot
Na to používám scrot. Ještě si s tím budu muset trochu pohrát, abych mohl jednoduše udělat screenshot všeho, jednoho okna, pouze výběru a případně ještě jen jedné plochy. Zatím jsem to řešil ručním voláním s patřičnými argumenty (kromě screenshotu všeho, na což mám také obdobný binding).

Pro zajímavost zmíním, že první dva screenshoty do článku jsem musel pořídit z tty terminálu. Začínal jsem na jiném počítači s novou instalací a konfiguraci jsem tedy záměrně neměl (jinak by se zachycený dialog ani nezobrazil). Kouzelný trik tedy spočívá v příkazu:
chvt 7; DISPLAY=:0.0 scrot; chvt 2
(za předpokladu, že X běží na tty7 a pracujeme z tty2)
potom, pokud pracujete do noci, tak nastavení teploty barev monitorů:
To je přece nezbytnost i přes den! :-)
28.8. 22:10 debian+
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Jak nastavit tu "teplotu". Ak spusam prikaz, dopadne takto:
$ exec --no-startup-id redshift -l 50:17
bash: exec: --: neplatná voľba
exec: použitie exec [-cl] [-a názov] [príkaz [argumenty ...]] [presmerovanie ...]
Nikdy som tak nenastavoval teplotu.
28.8. 22:15 debian+
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Skusil som aj redshift-gtk. Ale nevie pripojit na geoclue2 aj ked doinstaloval balicek.
28.8. 22:18 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Spouštíš v Bashi příkaz pro i3wm. Pokud to chceš spustit ručně, pak to bude prostě jen: redshift -l 50:17. A tou teplotou se myslí pocitová teplota obrazovky pro danou geografickou polohu.
-l LAT:LON	Your current location
Heron avatar 29.8. 07:20 Heron | skóre: 51 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Ten uvedený řádek je z konfigurace i3, nikoliv příkaz do shellu.

Pokud chcete nastavit konkrétní barevnou teplotu, můžete použít parametr -O
redshift -O 3700
Ten parametr -l tam mám právě z toho důvodu, aby se to nepokoušelo zjišťovat geografickou polohu z jiných zdrojů, ale natvrdo použilo polohu ČR (přibližně, většinou to mívám nastavené více na východ, ať je přechod na noční režim dřív).
26.8. 11:13 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Bližší pohled na i3

V tomto vyčerpávajícím zápisku autor zatajil, že i3 organizuje okna do stromů. Vrcholem stromu je plocha, ta obsahuje kontejnery, kontejnery mohou obsahovat další kontejnery a jako uzel teprve okno, které jediné je vidět. Z (některých) kontejnerů je vidět onen postranní pruh, který naznačuje, kde se otevře další okno. Klávesové zkratky po pohyb mezi okny a pro přesun oken prochází právě onen strom. To občas vede k neintuitivním výsledkům, či krkolomným postupům.

Například na počátku zápisku zmiňované otevírání třetího okna: První přes celou plochu, druhé napravo do půlky kontejneru, třetí opět napravo do třetiny téhož kontejneru.

+-+-+-+
|1|2|3‖
+-+-+-+

Chci-li ale třetí okno dospod, autor doporučuje na druhém okně změnit směr vytváření oken na vertikální a výsledkem je třetí okno pod druhým, ale již nikoliv pod prvním. Důvod je ten, že ona klávesová zkratka ve skutečnosti vytvoří vertikální kontejner na místě druhého okna a druhé okno přesune do něj:

+-+-+
|1|2‖
+-+-+
  ↓
+---+---+
|   |+-+‖
| 1 ||2|‖
|   |+=+‖
+---+---+
    ↓
+---+---+
|   |+-+‖
|   ||2|‖
| 1 |+-+‖
|   ||3|‖
|   |+=+‖
+---+---+

Kdybychom ale chtěli třetí okno pod první i pod druhé, tak je třeba se nejprve přepnout z druhého okna na jeho rodičovský kontejner (který zahrnuje obě dvě okna), což se dělá zkratkou modifikátor + A, i3 zvýrazní obě okna, pak změnit směr vytváření oken na vertikální, což ve skutečnosti vytvoří vertikální kontejner na místě původního horizontálního a původní horizontální kontejner s oběma okny přesune do nového vertikálního. Nové okno se tudíž umístí do vertikálního kontejneru pod horizontální kontejner s původními okny:

+-+-+
|1|2‖
+-+-+
  ↓
+=+=+
‖1‖2‖
+=+=+
  ↓
+-----+
|+-+-+|
||1|2‖|
|+-+-+|
+=====+
   ↓
+-----+
|+-+-+|
||1|2‖|
|+-+-+|
+-----+
|     |
|  3  |
|     |
+=====+

Z uživatelského hlediska je to náročné ze dvou důvodů: Dost úkonů na vytvoření jednoho okna a i3 tak nějak tyto kroky nevizualizuje (na rozdíl od toho, jak jsem to vykreslil zde). Takže během úkonu si musí člověk v hlavě držet kontext a před úkonem si „spočítat“, jak vypadá strom, jinak výsledkem bude něco jiného, než chtěl. A to se stává bohužel dost často. Typického uživatele i3 poznáte tak, že když po něm něco chcete ukázat, což by mělo obnášet spuštění nového terminálu, tak takový uživatel nejprve několik sekund přemýšlí (aby zjistil, odkud bude nejlepší vytvořit terminálové okno), pak spustí terminál (který se zobrazí na naprosto nevhodném místě), pak několik sekund zuřivě buší do klávesnice a okna lítají po obrazovce (to se snaží navigovat stromem na správné místo) a nakonec přesune terminál na novou plochu (kde nic nepřekáží) a vítězoslavně prohlásí: „Můžeme.“

Neberte jako útok na i3 a jeho uživatele. Spíše jako kritickou reflexi, neboť sám jsem jeho uživatelem.

26.8. 11:25 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Bližší pohled na i3
+-+-+-+
|1|2|3‖
+-+-+-+

Chci-li ale třetí okno dospod,

Aby to nepůsobilo tak negativně, tak v tomto případě lze třetí krajní okno, snadno přesunout dolů pod obě jediným příkaz pro přesun okna dolů. Posunujeme-li oknem kolmo proti orientaci kontejneru, i3 jej vytrhne z aktuálního kontejneru, nahradí aktuální kontejner kolmým, a původní kontejner a vytržené okno přesune do nového kontejneru v opačné orientaci udané směrem přesunu. Tedy úkon na jednu klávesovou zkratku. (Horší je chtít okno vrátit zpět a ještě horší zasunout vnější okno z někam do hlubší struktury.)

26.8. 17:10 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Děkuji za doplnění! Sám bych to lépe vysvětlit nedovedl.
Typického uživatele i3 poznáte tak, že když po něm něco chcete ukázat, což by mělo obnášet spuštění nového terminálu, tak takový uživatel nejprve několik sekund přemýšlí (aby zjistil, odkud bude nejlepší vytvořit terminálové okno), pak spustí terminál (který se zobrazí na naprosto nevhodném místě), pak několik sekund zuřivě buší do klávesnice a okna lítají po obrazovce (to se snaží navigovat stromem na správné místo) a nakonec přesune terminál na novou plochu (kde nic nepřekáží) a vítězoslavně prohlásí: „Můžeme.“
I to se občas stává. Vzhledem k tomu, že osobně používám vesměs stále stejné jednoduché layouty, tak už se mi to naštěstí tolik nestává. Snadný způsob, jak se spálit, je pro mě míchat uvnitř stromu více druhů kontajnerů (tiling / tabbed / stacked). Toho jsem se v počátcích užívání i3 hodně zalekl, ale pak jsem zjistil, že to vlastně moc nepotřebuji.

Ještě bychom mohli zmínit, že výše uvedený strom je možné uložit. V případě opakovaného používání složitějšího layoutu si tedy lze trochu práce ušetřit.
Josef Kufner avatar 26.8. 21:33 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Toto už jsem také párkrát viděl a právě proto si myslím, že je lepší dojít k tiling window manageru postupným vývojem od klasického WM. Pak uživatel dostane k dispozici všelijaké drobné vymoženosti, jak hezky umisťovat okna, například přetažením k pravému ukraji se umístí na pravou půlku obrazovky, ale nový terminál se otevře prostě nějak rozumě a hned bez přemýšlení. Už Windows 3.11 měly možnost poskládat okna do dlaždic, kdy si uživatel okna tak nějak přibližně rozmístil a tato funkce je zarovnala. Ve Windows 95 byla možnost si okna vybrat (ctrl+click na task bar) a nechat si vydlaždicovat jen vybraná. Dnešní mainstreamové desktopy zas umí lepit okna do rohů a k okrajům obrazovky. Chtělo by to spíš zapracovat na nějakých heuristikách, jak při přesunech měnit velikosti okolních oken a jak při měnění velikosti jednoho okna měnit dotýkající se okna, než bojovat s úplně jiným a vlastně celkem těžkopádným konceptem.
Hello world ! Segmentation fault (core dumped)
26.8. 19:11 futurolog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
ja mam radsej i5 a i7 :)
27.8. 14:48 Jakub D | skóre: 1 | blog: entropic
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Díky za užitečný článek. Na použití i3 se už nějakou dobu chystám. Ale když jsem ho jednou vyzkoušel tak mě zarazila ta chybějící funkcionalita okolo, takže přechod by byl dost bolestný. Tohle vypadá jako dobrý použitelný základ se kterým se dá pracovat. Zbytek se už pak dá doladit postupně.
28.8. 21:22 Tomáš | skóre: 30 | blog: Tomik
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Děkuji za výborný text. Až má naštvanost na zmiňované molochy překoročí jisté meze, určitě si ho přečtu znovu s otevřeným kongiguračním souborem na druhé půlce monitoru.

Nicméně mám otázky:
  • Jak si to poradí s laptopem? V různých grafických prostředích jsme měl problémy s trivialitami jako uspávání/probouzení, nastavení jasu apod. Nakonec v Gnome to nějak funguje a jsem příliš líný nastavovat všechno od píky.
  • Opravdu ti vyhovuje nastavení klávesnice per okno? Mně se osvědčuje mít nastavení globální a přepínat podle jazyka, ve kterém zrovna pracuji, nezávisle na aplikaci. Podmínkou je dobrá mapa české klávesnice, jinak se člověk z toho Z/Y, § a různých jiných znaků na špatném místě dočista zblázní (zlí jazyci tvrdí, že se tak již stalo).
Ještě jednou dík za zajímavý text.
28.8. 22:05 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Jak si to poradí s laptopem? V různých grafických prostředích jsme měl problémy s trivialitami jako uspávání/probouzení, nastavení jasu apod. Nakonec v Gnome to nějak funguje a jsem příliš líný nastavovat všechno od píky.
Všechno je na uživateli. Se suspendem ani probouzením by snad neměl být problém (viz i3lock zmiňovaný v textu), pokud to funguje i jinde. Ohledně nastavení jasu, pokud to nebude fungovat samo, se lze inspirovat např. zde.
Opravdu ti vyhovuje nastavení klávesnice per okno? Mně se osvědčuje mít nastavení globální a přepínat podle jazyka, ve kterém zrovna pracuji, nezávisle na aplikaci. Podmínkou je dobrá mapa české klávesnice, jinak se člověk z toho Z/Y, § a různých jiných znaků na špatném místě dočista zblázní (zlí jazyci tvrdí, že se tak již stalo).
Ano. Používám takřka výhradně anglickou klávesnici. Výjimkou je psaní textů v češtině, což jsou typicky ojedinělá okna. Při přepínání mezi okny pak nemusím ještě ručně přepínat layout.

S úplně odlišným layoutem (qwerty vs. qwertz apod.) nemám problém. Pokud se přepnu z okna, kde mám nastavenou českou klávesnici, do okna, kde mám anglickou, prostě začnu psát ty stejné znaky jinými klávesami. Doslova vůbec nad tím nepřemýšlím a píšu i docela rychle. Asi jsem v tomhle nějaká výjimka. :)

Každopádně, pokud to někomu nevyhovuje, stačí zakomentovat spouštění daemona kbdd. Všechno ostatní by pak mělo fungovat stejně, jen s tím rozdílem, že se klávesnicový layout bude přepínat pro všechna okna.
Kdakel avatar 30.8. 13:03 Kdakel | skóre: 20 | blog: kdakel | Ostrava
Rozbalit Rozbalit vše Re: Bližší pohled na i3
A jak nejlépe na suspend po zavření notebooku ? Probuzení po otevření většinou funguje bez problému, ale pořád někde řeším uspávání..
30.8. 14:28 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Já to neřešil, ale našel jsem tohle. Pokud používáš systemd, tak v /etc/systemd/logind.conf zřejmě odkomentovat (nebo přidat) řádek:
HandleLidSwitch=suspend
Zamykání vyřešil vlastní systemd službou. Jinak by to asi mohlo jít přes acpid.
Jendа avatar 30.8. 16:26 Jendа | skóre: 75 | blog: Výlevníček | JO70FB
Rozbalit Rozbalit vše Re: Bližší pohled na i3
V různých grafických prostředích jsme měl problémy s trivialitami jako uspávání/probouzení, nastavení jasu apod.
Mně uspávání ani jas mi desktop neřeší. Uspávám zadáním sudo pm-suspend a na jas mám skript, který přečte /sys/něco/brightness, číslo zvýší nebo sníží, a zapíše ho tam zpátky. To má výhodu v tom, že si můžu nastavit vlastní velikost kroku, resp. obecně aby to fungovalo tak jak by člověk čekal (exponenciálně a jak moc).
29.8. 12:29 awesome
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Nie je awesome len o cosi modernejsie i3?
29.8. 12:42 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Modernější v jakém smyslu? awesome je o 1½ roku starší než i3.
Kdakel avatar 29.8. 23:27 Kdakel | skóre: 20 | blog: kdakel | Ostrava
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Starší, složitější na konfiguraci, ale má své kouzlo.. Např.plovoucí mód mi připadá lépe řešený..

Ale článek super, pro zájemce a neznalé doporučuji skvělé známé video o i3wm: Dlaždice na desktopu
30.8. 01:49 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Ještě může být zajímavý Enlightenment, který lze AFAIK používat jako tradiční floating desktop, ale zvládá i pokročilý tiling.
Dreit avatar 30.8. 08:29 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
Rozbalit Rozbalit vše Re: Bližší pohled na i3

A co takhle Qtile? :-D

Nope
30.8. 09:51 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Pobavilo. Docela to i vypadá zajímavě.
Kdakel avatar 29.8. 22:35 Kdakel | skóre: 20 | blog: kdakel | Ostrava
Rozbalit Rozbalit vše Re: Bližší pohled na i3

V první řadě jsem chtěl klikátko na nastavení sítě:

exec --no-startup-id nm-applet


No, když ještě navíc tohle nezakomentuji, nm-applet prostě nevidím..

# tray_output primary
30.8. 01:19 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
A jiné ikony se ti v trayi zobrazují?
Kdakel avatar 30.8. 12:00 Kdakel | skóre: 20 | blog: kdakel | Ostrava
Rozbalit Rozbalit vše Re: Bližší pohled na i3
ostatní ikony ano
30.8. 12:17 Bherzet | skóre: 4 | blog: Bherzetův blog
Rozbalit Rozbalit vše Re: Bližší pohled na i3
Tak nemám tušení.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.