Controlando as atividades do KDE via dbus
O KDE pode ser controlado a partir da linha de comando com qdbus
. A sintaxe geral é qdbus COMPONENT PATH METHOD ARGUMENT1...
, em que COMPONENT
é tipicamente algo como org.freedesktop.Foo
ou org.kde.Bar
, PATH
denota uma classe exposta pelo componente, METHOD é o nome de uma determinada ação nessa classe e pode haver argumentos adicionais dependendo do método.
Aqui estão os comandos para o KDE ≥4,7 para listar atividades, para obter a atividade atual e para definir a atividade atual.
qdbus org.kde.kactivitymanagerd /ActivityManager org.kde.ActivityManager.ListActivities
qdbus org.kde.kactivitymanagerd /ActivityManager org.kde.ActivityManager.CurrentActivity
qdbus org.kde.kactivitymanagerd /ActivityManager org.kde.ActivityManager.SetCurrentActivity "activity identifier "
Descobrir o que o dbus pode fazer
A documentação do dbus do KDE é muito pobre. Cada aula é minimamente documentada, por ex. Atividade , DesktopCorona ). Mas você provavelmente terá que experimentar e talvez ler a fonte (há links nas páginas de documentação da API) para descobrir o que está disponível.
Se você digitar qdbus
com até dois argumentos, ele listará as possibilidades do próximo argumento. O seguinte trecho de shell lista todos os métodos Qt-dbus disponíveis:
for x in $(qdbus | sed '/^:/d'); do
for y in $(qdbus $x); do
qdbus $x $y | sed "s~^~$x $y ~"
done
done 2>/dev/null >qdbus.list
Outra maneira de explorar a árvore dbus é qdbusviewer
nas ferramentas de desenvolvimento do Qt. Há também uma interface qt-dbus do Python como parte do PyQt .
Fazendo a casca reagir
Para fazer um shell reagir a eventos externos, o melhor que você pode razoavelmente fazer é verificar algo antes de exibir um prompt. Bash executa $PROMPT_COMMAND
antes de exibir um prompt e zsh executa a função precmd
. Então você pode procurar a atividade atual do KDE e fazer algo se for alterado desde a última vez que você olhou.