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