Cinnamon ablaknyitás megadott pozícióban

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

Pár funkció hiányzik nekem a Cinnamon felületen, az egyik az I3wm-ben megszokott funkció, amivel megadhatom, hogy egy ablak, program pontosan hol jelenjen meg nyitáskor. Kisebb keresgélés után pár megoldást találtam. Nem túl kényelmes, hiszen nem grafikus felületű, de a konfigurációk szerkesztését nekem megéri a cél érdekében. Plusz ezek független programok, bármelyik xorg-ot használó környezetben működni fognak.

Miért? Mert szeretem, ha minden lehetőséget én állítom be. Illetve egy előre definiált összeállítást is indíthatunk, amiben minden ott és akkora lesz, mint amit én akarok.

Devilspie vagy Devilspie2 használata

Ha részletes vezérlésre van szükséged, egy Devilspie vagy Devilspie2 nevű programmal pontosan meghatározhatod az ablakok megnyitásának pozícióját és méretét.

Telepítés:

Nyiss egy terminált és futtasd a következő parancsot:

sudo apt install devilspie2

Ez Linux Mint alatt simán települt, ha esetleg problémás nálad, akkor az oldalukat érdemes megnézni itt. Itt találsz leírást amit, ha az alap használatnál többet akarsz, akkor mindenképp tedd meg.

Konfiguráció:

Hozz létre egy konfigurációs fájlt:

    mkdir -p ~/.config/devilspie2
    nvim ~/.config/devilspie2/rules.lua

Azaz ez lesz a konfigurációs állomány, ha majd menteni akarod a beállításaidat. Illetve meg is nyitjuk, én - nem meglepő mód - az nvim-et használva.

Írd bele a következő kódot (példa egy kitty ablakra):

    if (get_application_name() == "kitty") then
       set_window_position(100, 100); -- X és Y koordináták
       set_window_size(800, 600); -- Szélesség és magasság
    end

A formátum így is jó:

    if (get_window_class() == "kitty") then
        set_window_geometry(100, 200, 800, 600); -- X, Y, szélesség, magasság
    end

Gondolom a szintaktika egyértelmű.

Ha nem ismered a pontos WM_CLASS értéket, akkor érdemes a

xprop | grep WM_CLASS

parancsot futtatni, az egeret a lekérdezendő ablak fölé vinni.

Majd futtasd a Devilspie2 programot:

devilspie2 &

Ha minden jól működik, beállíthatod, hogy a Devilspie2 automatikusan induljon a rendszerrel.

Az esetek 70-80 százalékában ez így rendben is lesz. A többi, ahol önfejűen a program magához rendeli a hely, méret stb. meghatározását, ott ez nem fog menni. Ez van.

WMCTRL használata:

A wmctrl segítségével szkriptből is beállíthatod az ablakok helyzetét és méretét. Elvileg ez alapból telepítve van.

Telepítés:

sudo apt install wmctrl

Alapok

wmctrl -x -r "kitty" -e 0,100,100,1024,768

Ez a Kitty ablakot a (100,100)-as koordinátára helyezi és 1024x768 méretűre állítja. A bevezető nulla a bal felső sarkot jelenti ki a koordináta origójának.

Bár sok helyen más a szintaktika, de mindenképp használd a -x kapcsolót, ha a WM_CLASS értéket (nevet) adsz meg. Más lehetőség is van, de ha már ezzel a névvel kezdtünk, használjuk ezt. Az -x kapcsolóval az ablakot az alkalmazás WM_CLASS értéke alapján célozza meg, ami jó eséllyel egy stabil érték.

Ez alapvetően nem jelent nagy könnyebbséget, de ha mindezt scriptesítjük, akkor már egy kész, előre beállított program csoportot hozhatunk létre, amik a helyükön nyílnak meg.

Egy nagyon faék egyszerűségű megoldás két program megnyitására és helyrerakására:

#!/bin/bash
# Terminál indítása bal oldalon
kitty &
sleep 1 # Vár az ablak megnyitására
wmctrl -x -r "kitty" -e 0,0,0,800,400

# progtam  indítása jobb oldalon
filerename-stt &
sleep 2
wmctrl -x -r "filerename-stt" -e 0,800,0,1120,1000

Az indítás és a kicsi várakozás alatt lehet, hogy máshol jelenik meg az ablak, de az wmctrl teszi majd a dolgát és helyre teszi.

Önfejű ablakok regulázása

Ahogy írtam van pár olyan ablak, program amely nem igazán illeszkedik ebbe a megoldásba, nem azt és nem úgy teszi a parancsokra, mint azt én elvárnám. Ezt nem nagyon tűrhetjük, így komolyabb eszközöket vetünk be.

Vannak programok amik vagy random WM_CLASS értékkel indulnak a saját elképzelésük szerint, vagy nem adnak reakció a WM_CLASS értékre hivatkozva. Ezen segítünk, ha megmondjuk induláskor, hogy bármit is akar a program, legyen egy egységes WM_CLASS értéke.

A program indításakor egy kapcsolót adunk meg:

filerename-stt --class=kiskutya

Ezzel a kiskutya karaktersorral tudunk hivatkozni ezután az adott programra a WM_CLASS értéknél. Kicsit macerás, mert bele kell nyúlni a startmenüs bejegyzésekbe (jobb klikk a program nevén...), inkább a scriptekben használom. Bár ez sem csodafegyver, mert egyes programok ennek is ellen tudnak állni...

Mindegyik bemutatott program sokkal többet tud, mint amit leírtam. Érdemes kicsit olvasgatni a témában.

Jó szórakozást!