JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
UNIXOID<br />
dbus-send --type=method_call --dest=org.kde.amarok \<br />
/Player org.freedesktop.MediaPlayer.Stop<br />
sleep 5<br />
dbus-send --type=method_call --dest=org.kde.amarok \<br />
/Player org.freedesktop.MediaPlayer.Play<br />
Вывести всю информацию о текущем треке можно следующим образом:<br />
$ qdbus org.kde.amarok /Player GetMetadata<br />
Методы объекта /yakuake/sessions<br />
wget $in<br />
fi<br />
…<br />
Мы сохраняем содержимое буфера обмена в переменной in, а затем<br />
передаем ее программе wget, которая и загружает файл.<br />
Конечно, наш «менеджер загрузок» далек от совершенства. Вопервых,<br />
нужно научить его реагировать и на FTP-адреса. Во-вторых,<br />
если в буфере обмена кроме URL будет еще и произвольный текст,<br />
например, «Ссылка http://server/file», то сценарий завершится с<br />
ошибкой. Тут можно так и оставить (FlashGet тоже не активируется,<br />
если в буфере обмена есть еще что-то, кроме URL), а можно посредством<br />
регулярных выражений выделить URL, и получить его с<br />
помощью wget. В любом случае, все это уже не относится к D-Bus и<br />
буферу обмена, поэтому пусть это будет твоим домашним заданием.<br />
Кроме метода getClipboardContents есть метод setClipboardContents,<br />
устанавливающий содержимое буфера обмена. Использовать его<br />
можно так:<br />
…<br />
if qdbus org.kde.klipper /klipper getClipboardContents |<br />
egrep -q '^(http://)'<br />
then<br />
qdbus org.kde.klipper /klipper setClipboardContents<br />
"Êîïèðîâàòü URL çàïðåùåíî"<br />
…<br />
УПРАВЛЯЕМ ПРОИГРЫВАТЕЛЕМ<br />
AMAROK 2 С ПОМОЩЬЮ D-BUS<br />
Следующие команды аналогичны нажатию кнопок Play, Pause, Next,<br />
Prev, Stop, Quit:<br />
$ dbus-send --type=method_call --dest=org.kde.amarok \<br />
/Player org.freedesktop.MediaPlayer.Play<br />
$ dbus-send --type=method_call --dest=org.kde.amarok \<br />
/Player org.freedesktop.MediaPlayer.Pause<br />
...<br />
$ dbus-send --type=method_call --dest=org.kde.amarok \<br />
/ org.freedesktop.MediaPlayer.Quit<br />
Кстати, у Amarok2 есть поддержка Last.FM, но для этого сервиса<br />
поддерж иваются только методы Stop и Play. Приведу воркэраунд для<br />
пропуска текущей песни:<br />
#!/bin/bash<br />
098<br />
Еще очень полезный метод GetStatus, возвращающий 4 целых числа:<br />
• Первое число: 0 — трек воспроизводится, 1 — пауза, 2 — остановлен;<br />
• Второе число: 0 — последовательное воспроизведение, 1 — случайное<br />
воспроизведение;<br />
• Третье число: 0 — перейти к следующему элементу после воспроизведения<br />
текущего, 1 — повторить текущий элемент;<br />
• Четвертое число: 0 — остановить воспроизведение, как только будет<br />
достигнут последний элемент, 1 — продолжить воспроизведение с начала.<br />
УПРАВЛЕНИЕ ПРОИГРЫВАТЕЛЯМИ<br />
VLC И XMMS<br />
Аналогично можно управлять и другим проигрывателем — VLC. Вот<br />
действие, аналогичное нажатию на кнопку воспроизведения:<br />
$ dbus-send --print-reply --session --dest=org.mpris.<br />
vlc /Player org.freedesktop.MediaPlayer.Play<br />
Как только я начал свое знакомство с Linux, лучшим медиа-проигрывателем<br />
для него был XMMS. Отчасти его популярность заключалась во<br />
внешней схожести с популярным в то время Winamp. Недавно наткнулся<br />
на полное описание D-Bus интерфейса современной версии XMMS<br />
(XMMS 2): http://xmms2.org/wiki/MPRIS#D-Bus. Если тебе нравится<br />
XMMS 2, то эта ссылка будет весьма полезной для тебя.<br />
ИНТЕРФЕЙС ORG.FREEDESKTOP.<br />
MEDIAPLAYER (MPRIS 1.0 DBUS API)<br />
Все популярные проигрыватели, такие как Amarok, VLC, XMMS, Audacious,<br />
BMPx, используют интерфейс MPRIS. Следовательно, можно написать<br />
универсальный сценарий управления проигрывателями, в качестве параметра<br />
которому передавать название плеера. Берем команду dbus-send и<br />
вместо значения параметра '--dest' указываем своего фаворита:<br />
$ dbus-send --type=method_call --dest=ïðîèãðûâàòåëü \<br />
/Player org.freedesktop.MediaPlayer.Play<br />
Далее все стандартно. Управление проигрывателем осуществляется<br />
через интерфейс org.freedesktop.MediaPlayer объекта /Player. А управление<br />
списком композиций — через объект /TrackList.<br />
РЕГУЛИРОВКА ГРОМКОСТИ<br />
Установить уровень громкости можно с помощью метода VolumeSet:<br />
$ dbus-send --type=method_call --dest=ïðîèãðûâàòåëü \<br />
/Player org.freedesktop.MediaPlayer.VolumeSet çíà÷åíèå<br />
Значение может быть в диапазоне 0…100. 0 — звук выключен, 100 — максимальная<br />
громкость. Например:<br />
$ qdbus org.kde.amarok /Player VolumeSet 90<br />
Узнать текущее значение громкости можно методом VolumeGet.<br />
А ЧТО ДАЛЬШЕ?<br />
ИЛИ МЕТОД НАУЧНОГО ТЫКА<br />
С помощью D-Bus можно управлять практически любым современным<br />
графическим Linux-приложением. Поскольку я не могу читать твои мыс-<br />
XÀÊÅÐ 09 /140/ 10