Kopete и DCOP

Марущенко Дмитрий yojick на v.gz.ru
Чт Сен 20 12:49:58 BST 2007


В сообщении от 20 сентября 2007 Vyacheslav Karamov написал(a):
> Пришлите обязательно. Я задавал подобный вопрос, но я не знаю до сих пор
> ничего про DCOP.
> Интересно будет посмотреть. Ну и подскажите, пожалуйста, где можно
> почитать об этом?
>
> Марущенко Дмитрий пишет:
> > Кстати, кому нужно, могу прислать скрипт, ради которого всё и было
> > затеяно: управление амароком через аську :)

Не судите строго, первый опыт программирования на bash =)
Если есть советы и исправления - высказывайте :)


$ cat ~/.kde/share/apps/kopete/amarok_ctrl.sh
---------------------------------------------

#!/bin/sh

str=$1
dname=`expr match "$str" '.*сообщение от \(.*\)<br>'`
cmd=`expr match "$str" '.*amarok \([a-z]*\)'`
uins=`dcop kopete KopeteIface contactsForDisplayName "$dname"`

sendicqmsg()
{
    message=$1
    for rcvr in $uins; do
        numbers=`expr match "$rcvr" '[0-9]*'`
        if [ $numbers -gt 5 ];
            then dcop kopete KopeteIface messageContact $rcvr "$message"
        fi
    done
}

case $cmd in
    prev)
        dcop amarok player prev
        nowplaying=`dcop amarok player nowPlaying`
        sendicqmsg "Now playing: $nowplaying"
        ;;
    next)
        dcop amarok player next
        nowplaying=`dcop amarok player nowPlaying`
        sendicqmsg "Now playing: $nowplaying"
        ;;
    stop)
        dcop amarok player stop
        sendicqmsg "Stopped."
        ;;
    play)
        dcop amarok player play
        nowplaying=`dcop amarok player nowPlaying`
        sendicqmsg "Now playing: $nowplaying"
        ;;
    pause)
        dcop amarok player playPause
        sendicqmsg "Pause toggled."
        ;;
    now)
        nowplaying=`dcop amarok player nowPlaying`
        sendicqmsg "Now playing: $nowplaying"
        ;;
    volumeup)
        dcop amarok player setVolumeRelative +20
        volume=`dcop amarok player getVolume`
        sendicqmsg "Current volume is: $volume"
        ;;
    volumedown)
        dcop amarok player setVolumeRelative -20
        volume=`dcop amarok player getVolume`
        sendicqmsg "Current volume is: $volume"
        ;;
    mute)
        dcop amarok player mute
        sendicqmsg "Mute toggled."
        ;;
    volume)
        volume=`dcop amarok player getVolume`
        sendicqmsg "Current volume is: $volume"
        ;;
    help)
        sendicqmsg "usage:amarok [help|prev|next|stop|pause|play|now|volume|volumeup|volumedown|mute]"
esac

--------------------------------

Как пользоваться: сохраняем этот скрипт, делаем исполняемым и в kopete в настройках уведомлений
на событие "Входящее сообщение" ставим запуск этой программы с параметром %s.
У меня строка запуска такая: ~/.kde/share/apps/kopete/amarok_ctrl.sh %s


Подробная информация о списке рассылки ubuntu-ru