Questão Como posso adicionar um item personalizado ao indicador de som (e torná-lo clicável mais de uma vez)?


A pergunta original

Sound indicator

Uma das forças da Unity são os vários indicadores padronizados. eu quero personalizar o indicador de som com uma entrada de menu adicional que executa um pequeno script de shell. Eu não tenho medo de um pequeno código Python e espero que alguém possa me apontar para a sub-rotina correta no arquivo correto. Eu suspeito que será bastante fácil, mas todos os indicadores estão tão inchados que eu não posso olhar através de seu código em um tempo razoável.

Qualquer ajuda é apreciada. Eu sei que é possível como o maravilhoso Skype-Wrapper faz isso.


Editar 2 - Agora um ataque DBus sujo

O problema de um clique de uma edição antes agora se transformou em um problema DBus. Basicamente, temos que dizer ao indicador de som que o nosso falso jogador terminou agora. Um hack sujo navega em torno desse problema:

#!/bin/bash
# This is '/home/confus/bin/toggleSpeaker.sh'

notify-send "Toggle Speaker" "$(date)"
qdbus \
    com.canonical.indicator.sound  \
    /org/ayatana/indicator/service \
    org.ayatana.indicator.service.Shutdown
exit 0

A ajuda da comunidade é apreciada, pois não tenho experiência alguma com o DBus.


Editar 1 - Takkat encontrou uma solução, mas apenas clicável uma vez?

Por alguma razão, o solução proposto por Takkat tem a desvantagem de que o entrada resultante no som do indicador só pode ser clicada uma vez por sessão. Se alguém tiver uma correção para, por favor, comente ou responda, você será votado para cima. Aqui você pode ver o resultado:

Sound indicator with script entry

Eu suspeito fortemente que problema está relacionado com o arquivo .desktop dentro /home/confus/.local/share/application/toggleSpeaker.desktopque é isto:

[Desktop Entry]
Type=Application

Name=toggleSpeaker
GenericName=Toggle Speaker

Icon=gstreamer-properties

Exec=/home/confus/bin/toggleSpeaker.sh
Terminal=false

E aqui está um exemplo mínimo do script dentro /home/confus/bin/toggleSpeaker.sh para sua consideração:

#!/bin/bash
# This is '/home/confus/bin/toggleSpeaker.sh'

notify-send "Toggle Speaker" "$(date)"
exit 0

4
2017-08-28 19:38


origem


Garoto isso realmente se transforma em uma dor real na parte traseira. Há uma falta de documentação e recursos de ajuda. Também parece que o Unity fez personalizações deste tipo desnecessárias complicadas. - con-f-use


Respostas:


Correndo dconf-editor de dconf-tools  Install dconf-tools podemos incorporar um MPRIS compatível reprodutor de mídia aplicação ao menu de som com a tecla "com.canonical.indicator.sound.interested-media-players".

enter image description here

No exemplo aqui test foi incluído que aponta para um test.desktop arquivo em ~/.local/share/applications onde podemos executar nossa aplicação do Exec= campo. Reinicie sua sessão para entrar em vigor.

enter image description here

Como uma entrada neste menu está intimamente relacionada a um media player, o controle de aplicativos é feito pelo barramento de sessão DBus com.canonical.indicator.sound. É por isso que não poderemos executar novamente um script até que uma redefinição do indicador seja concluída. Consegui reiniciar o aplicativo de teste depois de executar Desligar() no org / ayatana / indicador / serviço objeto, mas isso é um truque e definitivamente não é o modo como o menu de som do indicador deve ser usado.

Pode, no entanto, apontar para a direção certa. isto é precisamos usar o DBus para nosso script ou aplicativo que desejamos residir no menu do indicador de som.


4
2017-08-28 22:00



Para obter um ícone, o lançador deve ter o Icon= conjunto de propriedades. Próxima pequena pergunta: Para mim, o script é executado exatamente uma vez em cada sessão. Cliques adicionais na entrada são ignorados. Você tem uma ideia do porquê disso? - con-f-use
Bem eu adaptei o estoque .desktop arquivo de bruxa audaciosa disse Icon=audacious e que exibia o ícone do Audacious na minha entrada do indicador personalizado. O problema de execução uma vez pode estar conectado à minha adaptação do lançador audacioso. Você poderia postar o código do seu .desktop? Eu postei o meu. - con-f-use
Muito obrigado. Você pode postar o código? Eu nunca trabalhei com o DBus antes. - con-f-use
Nevermind, isso fez isso por mim de dentro de um terminal: qdbus com.canonical.indicator.sound /org/ayatana/indicator/service org.ayatana.indicator.service.Shutdown. Embora eu não tenha ideia do que estou fazendo. Você está trabalhando em uma solução ortodoxa? Se sim, você poderia, por favor, explicar em termos simples, enquanto você está nisso. Sua ajuda foi muito apreciada! Muito obrigado! - con-f-use
Mesmo aqui - eu não tenho idéia do que mais poderíamos desligar por isso. Uma solução melhor seria escrever um aplicativo / script que seja controlado pelo DBus - eu acho que isso é muito mais trabalho. - Takkat