Logout script Xfce környezetben

Zenehallgatásra MPD-t használok, mert csak. Ugyanakkor a PulseAudio hangszerver felhasználónként indul. Ezzel az a gond, hogy belép az egyik felhasználó, elindul a hangszerver, autostart scriptből indul az MPD, csatlakozik a hangszerverhez. Kijelentkezéskor jó volna kinyiffantani az MPD-t és a hangszervert, hiszen ezek nélkül a másik felhasználó belépésekor indul ugyan hangszerver másik példánya, de a másik felhasználó MPD-je már nem a második hangszerverhez szokott kapcsolódni. Arról nem is beszélve, hogy ha több MPD fut, hova csatlakozik vajon a Sonata kliens? Tehát kellene logout script.

Létrehoztam /usr/local/share alá egy Xfce nevű alkönyvtárat, ebbe pedig két scriptet írtam. Az egyiket xinitrc névvel, tartalma ez lett:

#!/bin/bash

SYS_XINITRC='/etc/xdg/xfce4/xinitrc'
BASE="$HOME/.config/xfce4"
LOCAL_XINITRC="$BASE/xinitrc.sys"
LOGOUT_SCRIPT="$HOME/.Autostart/logout"

if [ -r "$SYS_XINITRC" ]; then
    cp -f "$SYS_XINITRC" "$LOCAL_XINITRC"
    chmod 0755 "$LOCAL_XINITRC"
fi
if "$LOCAL_XINITRC"; then
    [ -r "$LOGOUT_SCRIPT" -a -x "$LOGOUT_SCRIPT" ] && "$LOGOUT_SCRIPT"
fi
exit

Erre a scriptre minden user $HOME/.config/xfce4 alkönyvtárából csináltam egy symlinket xinitrc névvel. Így elértem, hogy az Xfce session indulásakor a saját scriptem fut.

A fenti script bemásolja a $HOME/.config/xfce4 helyre a globális, disztribúció által szállított xinitrc-t xinitrc.sys névvel, majd futási jogot ad rá. Ezután meghívja. Az Xfce session futása alatt ebben a scriptben várakozunk, csak logout esetén tér vissza. Amennyiben hiba nélkül futott, a logout script kerül hívásra. Ennek helye ízlés dolga. Én szintén a /usr/local/share/Xfce alá tettem, majd a $HOME/.Autostart helyről hivatkozom rá. A logout scriptem tartalma:

#!/bin/bash

killall -w -u "$USER" mpd
killall -u "$USER" pulseaudio
exit 0

Hozzászólások

Erről az MPD-ről írhatnál egy keveset: mennyire stabil, van-e valamilyen zavaró hibája, stb. Gondolkodom, hogy egy régi távirányított XMMS-en (a GTK 1.2-est használó) alapuló rendszert modernizálnék MPD+Glurp-ra. Igazából a program kész, csak kíváncsi vagyok, hogy mennyire járok rosszul.

Van egy-két olyan igény, amiért a Sonata nem felelt meg, viszonylag speciális környezetbe kell(het).
Például az, hogy natív C/C++ legyen. Meg az, hogy pár alapdolgon kívül mást ne tudjon (minél egyszerűbb legyen, lehetőleg kevés elrontási lehetőséggel), de azt viszont igen.