web-dev-qa-db-fra.com

Comment puis-je ajouter un élément personnalisé à l'indicateur de son (et le rendre cliquable plusieurs fois)?

La question d'origine

Sound indicator

L'un des points forts d'Unity réside dans les différents indicateurs standardisés. Je veux personnaliser l'indicateur de son avec une entrée de menu supplémentaire qui exécute un petit script Shell . Je n'ai pas peur d'un petit Python et j'espère que quelqu'un pourra me diriger vers le bon sous-programme dans le bon fichier. Je soupçonne que ce sera assez facile mais tous les indicateurs sont tellement gonflés que je ne peux pas parcourir leur code dans un délai raisonnable.

Toute aide est appréciée. Je sais que c'est possible car le merveilleux Skype-Wrapper le fait.


Edit 2 - Maintenant, un sale hack DBus

Le problème en un clic d'une édition précédente s'est maintenant transformé en un problème DBus. Fondamentalement, nous devons dire à l'indicateur sonore que notre faux lecteur est maintenant terminé. Un hack sale contourne ce problème:

#!/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

L'aide de la communauté est appréciée car je n'en ai aucune expérience avec DBus.


Edit 1 - Takkat a trouvé une solution mais cliquable une seule fois?

Pour une raison quelconque, la solution proposée par Takkat a l'inconvénient que l'entrée résultante dans le son de l'indicateur ne peut être cliquée qu'une fois par session . Si quelqu'un a un correctif, merci de commenter ou de répondre, vous serez voté. Ici vous pouvez voir le résultat:

Sound indicator with script entry

Je soupçonne fortement que le problème est lié au fichier .desktop dans /home/confus/.local/share/application/toggleSpeaker.desktop, c'est-à-dire:

[Desktop Entry]
Type=Application

Name=toggleSpeaker
GenericName=Toggle Speaker

Icon=gstreamer-properties

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

Et voici un exemple minimal du script dans /home/confus/bin/toggleSpeaker.sh pour votre considération:

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

notify-send "Toggle Speaker" "$(date)"
exit 0
4
con-f-use

En exécutant dconf-editor à partir de dconf-toolsInstall dconf-tools nous pouvons incorporer une application de lecteur multimédia compatible MPRIS au menu audio avec la touche "com.canonical.indicator.sound. lecteurs-médias-intéressés ".

enter image description here

Dans l'exemple ici, test a été inclus, ce qui pointe vers un test.desktop fichier dans ~/.local/share/applications où nous pouvons exécuter notre application à partir de Exec= champ. Redémarrez votre session pour prendre effet.

enter image description here

Comme une entrée de ce menu est étroitement liée à un lecteur multimédia, le contrôle de l'application est effectué par le bus de session DBus com.canonical.indicator.sound . C'est pourquoi nous ne pourrons pas relancer un script tant qu'une réinitialisation de l'indicateur n'aura pas été effectuée. J'ai réussi à redémarrer l'application de test après avoir exécuté Shutdown () sur l'objet org/ayatana/indicateur/service mais c'est tout à fait un hack et certainement pas la façon dont le menu de son indicateur devrait être utilisé.

Cela peut cependant indiquer la bonne direction. c'est-à-dire nous devons utiliser DBus pour notre script ou application que nous voulons résider dans le menu indicateur de son .

4
Takkat