Недавно, всвязи с некоторой неприятностью, я чисто случайно узнал про такую штуку как DCOP. Попробовав ее в деле, я узрел довольно интересный функционал, коим хочу поделиться с читателями, которые выбрали в качестве своего "жизненного пути" KDE 3.5. В унылом KDE 4 этот модуль заменили на D-Bus, на который мне срать. Итак, товарищи красноглазики, начинаем:

Обратимся к вики, так как более точных определений сложным понятиям никто не даст. DCOP (от Desktop COmmunication Protocol) — легковесная система коммуникации процессов, а также программных компонентов. Основная цель этой системы — обеспечивать межпроцессное взаимодействие и распределять сложные задачи. Таким образом DCOP — система управления, позволяющая приложениям или скриптам использовать другие приложения.

Почти в любом приложении поддерживаются минимальные интерфейсы DCOP. Приложения самого KDE, естественно, поддерживают их в большем объеме, именно они нам интересны. Приложения не KDE имеют как минимум команду закрытия, что обычно от них и требуется. Существует консольная утилита `dcop`, которой мы и будем все делать. Так же есть гуевый `kdcop`, но смысла использовать его нет, так как он не позволяет даже соединяться по SSH, а это одна из самых отличных возможностей DCOP. Но можно его использовать в качестве справочника, если вы любитель клацать мышкой. Консольный `dcop`, к слову, обладает всеми возможностями.

Команды DCOP записываются через пробел. Если команда не закончена, выдается список возможных окончаний. Например для смены обоев в списке обоев KDE можно воспользоваться одной из строчек

dcop kdesktop KBackgroundIface changeWallpaper

dcop kdesktop KBackgroundIface currentWallpaper 1

Чаще всего необходимо переключать музыку в любимом amarok, не вставая с кровати, или же переключать музыку на удаленной машине. Хочу сказать, что использование DCOP по SSH немного отличается от простого десктопного. Отличие заключается в том, что перед командой вызова dcop необходимо определить дисплей. Делается это приписыванием DISPLAY=:0 перед командой. Что-то типа того:

DISPLAY=:0 dcop amarok player play

Список команд плеера amarok доступен по dcop amarok player. Там их действительно много, все приводить не буду. Можно полностью управлять плеером, останавливать, перематывать, выводить название трека, год, исполнителя, мешать плейлист и еще много всего интересного. И не забываем про DISPLAY=:0, когда делаем это по SSH.

Несколько неплохих штук у амарока:

dcop amarok player nowPlaying - выводит текущую композицию

dcop amarok player coverImage - скажет адрес, где найти текущую обложку

dcop amarok player volumeUp (volumeDown) - повысить(понизить) громкость

dcop amarok player lyrics - вывести текст играющей песни

(если включен Lyrc и он активен)

themylogin — 23.02.2009 - 11:57 [192.168.0.3]
Кстати dbus прогрессивнее, хотя бы потому что не завязан на kde, да и вообще стандарт freedesktop.org. Правда не такой простой и уютный как dcop.
GreatCornholio — 24.02.2009 - 07:18 [10.204.60.69]
Надо будет порыться... удобно.
GreatCornholio — 23.03.2009 - 04:13 [10.204.60.69]
Из крона и DCOP-а рождается неплохой будильник). А написав простенький скриптик(по смене недели с чётной на нечётную) получается неплохой будильник до конца семестра.

вот пример скрипта change.sh, думаю, есть пути рационалнее

#!/bin/bash

if cmp week1 week &> /dev/null # Подавление вывода.
then cat week2>week
else cat week1>week
fi

crontab week

мой wake.sh :
#!/bin/bash
DISPLAY=:0 dcop amarok player play

мой week1:

#week1
0 6 * * 1 /home/cornholio/wakesc/wake.sh
0 6 * * 2 /home/cornholio/wakesc/wake.sh
0 6 * * 3 /home/cornholio/wakesc/wake.sh
0 7 * * 4 /home/cornholio/wakesc/wake.sh
0 7 * * 5 /home/cornholio/wakesc/wake.sh
40 6 * * 6 /home/cornholio/wakesc/wake.sh
0 22 * * 0 /home/cornholio/wakesc/change.sh


week2 аналогичен.
GreatCornholio — 23.03.2009 - 04:16 [10.204.60.69]
замечания по коду приветствуются)
refresh

(не заполняйте это поле)

i