( locsemege | 2014. 08. 12., k – 21:03 )

Az ígért wrapper script. A /usr/local/bin-be kell rakni, fontos, hogy seren legyen a neve!

#!/bin/bash

PRG='seren'
TITLE='Seren'
MESSAGE="A <b>$TITLE</b> már fut egy példányban!"
ICON='/usr/local/share/pixmaps/ihubig.png'
TIMEOUT=10
BITRATE=24000
ID_FILE="/tmp/$USER-seren.winid"

if [ -f "$ID_FILE" ] && read <"$ID_FILE"; then
    wmctrl -ia "$REPLY" && exit 0
    rm -f "$ID_FILE"
fi
if [ `pgrep -cu "$USER" -x "$PRG"` -gt 1 ]; then
    if type -p notify-send >/dev/null; then
        notify-send -t $((TIMEOUT*1000)) -i "$ICON" "$TITLE" "$MESSAGE"
    else
        yad --title="$TITLE" --timeout=$TIMEOUT --button 'OK:0' --text="$MESSAGE"
    fi
    exit 1
fi
alltray -i "$ICON" "xfce4-terminal -e \"/bin/bash -c 'PULSE_PROP=filter.want=echo-cancel /usr/bin/$PRG -S -b $BITRATE; rm -f $ID_FILE'\"" &>/dev/null &
while :; do
    WIN_ID="`wmctrl -l | grep 'Termin[aá]l (AllTray)'`"
    if [ ! -z "$WIN_ID" ]; then
        WIN_ID=`cut -d' ' -f1 <<<"$WIN_ID"`
        break
    fi
    sleep 0.5
done
echo "$WIN_ID" >"$ID_FILE"
wmctrl -ir $WIN_ID -N "$TITLE"
exit 0

A kódban vannak csúnya részek, de bizonyos információkhoz nem tudtam hozzájutni. Például még nem létező ablaknak nincs azonosítója. :) Ettől függetlenül nagyon jól használható. Baj akkor lehet, ha másik terminálos alkalmazást is dokkolni akarunk az alltray-jel.

Értelemszerűen a $ICON valami telefonnal kapcsolatos ikon file legyen. Visszhangelnyomásról a pulseaudio hangszerver gondoskodik.

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