Hlavní navigace

Dlaždice trochu jinak: správce oken Subtle

14. 8. 2014
Doba čtení: 8 minut

Sdílet

Už nějakou dobu probíhá ve všech možných zákoutích internetu diskuse o vhodnosti či nevhodnosti použití „dlaždic“ v systému Windows 8. My se v následujících článcích zaměříme na trochu jiný systém dlaždic – na tzv. tiling window managery (dlaždicové správce oken), které už jsou s námi několik dekád.

„Dlaždicoví okenní správci“ existují už poměrně dlouhou dobu. Podle Wikipedie jejich historie sahá až do let 1981 a 1982Je také pravděpodobné, že po celou dobu jejich existence se vedou podobné diskuse, jako u Windows 8:

  • Je to vůbec k něčemu dobré?
  • Jaký je rozdíl oproti běžným správcům nebo desktopovým prostředím?
  • Co mi využití takového správce přinese?
  • Který z nich si mám vlastně vybrat?
  • Co, jak, proč, atd?

V následujícím textu se pokusíme na některé z uvedených otázek najít alespoň nějakou odpověď a případným zájemcům přinést informace, které by jim mohly ulehčit rozhodování. Asi jako první informaci by bylo vhodné zmínit určitou definici, co to tedy vlastně ten tiling správce oken (dále jen WM) je. Tedy možná ještě lépe se podívat na to, co je vlastně WM a jaké jsou základní typy. WM má jednoduše řečeno na starost vytváření, vykreslování, rozmisťování, dekoraci a další všemožné operace s okny. Dělíme je na čtyři základní typy:

  • Compositing – kompozitní správce oken, který vytváří a vykresluje okna odděleně a umisťuje je do různých 2D a 3D prostředí. Je zde k dispozici velká volnost pro vytváření a změnu vzhledu a všelijaké vizuální efekty
  • Stacking – nejběžnější a nejznámější správce oken, který okna “stohuje” na sebe a jednotlivá okna se mohou částečně nebo úplně překrývat
  • Tiling – většinou uváděný jako dlaždicový, ale překlad slovesa tile je ještě obsáhlejší – vydláždit dlaždicemi nebo pokrýt taškami. Toto je asi jasná asociace na jednu z hlavních vlastností: okna se skládají vždy vedle sebe a nepřekrývají se (nemusí ale platit vždy). Další okamžitě patrnou vlastností je absence dekorací oken
  • Dynamic – obsahuje v sobě kombinaci výše uvedených správců

Další důležitou informací je nějaký základní přehled o existujících možnostech, které se zájemcům o tiling WM nabízejí. Existuje jich určitě víc (informativní seznam je uvedený na již zmíněné stránce Wikipedie), ale já jsem při svém pátrání vycházel z přehledné tabulky na ArchWiki.

Jak je z přehledu patrné, k dispozici je slušné množství informací i velký počet zastoupených aplikací. To je na jednu stranu dobré, na druhou stranu to ale výběr tolik neulehčí. Bez hledání dalších informací a zkoušení se samozřejmě neobejdeme.
Než se pustím do samotného popisu, uvedu několik skutečností, které mne směrem k tiling WM popohnaly. Byly to vlastně dvě zásadní věci:

  • Chtěl jsem nějaký velmi lehký systém na svůj notýsek. Jedná se totiž o stařičký, ale zatím dokonale funkční Dell Latitude D420 (jedno jádro Core Solo 1,06 GHz ULV, maximálně možných 1,5 GB RAM, HDD ZIF 1.8“ 64 GB, displej 12“ – 1280×800 bodů). Jistě uznáte, že to není konfigurace na běh KDE nebo GNOME 3…
  • Pokud by se mi nějaký WM na notýsku osvědčil, rád bych ho vyzkoušel i na hlavním pracovním stroji. Tam je sice konfigurace dostatečná na běh čehokoliv, ale to ještě nic zásadního neříká o tom, proč by se mělo systémovými prostředky plýtvat tam, kde to není bezpodmínečně nutné.

Zkoušení a experimentování na notesu jsem se věnoval docela dlouhou dobu a také docela intenzivně. Za sebe můžu konstatovat, že se mi ta časová investice vyplatila a jsem už několik měsíců spokojeným uživatelem tiling WM na notesu i na hlavním stroji. Za dobu výběru jsem vyzkoušel povícero zástupců, ale v textu se podrobněji zaměřím na tři z nich: Awesome, SubtleXMonad. Zkoušel jsem i I3, ale ten zde probíral před nedávnem Petr Krčmář, a tak by bylo zbytečné se opakovat.

V souvislosti s I3 bych ještě případné zájemce upozornil na projekt J4, který je vlastně rozšířením I3.

I když se nejedná o tiling WM, rozhodl jsem se do přehledu zahrnout i WM Sawfish. Je to systém podobný třeba PekWM, JWM nebo Fluxboxu se spoustou zajímavých možností.

Abychom se mohli konečně pustit přímo do dlaždic (nebo dláždění či pokrývání), provedeme si defaultní instalaci prvního systému z užšího výběru – Subtle. Na něm si ukážeme zásadní rozdíly mezi tiling a “běžnými” WM a vůbec možnosti a přínosy těchto systémů pro uživatele.

Aby to bylo jasnější ještě víc, tak uvedu pro informaci také použitou distribuci. Na notýsku mám Debian Testing 32-bit. Instalaci nebudu podrobně popisovat, jenom uvedu, že byl instalován pouze základní systém, pak Xorg prostředí včetně konfigurace a pak potřebné balíčky. Jako DM je použit Lightdm, ze kterého je možné všechny 4 uvedené WM startovat. V souboru $HOME/.xinitrc jsou pouze příkazy pro nastavení české lokalizace uživatele a spuštění české klávesnice. Z této instalace bude pocházet také většina snímků obrazovek. Aby bylo možné seznámit čtenáře i s defaultním nastavením, budou použity také snímky z virtuálních instalací. Veškeré informace o Subtle je možné najít na příslušném webu.

Jak je možné vyčíst z výše uvedeného přehledu, Subtle je vytvořen v jazyce C a konfigurace probíhá prostřednictvím jazyka Ruby a příslušného RB souboru. V Ruby jsou také vytvořené dodatečné součásti systému a různá rozšíření. Další důležité vlastnosti Subtle:

  • zabudovaný panel (resp. dva panely nahoře a dole), rozšíření je možné pomocí tzv. Sublets
  • zabudovaná systémová oblast panelu (tray)
  • konfigurovatelné klávesové zkratky a myší akce (tzv. Grabs)
  • rozšířené štítkování oken (tagging)
  • CLI klient (Subtler) pro interakci se systémovým shellem a dalšími WM, které jsou kompatibilní s EWMH/NetWM
  • rozšíření, které přináší možnosti a funkce CLI Subtler do Ruby (Subtlext)
  • shoda se standardy (EWMH / ICCCM / MWM / XDG Base Directory)
  • podpora více monitorů (Xinerama / XRandR)

Subtle patří mezi tiling WM, které mají tzv. manuální styl správy oken. To znamená, že nemá žádný předem definovaný layout, do kterého jsou okna automaticky rozmisťována. Používá k tomuto účelu mřížku (defaultně je to 3×3) jednotlivých slotů pro umístění oken. V Subtle se tento systém nazývá Gravities. Je možné nastavení měnit a také okna mezi sloty přesouvat nebo měnit způsob zobrazení. Zajímavé je to, že změny zobrazení lze provádět pouze s jedním otevřeným oknem. K tomu se ale vrátíme až v dalším popisu.

Velmi silnou stránkou Subtle je systém appletů a rozšíření pro panely – Sublets. Jsou to vlastně skripty napsané v Ruby. Mají dokonce svůj vlastní repozitář a také aplikaci pro jejich správu. Tato aplikace se jmenuje Sur (Subtle User Repository) a je pro ni k dispozici aktuálně něco přes 160 Subletů. Skutečně je to méně, protože jsou zde uložené různé verze stejných Subletů. Pomocí Sur je možné balíčky instalovat, odstranit, hledat je lokálně i vzdáleně, vytvářet templaty, testovat skripty a hledat v nich chyby. Sur funguje na podobném principu jako instalační aplikace/správce balíčků pro Ruby – Rubygems.

Další důležitou informací pro případné zájemce je aktuálnost verzí, průběh vývoje a uplatnění v distribucích. Na webu je běžně dostupná verze 0.11.3224 s názvem Xi. Ta je stará cca 2 roky. V repozitáři je ale k dispozici verze 0.11.3243, která je stará cca půl roku.

Pro instalaci Subtle v Debianu je k dispozici pouze jediný balíček verze 3224:

aptitude search subtle
i subtle - grid-based manual tiling window manager

Po jeho instalaci se do menu Lightdm automaticky přidá možnost jeho spuštění. Defaultní okno WM vypadá po spuštění takto:

Na první pohled je dobře vidět, že se nejedná jenom o obrázek nebo pozadí, ale že se opravdu něco spustilo. V defaultním nastavení je viditelný pouze horní panel. Na něm jsou pak vidět názvy 4 Views, což je obdoba virtuálních pracovních ploch.
Bez jakéhokoliv nastavování lze okamžitě začít využívat defaultní klávesové zkratky i myší akce. Asi nemá smysl je zde zatím popisovat a bude jednodušší a přínosnější se zaměřit na uživatelskou konfiguraci.

Hlavní a globální konfigurační soubor je v /etc/xdg/subtle/subtle.rb.
Nebylo by asi úplně vhodné používat pro změny konfigurace globální soubor a bude určitě jednodušší a praktičtější použít lokální uživatelskou konfiguraci. Tu je možné provést dvojím způsobem. Ten první je velmi jednoduchý: zkopírujeme adresář /etc/xdg/subtle do $HOME/.config a upravíme případně přístupová práva k souboru subtle.rb.

Jak je patrné z přílohy subtle.rb, je konfigurační soubor poměrně rozsáhlý už ve své defaultní podobě a obsahuje lehce přes 800 řádků. Mnoho z nich jsou ale komentáře, které velmi usnadňují změny v konfiguraci. Konfigurace je rozdělená do několika sekcí. Na počátku je zajímavé asi jenom nastavení default_gravity : center, které nastaví otevření nového okna vždy na celé ploše obrazovky/plochy – panel/y jsou přitom viditelné.

Pak následují tyto sekce:

  • definice zobrazení a obsahu panelů na jednotlivých obrazovkách
  • definice stylů komponent a prvků prostředí
  • definice Gravities – 9 pro organizaci oken a pro Gimp ve víceokenním uspořádání
  • definice Grabs – klávesové zkratky a myší akce pro okna, gravity, programy atd.
  • definice tagů pro různá okna a plochy
  • definice Views – virtuálních ploch
  • definice Subletů
  • definice Hooks – propojení Ruby skriptů s určitou událostí

Abychom si pro začátek ukázali nějaké jednoduché změny v konfiguraci, otevřeme soubor $HOME/.config/subtle/subtle.rb a na řádcích 726 a 727 provedeme následující úpravu:

view "gimp1",  "gimp_.*"
view "dev2",   "editor"

Následně využijeme definovaných Grabs – definice klávesových zkratek a myších akcí. V konfiguračním souboru jsou na řádcích 300 – 317 definována tlačítka myši a modifikační klávesy. Tyto definice jsou pak využity dále při definici Grabs.
Jako první ale provedeme kontrolu správné syntaxe konfiguračního souboru příkazem:

# ~$ subtle -k
ruby: warning: already initialized constant TMP_RUBY_PREFIX
Reading file: 'home/vojtaj/.config/subtle/subtle.rb'
Syntax OK

Pokud je syntaxe v pořádku, můžeme použít jednu ze dvou zkratek:

Win+Ctrl+r pro reload nové konfigurace
Win+Ctrl+Shift+r pro restart Subtle

Výsledek bude vždy stejný a je vidět na obrázku:

Ve druhém způsobu uživatelské konfigurace využijeme vlastnosti standardu XDG.

Konkrétně se použijí systémové proměnné XDG_CONFIG_HOME (defaultně $HOME/.config) a XDG_DATA_HOME (defaultně $HOME/.local/share).
Uděláme tedy dvě změny:

  • Vytvoříme adresář $HOME/.local/share/subtle a nakopírujeme do něj soubor subtle.rb.
  • Buď přesměrujeme systémovou proměnnou XDG_CONFIG_HOME na $HOME/.local/share, nebo smažeme adresář $HOME./config/subtle a vytvoříme symbolický odkaz z $HOME/.local/share/subtle na $HOME/.config.

V souboru zase provedeme dvě drobné změny:

root_podpora

view "gimp3",  "gimp_.*"
view "dev45",   "editor"

Provedeme kontrolu syntaxe a restart WM. Výsledek je vidět na obrázku:

V příštím dílu dokončíme popis konfigurace Subtle včetně několika příkladů a trochu si probereme jeho výhody a nevýhody.

Byl pro vás článek přínosný?