Már korábban is célozgattam rá, hogy öregségemre nagy tiling wm, magyarul pálcikawm rajongó lettem. Eleinte nem igazán gondoltam életrevaló koncepciónak, de miután a különböző asztali környezetek kikészítettek idegileg, gondoltam teszek egy próbát, és némi idő elteltével beütött a dolog! Mára már jó pár haverom lett ebből a klubból, és gondoltam kreálok egy kedvcsinálót (lehet hogy sorozat lesz...) ezeknek a jószágoknak.
Ha már lúd legyen kövér ugyi, szóval gondoltam kezdhetnénk az egyik legkülöncebb, legrosszabb hírnévnek örvendő versenyzővel, a Ratpoisonnal, amit már neveztek hírős youtuberek a világ legrosszabb ablakkezelőjének is...!
Mit kapunk alapból? Hát nagyjából semmit, fekete képernyőt meg egy árva kurzort (erről nem csináltam képernyőképet ), meg egy rövid kis üzenetet, hogy nincs veszve minden, nyomjunk Ctrl+t majd ?-et némi segítségért. És itt is van a különcség első példája, a módosító billentyű Leader-key stílusban működik, tehát először nyomjuk a módosítót majd a parancs billentyűt!
Na vessünk egy pillantást az én általam kotyvasztott Patkányméregre!
Ugye nem is olyan gáz a helyzet! Ehhez persze kellett a Polybar is, nem ússzuk meg hogy ne szóljunk róla néhány szót a későbbiekben...
Néhány szó a működésről! Ratpoison parancsot a módosító (alapból Ctrl+t) majd a : lenyomásával adhatunk (pl. quit > kilépés a Ratpoisonból).
A Ratpoison teljesen manuális, nincs autotiling. Mindent egy teljes képernyős ablakként kezel, ezért pl. a panel elhelyezése sem triviális, helyet kell csinálnunk neki! Un. keretekkel (frame) dolgozik, tehát amikor felosztjuk a képernyőnket (módosító majd s vagy S) egy új keret képződik (kapunk egy kis "Current Frame" üzenetet, hogy tudjuk hol is állunk), amibe átlépve (módosító majd irány billentyűk) indíthatunk benne egy új alkalmazást. Az alkalmazást bezárva a keret megmarad, ezt külön kell bezárnunk ha már nem kell (persze megmókoljuk hogy egyszerre bezáródjanak, ha úgy akarjuk).
Szóval a katasztrófa elkerülése érdekében ne is csináljunk semmit, hanem indításból essünk neki gyártani egy ~/.ratpoisonrc fájlt, nézzük az enyémet!
#------------------------------------------------------------------------------------ # Berus .ratpoisonrc #------------------------------------------------------------------------------------ # Kikapcsolja a "Welcome to Ratpoison" üzenetet a jobb felső sarokban az indításkor. # startup_message off #------------------------------------------------------------------------------------ # Prefix Kulcs és Globális Beállítások #------------------------------------------------------------------------------------ # Felülírja az alapértelmezett prefix kulcsot (Ctrl+t) a Windows (Super_L) gombra. escape Super_L # Ablakokra az osztályokkal hivatkozunk. set winname class # Polybar indítása. unmanage panel unmanage polybar set padding 0 28 0 0 exec polybar & # Színek. set fgcolor #777777 set bgcolor black set fwcolor #777777 set bwcolor black #------------------------------------------------------------------------------------ # Programok indítása a Ratpoison indulásakor (exec) #------------------------------------------------------------------------------------ # Beállítja az egérmutatót, +Solaar. exec xsetroot -cursor_name left_ptr exec solaar -w hide # Munkaterületek inicializálása az 'rpws' szkripttel. # Az `rpws` (RatPoison WorkSpace) a több virtuális munkafelület kezelésére szolgál. exec /usr/bin/rpws init 4 -k # Elindítja a 'picom' compositort az árnyékok és átlátszóság kezelésére. exec picom -b # Beállítja a háttérképet. exec /home/berus/.fehbg # 'Redshift'. exec gammastep -P # Lehessünk 'rootok'. exec /usr/libexec/polkit-mate-authentication-agent-1 # Hálózat kezelés. exec nm-applet # Ne aludj el! exec caffeine-indicator # Numlock be. exec numlockx on # Vágólap kezelő. exec parcellite #------------------------------------------------------------------------------------ # Egyéni billentyűparancsok definiálása #------------------------------------------------------------------------------------ # 'bind' parancsok: Ezek a parancsok a prefix kulcs (Super_L) lenyomása után lépnek életbe. # Alapértelmezett terminál felülírása. bind Return exec alacritty # Indítsd el a 'dmenu'-t. # Ez lecseréli a Ratpoison alapértelmezett, egyszerű parancsválasztóját a testreszabhatóbb dmenu-re. # A `--dina-medium-r-normal--12` font és a színek testreszabhatók. unbind d bind d exec $(dmenu_path | dmenu -i -b -nb '#000000' -nf '#777777' -sb '#770000' -sf '#ffffff' -fn '--dina-medium-r-normal--12-------*' -p '> ') # Indítsd el a 'dmenu'-t ablakváltóként a 'w' billentyűvel. # A `ratpoison -c "windows"` listázza a megnyitott ablakokat, amit a dmenu-nek ad át. # Az `awk` parancs kivonja az ablak ID-t a kiválasztott sorból. unbind w bind w exec $(ratpoison -c "select $(ratpoison -c 'windows' | dmenu -i -p ':: ' | awk '{print $1}')") # Program bezárása és keret törlése. bind q exec ratpoison -c "delete" -c "remove" # Vertikális horizontális felosztás. bind s exec ratpoison -c "hsplit" bind S exec ratpoison -c "vsplit" # Kilépés a Ratpisonból. bind e exec ratpoison -c "quit" # 'definekey top' parancsok: Ezek globális parancsok, amelyek a prefix kulcs nélkül is működnek. # Ideálisak gyakori, egybillentyűs parancsokhoz. # A hagyományos Alt+Tab viselkedés felülírása a következő ablakra váltásra. definekey top M-Tab next # Fókusz az adott keretre 'l,h,j,k' billentyűkkel, +Meta (Alt) billentyűvel. definekey top M-l focusright definekey top M-h focusleft definekey top M-j focusdown definekey top M-k focusup # Képernyőmentés (screenshot) parancs definiálása. # Először létrehozunk egy aliast a parancsnak. alias sshot exec import -window root ~/screenshot-$(date +%F%R).jpg # Ezután a globális parancsot definiáljuk a `PrintScrn` billentyűre. definekey top Print sshot #------------------------------------------------------------------------------------ # Munkaterületek és ablakok közötti navigáció #------------------------------------------------------------------------------------ # Munkaterületek elérése a prefix kulcs és egy szám segítségével (pl. Super_L + 1). # Ez a `rpws` szkripttel beállított munkaterületekhez tartozik. bind 1 exec rpws 1 bind 2 exec rpws 2 bind 3 exec rpws 3 bind 4 exec rpws 4 #------------------------------------------------------------------------------------ # Ablak- és Keretkezelés #------------------------------------------------------------------------------------ # A keret szegélyének vastagságát állítja. Ha 0 maximalizálja a képernyő területét, #de ha a terminálokban üres terület keletkezik, az 'internalBorder' opcióval kell #beállítani a terminálban. A színeit már állítottuk: fwcolor, bwcolor. set border 2
Szokás szerint tele van magyarázatokkal, de ez kicsit nagyobb falat, nézzük át mit miért csinálunk!
Prefix Kulcs és Globális Beállítások: a módosító billentyű a bal win gombra, az osztályokra hivatkozás megkönnyíti a dolgunkat, ahogy mindjárt lejjebb láthatjuk is, itt közöljük a Ratpoisonnal, hogy a panel osztályt és azon belül a Polybart ne pisztergálja, majd megmutatjuk neki konkrétan, hogy a képernyő melyik része van a kezelésében (ezt ugye a panel magasságához állítjuk), majd indulhat a Polybar. És itt színezünk.
Programok indítása a Ratpoison indulásakor (exec): az ami, a fontosabbak, exec xsetroot -cursor_name left_ptr hogy tudjunk egerészni, exec /usr/bin/rpws init 4 -k munkaterületek számát állítjuk gyk., a többi egyéni preferencia kérdése.
Egyéni billentyűparancsok definiálása: az ami, a formátum bind BILLENTYŰ exec PARANCS, a fontosabbak, bind q exec ratpoison -c "delete" -c "remove" a fentebb emlegetett kombó amivel egyszerre zárjuk be az alkalmazást és a keretet, bind e exec ratpoison -c "quit" kilépés, # Fókusz az adott keretre részre is felhívnám a figyelmet, így sokkal egyszerűbb a navigáció a keretek között, ill. a # Képernyőmentés résznél láthatjuk, hogyan tudunk parancs aliast létrehozni és azt meghívni.
Munkaterületek és ablakok közötti navigáció: az ami.
Ablak- és Keretkezelés: az ami, akár 0 is lehet.
Panel: ha a .ratpoisonrcben megcsináltuk a helyet a Polybarnak, az ő ~/.config/polybar/config.ini fájljában mindenképpen adjuk meg az override-redirect = true opciót, hogy ne pisztergálja az ablakkezelő működését!
A Ratpoison munkaterületeinek a számát sem egyszerű megjeleníteni a panelen... Először ~/.config/polybar/config.ini fájlhoz csapjuk hozzá (értelemszerűen a modulok szekcióhoz):
[module/workspaces] type = custom/script exec = ~/.config/polybar/rp_workspaces.sh interval = 0 format = <label> label = %output%
Aztán másoljuk a hivatkozott szkriptet a ~/.config/polybar/ könyvtárba, a szkript:
#!/usr/bin/env bash ratpoison -c 'set winfmt %g %n %t' windows=$(ratpoison -c windows) current_ws=$(ratpoison -c 'getenv wspl') N=4 declare -A has_windows while read -r line; do group=$(echo "$line" | awk '{print $1}') has_windows[$group]=1 done <<< "$windows" for i in $(seq 1 $N); do group=$((i - 1)) if [ "$i" = "$current_ws" ]; then echo -n "%{A1:rpws $i:}%{F#ffffff}%{B#777777} $i %{F-}%{B-}%{A}" else echo -n "%{A1:rpws $i:}%{F#777777}%{B#282a36} $i%{F-} %{A}" fi done
Az N változó a munkaterületek száma.
Nyilván a keményvonalas Patkányméreg kutyulók nem csúfítják el a művet mindenféle panelekkel, de én el vagyok már kicsit kényelmesedve, a kor ugyi...
Rossz híre ellenére némi melóval egy remek, abszolút élhető ablakkezelővé varázsolhatjuk, mondanom sem kell én imádom!
Mint mindig barátunk a man, és ezúton is szeretnék köszönetet mondani a MagyArch Linux fejlesztőinek az inspirációért és a remek ötletekért!
Ratpoison a GitHubon (alapértelmezett billentyűk, stb.): https://vhernando.github.io/ratpoison-window-manager
Berus