Ist es möglich, die Reihenfolge der Symbole im Indikator-Applet zu ändern?

49

Ist es möglich, die Reihenfolge der Symbole im Indikator-Applet zu ändern? Mit Tomboy-Indikator, Wetter-Indikator, Zwischenablage-Manager-Indikator, Ubuntu One- und Dropbox-Indikator und einem Batteriestatus-Indikator neben dem klassischen Nachrichten-Indikator und dem Sound-Menü-Indikator ist mein Indikator-Applet ein bisschen durcheinander, und das Sortieren der Symbole würde viel helfen ...

plopp
quelle
1
Keine Antwort, aber unter kde (kubuntu) kann ich fast alles auf dem Desktop und im Bedienfeld platzieren oder entfernen, einschließlich Anzeigen.
Joe

Antworten:

29

Die Systemkennzeichen sind in einer festgelegten Reihenfolge angeordnet. Die Bestellung gefällt Ihnen vielleicht nicht, aber sie erleichtert den Support durch eine feste Bestellung (wir können uns endlos über die Bestellung streiten). Die Anwendungsindikatoren funktionieren ein bisschen anders. Sie sind so konzipiert, dass es eine Standardreihenfolge gibt, die Anwendungen jedoch aus Gründen der Kontinuität anpassen können. Zum Beispiel, wenn eine Anwendung zwei Indikatoren hatte, die sie nebeneinander haben wollte.

Da dieses System zu einem möglichen Missbrauch durch Anwendungsentwickler führt, gibt es eine Reihe von Überschreibungen im System. Die erste ist auf Systemebene, sodass sie von Paketen verwaltet werden kann, sobald die Distribution feststellt, dass es sich um eine missbräuchliche Anwendung handelt, die für alle Benutzer behoben werden kann. Es befindet sich in:

   /usr/share/indicator-application/ordering-override.keyfile

Sie können eine beliebige Statusbenachrichtigungs-ID eingeben und ihr einen neuen Bestellindex zuweisen, der den neuen Index für diese Anwendung enthält. Es gibt auch eine benutzerspezifische Überschreibungsdatei, die in Ihrem Ausgangsverzeichnis unter folgender Adresse vorhanden sein kann:

  ~/.local/share/indicators/application/ordering-override.keyfile

Hoffentlich hilft Ihnen das dabei, Ihr Panel nach Ihren Wünschen anzupassen!

Ted Gould
quelle
Ich habe die Systemanzeigen in der ersten Datei aufgelistet. Habe aber kein ~/.local/share/indicatorsVerzeichnis. Hilfe!
Charlie
2
Diese Antwort ist wahrscheinlich veraltet, ich habe keine solche Datei in ~/.local. Die Datei at /usr/shareenthält keine Einträge für alle Indikatoranwendungen und das Ändern hat keine Auswirkungen. Es wäre schön, eine Antwort für den 14.04 zu haben.
Luís de Sousa
1
Es funktioniert mit Ubuntu 14.04, Sie müssen nur jeden Indikator, den Sie verwenden, explizit zur Datei hinzufügen. Führen Sie diesen Befehl aus, um herauszufinden, welche Sie verwenden: dbus-send --type=method_call --print-reply --dest=com.canonical.indicator.application /com/canonical/indicator/application/service com.canonical.indicator.application.service.GetApplications | grep "object path" | sed 's/_/-/g' | cut -d"/" -f5Bei Dropbox funktioniert dies jedoch nicht, da sich die Statusbenachrichtigungs-ID basierend auf der PID der Dropbox ändert. Ich habe unten eine Antwort hinzugefügt, um die ordering-override.keyfile basierend auf der PID von Dropbox zu aktualisieren.
Gruzzles
Funktioniert das für den 15.04? Ich habe die Datei in erstellt .local, sehe sie jedoch nicht. Die ursprüngliche globale Datei in /usr/shareist vorhanden, was darauf hindeutet, dass sie funktionieren sollte. Wird das Parsen dieser Datei irgendwo protokolliert? Gibt es eine Möglichkeit zum Debuggen, wenn etwas schief geht?
Jean Jordaan
@ ted-gould Kannst du den Code in der Indikator-Applet-Quelle bestimmen, der die Reihenfolge festlegt?
Khurshid Alam
17

Die offiziellen Ubuntu (Wetter, Ubu-One, Batterie, Nachrichten, ich, Ton, Herunterfahren) sind fest codiert. Saugt. Die anderen sollten ihre Bestellung nach dem Gesetz des Vorrangs von rechts nach links ausführen. Nach diesem Brainstorming / Feature Request lautet die Antwort: Nein, Sie können die Reihenfolge der Symbole nicht manuell über die Benutzeroberfläche ändern. Aber siehe @ Ted Goulds Antwort.

djeikyb
quelle
1
Ich habe mir auch diesen Bug zugelegt. Schöner Fund. Vielen Dank.
Scaine
11

Um die Position der Anwendungsindikatoren im Unity-Bedienfeld zu ändern, müssen Sie eine Datei mit dem Namen bearbeiten, ordering-override.keyfiledie sich unter befindet /usr/share/indicator-application. Da durch das Bearbeiten dieser Datei die Einstellungen für alle Benutzer geändert werden, können Sie sie kopieren ~/.local/share/indicators/application/ordering-override.keyfileund nur für Ihren Benutzer ändern:

mkdir -p ~/.local/share/indicators/application
cp /usr/share/indicator-application/ordering-override.keyfile ~/.local/share/indicators/application/

Öffnen Sie nun die Datei, indem Sie den folgenden Befehl in einem Terminal ausführen:

gedit ~/.local/share/indicators/application/ordering-override.keyfile

In dieser Datei sollten Sie die vorhandenen Regeln für die Reihenfolge der Anwendungsindikatoren auf dem Bedienfeld sehen. Der erste ist nm-appletund hat den Wert "1", was bedeutet, dass dies der erste Anwendungsindikator ist, der von rechts nach links auf dem Bedienfeld angezeigt wird.

Anhand dieses Beispiels können Sie Ihre eigenen Anwendungsindikatoren hinzufügen und ihre Position angeben, indem Sie ihren Namen und eine Zahl wie transmission=6die eingeben, die bewirkt, dass der Getriebeanwendungsindikator als sechster Indikator auf dem Bedienfeld angezeigt wird (von rechts nach links), wenn die anderen 5 Indikatoren existieren.

Quelle: http://www.webupd8.org/2011/06/how-to-change-application-indicators.html

In Ihrem Fall sollte die ordering-override.keyfileDatei nun so aussehen:

[Ordering Index Overrides]
nm-applet=1
My_Weather_Indicator=2
lang_indicator=3
bluetooth_manager=4
indicator_sysmonitor=5
transmission=6
Radu Rădeanu
quelle
1
@James Dies gilt natürlich auch für anwendungsbezogene Indikatoren, da die Übertragung als Beispiel dient.
Léo Lam
Funktioniert das für den 15.04? Ich habe die Datei in erstellt .local, sehe sie jedoch nicht. Die ursprüngliche globale Datei in /usr/shareist vorhanden, was darauf hindeutet, dass sie funktionieren sollte. Wird das Parsen dieser Datei irgendwo protokolliert? Gibt es eine Möglichkeit zum Debuggen, wenn etwas schief geht?
Jean Jordaan
Nachdem kill $(pgrep unity-panel-service)dies funktioniert :-) Ich habe nach dem Erstellen des neu gestartet ordering-override.keyfile, damit ich nicht weiß, warum es nach diesem Panel-Neustart "gedauert" hat.
Jean Jordaan
Diese Art des Neustarts des Panels root@laptop:~# restart unity-panel-servicefunktioniert nicht mehr:restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Jean Jordaan
4

Anweisungen zum Aktivieren der Sortierung der Dropbox-Anzeige

Befolgen Sie dann die Anweisungen von Ted Gould, wenn Sie die Dropbox-Anzeige sortieren möchten, und führen Sie die folgenden Schritte aus:

Hinweis : Wenn Sie die Datei in bearbeitet /usr/share/...haben, müssen Sie das Skript in /etc/rc.local(suchen Sie nachAnmerkung unten)

Da Dropbox die PID an den Anzeigenamen anfügt und diese bei jedem Start von Dropbox ändert, müssen Sie die PID bei jedem Start von Dropbox aktualisieren ordering-override.keyfile.

Dazu können Sie einen Texteditor öffnen, das folgende Skript kopieren und einfügen und es mit einem Namen versehen start-dropbox.sh. Klicken Sie dann entweder mit der rechten Maustaste, wählen Sie "Eigenschaften", wechseln Sie zur Registerkarte "Berechtigungen" und aktivieren Sie das Kontrollkästchen "Datei als Programm ausführen lassen", oder öffnen Sie ein Terminal, navigieren Sie zu dem Ordner, in dem Sie das Skript abgelegt haben, und führen Sie run aussudo chmod 755 ./start-dropbox.sh

#!/bin/bash
#Disclaimer: This script is intended for use with Ubuntu 14.04. You alone are responsible any consequence resulting from its use.
#The purpose of this script is to start dropbox, update the keyfile, and restart the indicator panel.

#Start dropbox if not already started (for some reason pgrep didn't work)
[[ $(ps aux | grep dropbox | grep dist | awk '{print $2 }') = "" ]] && dropbox start -i

#If the override file exists
if [[ -e ~/.local/share/indicators/application/ordering-override.keyfile ]]
then
    while [ "$(ps aux | grep dropbox | grep dist | awk '{print $2 }')" = "" ]; do
        sleep 1s
    done
    sleep 5s #dropbox creates several PIDs, so wait a bit before continuing
    sed -e "s/dropbox-client-.*=/dropbox-client-$(ps aux | grep dropbox | grep dist | awk '{print $2 }')=/g" -i ~/.local/share/indicators/application/ordering-override.keyfile
    restart unity-panel-service
fi

Jetzt können Sie "Startup Applications" öffnen und einen neuen Eintrag vornehmen, indem Sie den vollständigen Pfad zu Ihrem Skript als "Befehl" verwenden (mit ~ / start-dropbox.sh funktioniert das nicht, Sie müssen / home / yourname / start ausführen -dropbox.sh).

** Hinweis : Hier fügen Sie den vollständigen Skriptpfad am Ende von ein/etc/rc.local

Ein optionaler Schritt besteht darin, die Dropbox-Einstellungen zu öffnen und "Dropbox beim Systemstart starten" zu deaktivieren. Sie können den Befehl für Dropbox, der sich bereits in der Liste der Startanwendungen befindet, nicht einfach ändern, da Dropbox diesen Befehl bei jedem Start überschreibt.

Sie sind fertig!

So ~/.local/share/indicators/application/ordering-override.keyfilesieht mein aus:

[Ordering Index Overrides]
multiload=13
My-Weather-Indicator=12
redshift=11
Diodon=10
Chars=9
indicator-brightness=8
dropbox-client-24651=7
nm-applet=6
gnome-power-manager=5
ibus=4
gst-keyboard-xkb=3
gsd-keyboard-xkb=2
chrome-app-indicator-1=1
Gruzzles
quelle
root@laptop:~# restart unity-panel-service restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Jean Jordaan