Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze | |||
automatické_rozmisťování_oken [2012/09/26 07:31] – old revision restored vojtechtrefny | automatické_rozmisťování_oken [2019/02/25 17:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ====== Automatické rozmisťování oken ====== | ||
+ | {{.: | ||
+ | |||
+ | Program // | ||
+ | |||
+ | ====== Instalace ====== | ||
+ | Program se nachází v repozitářích Ubuntu, stačí [[Instalace programů|nainstalovat]] balík [[apt:// | ||
+ | |||
+ | Po instalaci je vhodné nastavit // | ||
+ | Zvolte **Systém -> Volby -> Sezení** a tlačítkem **Přidat** otevřete dialog přidání programu po startu. Do kolonky **Jméno:** napište '' | ||
+ | |||
+ | ====== Konfigurace ====== | ||
+ | Konfigurační soubory se ukládají do složky '' | ||
+ | |||
+ | Pro začátek si vytvořte ve svém domovském adresáři složku '' | ||
+ | |||
+ | ====== Pravidla ====== | ||
+ | ===== Základní syntaxe ===== | ||
+ | Základní tvar pravidla podle kterého // | ||
+ | < | ||
+ | (if | ||
+ | (// | ||
+ | (//akce//) | ||
+ | ) | ||
+ | </ | ||
+ | Případně: | ||
+ | < | ||
+ | (if | ||
+ | (// | ||
+ | (begin | ||
+ | //akce1// | ||
+ | //akce2// | ||
+ | ... | ||
+ | ) | ||
+ | ) | ||
+ | </ | ||
+ | Co to znamená?? Počáteční **if** jistě napoví, že se jedná o **podmínku**. **// | ||
+ | |||
+ | Následující příklad to snad objasní lépe: | ||
+ | |||
+ | < | ||
+ | (if ;když | ||
+ | (is (application_name) " | ||
+ | (set_workspace 2) ;přesuň jeho okna na plochu 2 | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | Pokud využívate služeb programu compiz (grafické efekty), tak namísto "" | ||
+ | |||
+ | :!: Toto je jen základní tvar jednoduchého pravidla. Schéma tvoření složitějších pravidel najdete na [[http:// | ||
+ | |||
+ | ===== operátory ===== | ||
+ | ==== is ==== | ||
+ | Používá se pro porovnání řetězců, které musí být naprosto stejné. Například: | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (application_name) " | ||
+ | (set_workspace 3) ;přesuň jeho okna na plochu 3 | ||
+ | ) | ||
+ | </ | ||
+ | ==== contains ==== | ||
+ | Pro splnění podmínky stačí, **matcher** obsahoval řetězec v uvozovkách. Podmínka bude splněna i když bude hodnota například matcheru '' | ||
+ | Příklad: | ||
+ | < | ||
+ | (if ;když | ||
+ | (contains (window_name) " - muCommander" | ||
+ | (begin | ||
+ | (set_workspace 3) ;přesuň toto okno na plochu 3 | ||
+ | (maximize) ; a maximalizuj ho | ||
+ | ) | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | ===== matchery ===== | ||
+ | ==== window_name ==== | ||
+ | Jméno okna, zobrazuje se v horním pruhu u každého okna | ||
+ | |||
+ | ==== application_name ==== | ||
+ | Jméno souboru aplikace, která okno vytvořila. Detekce bohužel funguje, jak se jí chce, takže je lepší používat '' | ||
+ | |||
+ | ==== window_class ==== | ||
+ | Vytvoří-li jedna aplikace více oken, můžeme vytvořit podmínku, na kterou všechna okna dané aplikace zareagují. Jakou má okno window_class zjistíme následovně: | ||
+ | - Otevřeme terminál | ||
+ | - Zadáme příkaz: | ||
+ | < | ||
+ | xprop |grep WM_CLASS | ||
+ | </ | ||
+ | < | ||
+ | WM_CLASS(STRING) = " | ||
+ | </ | ||
+ | |||
+ | |||
+ | Příkaz nám vrátil dva alternativní názvy třídy okna, pomocí kterého se na okna stejné aplikace můžeme odkazovat. | ||
+ | |||
+ | Příklad: | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (window_class) " | ||
+ | (set_workspace 4) ;přesuň toto okno na plochu 4 | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | ===== akce ===== | ||
+ | ==== set_workspace ==== | ||
+ | Přesune okno splňující podmínky na předem určenou plochu. Příklad: | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (window_class) " | ||
+ | (set_workspace 4) ;přesuň toto okno na plochu 4 | ||
+ | ) | ||
+ | </ | ||
+ | ==== maximize ==== | ||
+ | Maximalizuje okno. Příklad: | ||
+ | < | ||
+ | (if ;když | ||
+ | (begin | ||
+ | (is (application_name) " | ||
+ | (set_workspace 2) ;přesuň jeho okna na plochu 2 | ||
+ | (maximize) ; a maximalizuj | ||
+ | ) | ||
+ | ) | ||
+ | </ | ||
+ | ==== minimize ==== | ||
+ | Funguje jako '' | ||
+ | |||
+ | ==== geometry ==== | ||
+ | Umožňuje nastavit pozici a rozměry okna v pixelech. Tyto hodnoty je však potřeba nejdříve zjistit. Použijte následující postup: | ||
+ | - Otevřete si příslušné okno a nastavte si jeho velikost a pozici na obrazovce jak se vám hodí | ||
+ | - Zadejte v terminálu | ||
+ | < | ||
+ | xwininfo | grep geometry | ||
+ | </ | ||
+ | a kurzorem klikněte na ono okno. Výstupem bude něco jako | ||
+ | < | ||
+ | -geometry 218x405-0+0 | ||
+ | </ | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (window_name) " | ||
+ | | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== focus ==== | ||
+ | Nastaví okno jako aktivní. | ||
+ | |||
+ | ==== close ==== | ||
+ | Jednoduše okno splňující podmínky zase zavře. Praktická aplikace mě nějak nenapadá ;-) | ||
+ | |||
+ | ==== pin ==== | ||
+ | Nastaví okno aby bylo viditelné na všech virtuálních plochách. Velmi praktická funkce, i když nyní již nahraditelná pomocí obdobné funkce poskytované managerem // | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (window_class) " | ||
+ | (pin) ;zobrazuj na všech plochách | ||
+ | ) | ||
+ | </ | ||
+ | ==== above ==== | ||
+ | Okno bude vždy navrchu, nikdy nebude překryto. Příklad: | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (window_class) " | ||
+ | (above) ;Zakáže překrývání oken Gimpu | ||
+ | ) | ||
+ | </ | ||
+ | ==== below ==== | ||
+ | Opak minulé akce, zařídí, že bude dané okno vždy v nejnižší vrstvě oken (nikdy žádné okno nepřekryje). Používá se zcela stejně. | ||
+ | |||
+ | ==== undecorate ==== | ||
+ | Odstraní horní lištu (" | ||
+ | |||
+ | ==== opacity ==== | ||
+ | Nastaví průhlednost příslušnému oknu. Bohužel, podle mých zkušeností nefunguje. | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (application_name) " | ||
+ | (opacity 50) ; nastav jeho průhlednost na 50% | ||
+ | ) | ||
+ | </ | ||
+ | ==== skip_tasklist ==== | ||
+ | Okno nevytvoří " | ||
+ | |||
+ | ==== spawn_sync ==== | ||
+ | Spustí externí příkaz. Příklad: | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (application_name) " | ||
+ | (spawn_sync | ||
+ | " | ||
+ | " | ||
+ | ) | ||
+ | ) | ||
+ | </ | ||
+ | |||
+ | ==== println ==== | ||
+ | Testovací akce, nepřesouvá okna, jenom vytiskne na standardní výstup programu // | ||
+ | < | ||
+ | sudo killall devilspie #zabije případnou instanci spuštěnou po startu | ||
+ | devilspie #nastartuje devil' | ||
+ | </ | ||
+ | < | ||
+ | (if ;když | ||
+ | (is (window_class) " | ||
+ | (println "Okno Gimpu detekováno" | ||
+ | ) | ||
+ | </ | ||
+ | ====== Odkazy ====== | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | {{page> | ||
+ | |||
+ | {{page> |