OSD визуализация в kmix через dbus
tuupic 12 мая, 2009 - 08:01
Если регулировать в kmix звук через хоткеи, то отображается OSD уведомление.
Но если регулировать через dbus, то нет.
Как-нибудь можно через тот же dbus показать это уведомление?
Через qdbusviewer всё обыскал - не нашёл ничего похожего.
»
- Для комментирования войдите или зарегистрируйтесь
D-BUS
Что-то я не совсем понимаю, о чём здесь речь ведётся ;)
Что за Hotkeys, что за OSD, какое приложение используется?
Если стоят 4-е Кеды, то у них D-BUS - есть основная шина
т.н. межпроцессного взаимодействия. Если же приложение было
написано под 3-и кеды и/или оне стоят, то - какой D-BUS?
Там используется 'Dcop', как я помню.
Речь идёт о том, что как
Речь идёт о том, что как сделать, чтобы при изменении громкости через kmix через dbus, отображался соответствующий индикатор (полоска посреди экрана).
Это вообще не понял о чём
p.s. Подозреваю, что за сим индикатором надо обращаться уже не к kmix. Только вот куда не нашёл.
У меня установлен такой
У меня установлен такой пакетик смешной, okindd. Поищите по форуму, может, оно и пригодится.
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Посмотреть-посмотрю, спасибо.
Посмотреть-посмотрю, спасибо. Но сама суть не в этом.
Обьясню подробнее.
У меня настроена регулировка звука в kmix хоткеями. При увеличении/уменьшении/выключении звука с помощью хоткеев, на экране появляется полоска с уровнем звука(собственно индикатор, встроенный в kde).
Решил сделать также управление звуком с мыши. Сделал через xbindkeys и dbus. То есть через dbus управляю kmix для уменьшения/увеличения громкости. Но при изменении громкости через dbus, индикатора нет. Вот и хочу выяснить как всё-таки его показать, используя dbus
kmix
То есть,ты хочешь, двигая мышкой ползунок громкости в активном окне kmix добиться:
1. Изменения звука.
2. Отображения ещё одного окошка, в котором будет изменяться свойства полоски статуса?
По-моему, события от мыши будет отлавливать лишь открытое окошко kmix, в котором
будет перемещаться ползунок, дальше евент вряд-ли пойдёт... Да и зачем это? Ну, впрочем,
- дело личное...
Никакие ползунки я двигать не
Никакие ползунки я двигать не собираюсь. Я хочу чтобы при регулировании громкости через dbus появляась соответствующая полоска с уровнем звука посреди экрана.
OSD
А это что? (см. выше) - "Решил сделать также управление звуком с мыши. Сделал через xbindkeys и dbus."
Я вообще чейчас ничё не понимаю %) Как ты хочеш с помощью мышки изменять громкость, если никакие
"ползунки" и ещё "чё-нить" не двигать? Должен же быть активный элемент, реагирующий на сигналы от мышки?
Просвети тупого, плизз...
зы: Если на мышке много клавиш и ты хочеш забиндить на некоторые из них увеличение/уменьшение громкости, то
http://www.gentoo.ru/node/11294,
http://www.gentoo.ru/node/15043 - может поможет :)
Просвещаю. Регулировка 100
Просвещаю. Регулировка 100 лет назад уже сделана и забиндена куда надо.
Выполняется команда
qdbus org.kde.kmix /Mixer0 increaseVolume Master:0
Вопрос: Как через dbus отобразить индикатор громкости?
Мышка тут вообще не при чём. Не читайте через слово.
Так понятнее?
xosd+kmile ?
xosd+kmile ?
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
правда, без dbus и
правда, без dbus и kmix
notify-send --icon=sound Volume `aumix -q | grep -oP '(?<=vol\s)\d{1,2}'`
Вообщем, я уже понял что
Вообщем, я уже понял что адекватного ответа не увижу. Я и забил уже давно на это. Но мне непонятно, почему если я прошу подсказать как отобразить _стандартное_ уведомление в kde4, мне советуют поставить туеву хучу прог, которые делают свои нотификации, которые мне абсолютно не нужны? Хотя бы никто не написал "используй гном" или что-либо в этом духе
хоть и без dbus, но
хоть и без dbus, но посмотрите на osdsh
Лично я это _стандартное_
Лично я это _стандартное_ OSD-окошко регулирования видел только в KDE3.5, но не в KDE4 (хотя сама регулировка работала изначально для мультимедийным клавишам). Поэтому для себя решил, что в KDE4 такого просто нет, и решил проблему окольным путём (okindd). Поэтому его и советую.
У меня на ноуте, когда для
У меня на ноуте, когда для регулировки громкости привключенном кде используешь "мультимедиа" клавиши появляется попап с полосочкой этой громкости. Есть подозрение что это вообще HAL+DBUS.
Ну рисовать-то на экране hal
Ну рисовать-то на экране hal не умеет. Что/кто рисует эту полосочку - вот в чём вопрос
что-нибудь типа xosd?
что-нибудь типа xosd?
а есть что-нибудь более
а есть что-нибудь более симпатичное, но не привязанное к kdelibs?
Здесь посмотрите:
Аналог Kmilo для kde4
ebuild получился может и кривенький, но работает.
Хотя это и не "родной" способ (кстати, я родных полосок в kde4 так и не увидел, хотя громкость мультимедийными клавишами по умолчанию регулируется), но выглядит, думаю, не хуже.
P.S. А таким скриптом я регулирую громкость (округляя до 5):
Насклько я смог понять
Насклько я смог понять смысл...
вот что мне выдал dbus-monitor
signal sender=:1.2 -> dest=(null destination) serial=1260 path=/modules/kdedglobalaccel; interface=org.kde.KdedGlobalAccel; member=invokeAction
array [
string "kmix"
string "decrease_volume"
string "KMix"
string "Уменьшить громкость"
]
int64 1126858
но почему то только на глобальный уровень громкости
незнаю может чем то поможет
dest=(null destination)
это смущает, я так понял надо что-то вроде широковешательного сигнала в шину сессии отправить, dbus-send?
Это я видел. Но только не
Это я видел. Но только не понял как использовать.
Вообще dbus сигналы я отправляю через qdbus. Но он говорит, что нету такого сервиса.
Как я понимаю, это выглядеть должно приблизительно так:
qdbus org.kde.KdedGlobalAccel /modules/kdedglobalaccel invokeAction список_параметров.
Но в ответ
Service 'org.kde.KdedGlobalAccel' does not exist.
tuupic написал(а):Это я
Это значит, что служба 'org.kde.kded' на интерфейсе '/modules/kdedglobalaccel' генерирует сигнал 'invokeAction'
А, вот кто к нему подключен и обрабатывает - не знаю...
- - -
Вы не описали цель использования именно Dbus. Поэтому предложу Вам решение, эмулирующее нажатие клавиш определенных по умолчанию в kmix: XF86AudioLowerVolume, XF86AudioRaiseVolume, XF86AudioMute:
Может быть есть более элегантный способ получить ID корневого окна...
Полагаю это Вам подойдет для решения конечной задачи.
xse и xwininfo - есть в портежах.
Это выдаёт требуемый
Это выдаёт требуемый результат. Спасибо. Только как-то медленно работает (или мне кажется).
dbus хотелось бы использовать, так как оно уже есть (не нужно ставить ещё проги)
- - -
Понятное дело, что dbus было бы лучше - если бы оно работало... (-;
Я не долго думал над этим (-; и выдал решение как пример...
- Самый просто вариант оптимизировать - избавиться от perl заменив на cut.
- Вариант чуть посложнее: что бы избавится от xwinfo - во время первого вызова записать id'нтификатор корневого окна в /tmp/некий-условный-номер-kde-сессии и потом извлекать cat'ом.
- Вариант сложный: написать скрипт в виде некоего демона с завершением по таймауту... Ну тут уже надо пять-десять минут думать и двадцать-тридцать писать. (-;
tuupic,Для просмотра и
tuupic,
Для просмотра и тестирования qdbus сигналов есть удобное графическое приложение "qdbusviewer". Там в части
org.kde.VisualNotifications /VisualNotifications есть сигнал
method uint org.kde.VisualNotifications.Notify(QString app_name, uint replaces_id, QString event_id, QString app_icon, QString summary, QString body, QStringList actions, QVariantMap hints, int timeout)
Он выводит сообщение через стандартную систему, правда не графическое типа прогресс-бара, просто текст. Можно, конечно, и громкость в процентах туда приписать.
Вот только из консоли вызвать я его не смог - ругается на параметр QVariantMap hints, не могу понять как его в консоли задать.
Описания таких вещей не смог найти, если кто знает, отпишите пожалуйста как передавать такие параметры при вызове сигнала?