Frage Wie kann ich der Sound-Anzeige ein benutzerdefiniertes Element hinzufügen (und es mehr als einmal klickbar machen)?


Die ursprüngliche Frage

Sound indicator

Eine der Stärken von Unity sind die verschiedenen standardisierten Indikatoren. Ich möchte Passen Sie die Soundanzeige mit einem zusätzlichen Menüeintrag an, der ein kleines Shell-Skript ausführt. Ich habe keine Angst vor einem kleinen Python-Code und ich hoffe, dass jemand mich auf die richtige Subroutine in der richtigen Datei verweisen kann. Ich vermute, dass das ziemlich einfach sein wird, aber alle Indikatoren sind so aufgebläht, dass ich ihren Code nicht in einer vernünftigen Zeit durchsehen kann.

Jede Hilfe wird geschätzt. Ich weiß, dass es als das Wunderbare möglich ist Skype-Wrapper macht es.


Edit 2 - Jetzt ein schmutziger DBus-Hack

Das Ein-Klick-Problem von einer Bearbeitung zuvor ist nun zu einem DBus-Problem geworden. Grundsätzlich müssen wir dem Sound-Indikator mitteilen, dass unser gefälschter Spieler jetzt beendet ist. Ein schmutziger Hack navigiert um dieses Problem:

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

Hilfe von der Community wird geschätzt, da ich keinerlei Erfahrung mit DBus habe.


Edit 1 - Takkat hat eine Lösung gefunden, aber nur einmal anklickbar?

Aus irgendeinem Grund Lösung vorgeschlagen von Takkat hat den Nachteil, dass die Der sich daraus ergebende Eintrag im Hinweiston kann nur einmal pro Sitzung angeklickt werden. Wenn jemand einen Fix für, als bitte Kommentar oder Antwort hat, werden Sie upvoted. Hier können Sie das Ergebnis sehen:

Sound indicator with script entry

Ich vermute stark die Das Problem hängt mit der .desktop-Datei zusammen im /home/confus/.local/share/application/toggleSpeaker.desktop, was ist das:

[Desktop Entry]
Type=Application

Name=toggleSpeaker
GenericName=Toggle Speaker

Icon=gstreamer-properties

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

Und hier ist ein minimales Beispiel des Skripts im /home/confus/bin/toggleSpeaker.sh für Ihre Überlegung:

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

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

4
2017-08-28 19:38


Ursprung


Junge, das wird wirklich zu einem echten Schmerz im Fond. Es fehlt an Dokumentations- und Hilfsmitteln. Es scheint auch, dass Unity solche Anpassungen unnötig kompliziert gemacht hat. - con-f-use


Antworten:


Durch Laufen Dconf-Editor von dem Dconf-Werkzeuge  Install dconf-tools wir können eine MPRIS complatible einbauen Media Player Anwendung auf das Sound-Menü mit der Taste "com.canonical.indicator.sound.interessed-media-players".

enter image description here

Im Beispiel hier test wurde aufgenommen, was auf a zeigt test.desktop Datei in ~/.local/share/applications wo können wir unsere Anwendung von der Exec= Feld. Starten Sie die Sitzung neu, damit sie wirksam wird.

enter image description here

Da ein Eintrag in diesem Menü eng mit einem Medienplayer verbunden ist, erfolgt die Anwendungssteuerung über den DBus-Session-Bus com.canonical.indicator.sound. Aus diesem Grund können wir ein Skript erst dann erneut ausführen, wenn das Kennzeichen zurückgesetzt wurde. Es ist mir gelungen, die Testanwendung nach der Ausführung neu zu starten Herunterfahren() auf der org / ayatana / Indikator / Dienst Objekt, aber das ist ein ziemlich hack und definitiv nicht die Art, wie das Indikator-Sound-Menü verwendet werden sollte.

Es kann jedoch in die richtige Richtung zeigen. d.h. Wir müssen DBus für unser Skript oder Anwendung verwenden, die wir im Soundindikatormenü haben wollen.


4
2017-08-28 22:00



Um ein Icon zu erhalten, muss der Launcher den Icon= Eigenschaft eingestellt. Nächste kleine Frage: Für mich wird das Skript in jeder Sitzung genau einmal ausgeführt. Weitere Klicks auf den Eintrag werden einfach ignoriert. Hast du eine Idee, warum das so ist? - con-f-use
Nun habe ich die Aktie angepasst .desktop Datei von kühnen Hexe sagte Icon=audacious und das Audacious-Symbol in meinem benutzerdefinierten Indikatoreintrag angezeigt. Das Run Once Problem könnte mit meiner Anpassung des kühnen Launcher verbunden sein. Könntest du den Code von dir posten? .desktop? Ich habe meins gepostet. - con-f-use
Danke vielmals. Kannst du deinen Code posten? Ich habe noch nie mit DBus gearbeitet. - con-f-use
Vergiss es, das hat es für mich aus einem Terminal geschafft: qdbus com.canonical.indicator.sound /org/ayatana/indicator/service org.ayatana.indicator.service.Shutdown. Obwohl ich keine Ahnung habe, was ich mache. Arbeiten Sie an einer orthodoxen Lösung? Wenn ja, kannst du es bitte in einfachen Worten erklären, während du dabei bist. Ihre Hilfe wurde sehr geschätzt! Danke vielmals! - con-f-use
Das gleiche hier - ich habe keine Ahnung, was wir sonst noch damit beenden könnten. Eine bessere Lösung wäre, eine Anwendung / ein Skript zu schreiben, das von DBus gesteuert wird - ich denke, das ist viel mehr Arbeit. - Takkat