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.