XFCE-hez task switcher: skippy-xd

Exposé jellegű full képernyős program választó X-hez relative kevés függőséggel. Gyors apró C program.

http://code.google.com/p/skippy-xd/
https://github.com/richardgv/skippy-xd

Fedora 20-on az alábbi függőségek kellettek:
giflib-devel
libpng-devel
libjpeg-devel
libXft-devel
libXinerama-devel
libXcomposite-devel
libXdamage-devel

Az Arch Linux-os AUR-on ott vannak a pontos függőségek:
https://aur.archlinux.org/packages/skippy-xd/

Fedora csomag sajnos nincs.

[code]
cd ~/bin

git clone https://github.com/richardgv/skippy-xd

cd skippy*

make

mkdir ~/.config/skippy-xd
cp skippy-xd.rc-default ~/.config/skippy-xd/
nano ~/.config/skippy-xd/skippy-xd.rc

cd ..

cat > skippy << EOF
#!/bin/sh
if pgrep skippy-xd; then
pkill skippy-xd
else
~/bin/skippy-xd/skippy-xd
fi
EOF

skippy
[/code]

Így a skippy parancs hozzárendelhető egy gyors billentyűhöz vagy ikonhoz.

A config fájlban szerintem érdemes az alábbi beállítást tenni:
movePointerOnStart = false
movePointerOnSelect = false
movePointerOnRaise = false

Illetve magamnak az opacity értékeket mindenhol max-ra állítom.

Egyelőre normális hot corner aktiváló megoldást nem találtam XFCE alá (brightside-on kívül), pedig jó lenne megoldani, hogy sarokba húzva az egeret lehessen parancsot futtatni (Gnome3 szerűen).

Szerk.: ez utóbbihoz megoldás:

xdotool behave_screen_edge --delay 10 --quiesce 10 top-left exec skippy

Szerk.:

Állandóan beragadtak a skippy-xd-t indító shell processzek, ezért az alábbi a jó megoldás:

xdotool behave_screen_edge --delay 10 --quiesce 10 top-left exec sh -c "pkill skippy-xd || ~/bin/skippy-xd/skippy-xd"

Hozzászólások

Compizzal használom az Xfce-t, így aztán ez megoldott eleve. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Az EOF es a skippy sorok kozul kimaradt egy chmod a+rx skippy parancs :-) (En legalabbis nagyon cikinek ereznem, ha a shellemben az atiranyitas eleve bebillentene az X biteket.)
Szerk: mindenesetre raneztem. Erdekesnek tunik, de sajnos rajtam nem fog segiteni. Ezt mondja a FreeBSD-n a make search a /usr/ports alatt:

$ make search name=skippy
Port: x11-wm/skippy-xd
Moved:
Date: 2012-10-25
Reason: Has expired: Abandonware, upstream disappeared

Port: x11-wm/skippy
Moved:
Date: 2012-10-25
Reason: Has expired: Abandonware, upstream disappeared

Felül adtam két linket. Az első az eredeti szerzőé, de nem fejlesztette, és átvették többen ahogy olvastam. Az alsó linken 1 hónapon bejegyzések is vannak.

https://github.com/richardgv/skippy-xd

Nálad a ports-ban mi az upstream link? Ha tetszik, lehet érdemes lenne pr-t küldeni a portsra github-ra mutatva.

Csináltam belőle Fedora 20 csomagot a live linuxomhoz. Eddig jó, működik. Tekintve, hogy nem szoktam rpm csomagot csinálni, valószínűleg lehetne sokkal szebben is. Éppen ezért nem teszem közzé, de ha valakit érdekel a source rpm, elküldhetem.

Amit abban a shell scriptben csináltál, azt maga a skippy-xd alapból tudja. Ha daemon-ként indítod, akkor a kliensnek van 3 parancsa: aktiválás, deaktiválás, toggle. Na jó, a negyedik parancs a daemon leállítása. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Majd kiderül. Azóta voltak módosítások a forrásban. Március 16-án csináltam git clone-t, ebből generáltam rpm-et. Fogom tesztelni, aztán morgok, ha rossz. :) Nem az xdotool-t használom esemény generálásra, hanem az xautolock-ot.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ebben igazad van. Most xdotool-lal próbálkoztam virtuális gépben, furán viselkedik. Nincs mindig trigger. Mondjuk nincs időm debugolni, hogy ez a skippy-xd furcsasága vagy az xdotool-é.

Úgy látom, az xdotool rakoncátlankodik. Teszteltem zenity-vel, éppen annyira ötletszerűen generálja az eseményeket, mint ahogyan azt a skippy-xd esetében tapasztaltam.

Dolgom van, majd folytatom.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Azt sajnos nem, pedig elhiheted, eszembe jutott, hogy azt mondja, a notify az event előtt szól. Sajnos, 1 másodperc esetében egyszerre szól a notify az event-tel, illetve épp csak annyival előtte, hogy a sorrend notify, event legyen, de ez akkor is 1 másodpercnél van.

Viszont inkább így legyen, mint a bizonytalan xdotool. Nekem megcsinálta azt, hogy sarokba húztam az egeret, nem történt semmi. Többedjére sem. Később meg a képernyő közepén molyoltam az egérrel, és triggerelt ok nélkül. Na, ez így nagyon nem jó. Az xautolock legalább stabil.

Járulékos előny, hogy én jobb felső sarkot használok, de full nyitott ablakot ott lehet bezárni, így van esélyem bezárni az ablakot úgy, hogy nem triggerelődik az exposé. Egyébként azért jobb felső, mert desktop gépen Xfce+Compiz van, s ott így szoktam meg, akkor legyen a live-omon is ugyanott.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Várjál, félreértetted. Ha van Compiz, nem kell skippy-xd.

Desktop gépemen van Xfce+Compiz. Ezen felül "fejlesztgetek" egy Fedora alapú live linuxot, amely annak érdekében, hogy régi gépen is elfogadhatóan menjen, Openboxot, fbpaneleket, skippy-xd-t tartalmaz, meg ilyen-olyan saját scripteket. Viszont valóban használom a Compton nevű compositort azért, hogy legyen a terminálnak átlátszósága, az ablakoknak árnyékolása, és megjelenő ablak ne "keményen" jelenjen meg, hanem egyre nagyobb kontraszttal jöjjön elő.

Compton-ból csak régi csomag van Fedorához, skippy-xd-ből nincs, így ezen két programot a githubról checkout-oltam, csináltam *.tar.xz-t, írtam *.spec file-t, s készítettem rpm csomagot belőlük. Mennek jól, a baj nem itt van, hiszen az xdotool-t egy sima echo-val is teszteltem, hasonlóképpen bizonytalan volt. Persze, lehet, hogy a Comptonnak van köze ehhez, nem tudom. Viszont hozzá ragaszkodom, mert "olcsón", kis méretű programmal, kevés erőforrás használatával teszi szebbé a desktopot.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nélam fc20 openbox, compton (gyári), skippy-xd (git) és szépen műkszik az xdotool. Mondjuk nem nagyon használom, inkább az Alt+F1 kombót használom, mert nem nagyon egerezek. :D

Hozzáteszem, hogy a compton pl. nem működött, amíg a conky-ban nem állítottam át pár dolgot. Érdekesnek is találtam, hogy a conky (megfogja a rootwint-t?) így megeheti a composite managert reggelire. :D

Szóval a fentiekből kiindulva akármi is okozhatja az xdotool nem működését. :P

Azt tapasztaltam, hogy a kliens egyszer a fifo-n keresztül parancsot ad a daemon-nak, aztán bent marad a memóriában, így másodjára már nem fut. Az az igen erős gyanúm, hogy ezt azért tette, mert az stdout-ot és stderr-t lezárta a klienst hívó xautolock. Amennyiben az xautolock-ot a -noclose paraméterrel hívom, és a shellből irányítom az stdout-ot és stderr-t a /dev/null-ra, úgy jól működik.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nincs ötleted, hogy egy sudo kezdetű parancsom vajon miért nem fut le az Xfce autostart bejegyzésénél (Settings / Session and Startup menü)? visudo-ban engedtem a kérdéses parancsot és egy sima terminálban lefut jól. Egyébként az xdotool-t akarom renice-olni -1 -re. Ez az egyik parancsom:

xdotool behave_screen_edge --delay 10 --quiesce 10 top-left exec sh -c "pkill skippy-xd || ~/bin/skippy-xd/skippy-xd"

Ez a másik:

sudo renice -n -1 -p $(while ! pgrep -n xdotool; do sleep 1; done)

Néha USB-s disk másolásnál meg egyéb műveletnél lassan reagál az xdotool, ezért akarom magasabb prioritással futtatni. "mkdir /tmp/hellooooo" parancs pl. lefut az autostart-nál, ezt teszteltem. Sudo-val viszont semmi. Kikapcsolt SELinux-nál sem. És azt is néztem, hogy a user-emmel akar futni, tehát az sem lehet gond.

Most épp nem találom, de a sudo-nak van olyan opciója, hogy csak terminálról hajlandó futtatni az adott programot, anélkül nem. Ez persze kikapcsolható. Picit néztem, nem találtam meg, de emlékeim szerint van ilyen, mert egyszer én is beleszaladtam ebbe.

Szerk.: Ha jól látom, a requiretty opciónak kell utánanézned. Az is megoldás, hogy írsz egy teszt scriptet, abból sudo-zol tty nélkül, az stderr-t file-ba küldöd, s látni fogod majd, hogy mit panaszkodik. De lehet, hogy simán beírta már most is a logba.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Megnézem, kösz.

Közben teszteltem alacsonyabb nice értékkel az xdotool-t és rosszalkodik olyan szempontból, hogy néha nagyon sokára reagál. Oda húzom a sarokba az egeret, és a skippy-t csak 2-3 másodperccel később futtatja.

Te használod xdotool-t? Nem futottál ebbe bele?

Nem használom, mert nem működött jól. Helyette ez a sor szerepel az autostart scriptemben a live linuxomon:

xautolock -corners '0+00' -cornerdelay 1 -cornerredelay 240 -noclose -locker 'skippy-xd --toggle-window-picker' &>/dev/null &

Ugyanakkor ritkán használom. Úgy értem, a skippy-xd-t. Nem nagyon húzom a sarokba az egeret.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Meg van mit kell módosítani:

$ diff include/config.h*
91c91
< #define CORNER_DELAY 5 /* number of seconds to wait
---
> #define CORNER_DELAY 0 /* number of seconds to wait

Hogy lehetne vajon a Fedora csomagot egyszerűen módosítani hogy egy új csomagot kapjunk amit csak telepíteni kell? Src csomagot kellene kibontani vajon, majd módosítani, visszacsomi, aztán make rpm?

Ha van létező rpm, akkor nem nehéz, mert akkor van *.spec file, amin csak picit kell módosítani. Ebben az esetben igen könnyű rpm-et csinálni. Várj, lehet, ránézek, csak képbe kell kerüljek, az imént értem haza, türelem. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ez az 5 másodperc csak az alapértelmezett érték, forrásból fordítás helyett egyszerűbb a -cornerdelay használata. :) 1 másodperc működik, csak talán a 0 nem, mindjárt ezt is megnézem.

Szerk.: nekem úgy tűnik, 1 sec felbontással csinál akármit. Megjegyzi, mennyi most az idő, hozzáadja azt, mennyi idő múlva kell bármit is csinálni, aztán, ha eljön az az idő, esemény van. Ebből viszont következik, hogy azonnal nem tud esemény lenni. Sőt, mi több, a fő végrehajtó ciklusban van egy sleep (1), amiből egyenesen következik, hogy nem vesz gyakrabban mintát semmiből. Gondolom, nem akartak erőforrás-zabáló daemont csinálni belőle.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Az a helyzet, hogy nagyon rászoktam a sarokba húzás -> exposé szerű dologra Gnome 3 alatt és mindenképpen kell :)

Egyébként nagyon sajnálom hogy nem tudták alacsony erőforrásúra megcsinálni Gnome 3-at, mert nekem nagyon tetszene. De olyan szinten tetű és szaggatós a 6 éves notimon, hogy katasztrófa. A notim meg nem akarom kidobni, mert a 6 évvel ezelőtti bruttó 211 ezer árában csak szarabb vagy majdnem parányival jobb konfigot találtam csak.

Hiába, az Xfce nagyon jó erőforrás szempontból, csak az ablak váltást lenne jó szuperül megoldani.

Te mit mondtál, hogyan oldod meg a munka rendszereden? compiz-zal?

Jé, ilyenem nekem nincs telepítve, a compiz-managert használtam. Ahogy nézem, ennek a compiz-xfce-emerald scriptnek hasonló a célja, mint a compiz-managernek, csak ez rövidebb. Nem baj, mellékhatásként javítottam bugot a másikban, ha nem azt használom, sohasem találom meg a hibát. :)

Mindegy is, annyira mindegy, hogyan indítja az ember a compiz-t, csak menjen. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE