Est-il possible de changer l'ordre des icônes dans l'applet indicateur?

49

Est-il possible de changer l'ordre des icônes affichées dans l'applet indicateur? Indicateur Tomboy, indicateur météo, indicateur de gestionnaire du presse-papiers, indicateurs Ubuntu One et Dropbox et indicateur de l'état de la batterie, en plus des indicateurs classiques Messages et Menu Son ...

plopp
la source
1
Pas une réponse, mais sous kde (kubuntu), je peux placer ou supprimer à peu près n'importe quoi sur le bureau et le panneau, indicateurs inclus.
Joe

Réponses:

29

Les indicateurs du système sont dans un ordre fixe par conception. Bien que vous n'aimiez peut-être pas l'ordre, cela facilite le support en ayant un ordre fixe (nous pouvons discuter sans cesse de l'ordre). Les indicateurs d'application fonctionnent un peu différemment, ils sont conçus de manière à présenter un ordre par défaut, mais les applications peuvent en ajuster la continuité. Par exemple, si une application avait deux indicateurs qu'elle souhaitait côte à côte.

Étant donné que ce système est susceptible d’abuser de la part des développeurs d’applications, il existe un ensemble de substitutions dans le système. Le premier est au niveau du système, de sorte qu'il puisse être géré par des packages une fois que la distribution a identifié une application abusive, elle peut être corrigée pour tous les utilisateurs. Il est situé à:

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

Vous pouvez y insérer n'importe quel identifiant de statut et lui attribuer un nouvel index de commande qui sera le nouvel index de cette application. Il existe également un fichier de remplacement par utilisateur pouvant exister dans votre répertoire personnel à l'adresse suivante:

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

J'espère que cela vous aidera à ajuster votre panneau comme vous le souhaitez!

Ted Gould
la source
J'ai les indicateurs du système énumérés dans le premier fichier. Mais ne pas avoir un ~/.local/share/indicatorsrépertoire. Aidez-moi!
Charlie
2
Cette réponse est probablement obsolète, je n'ai aucun fichier de ce type dans ~/.local. Le fichier at /usr/sharene contient pas d'entrées pour toutes les applications d'indicateur et sa modification n'a aucun effet. Ce serait bien d'avoir une réponse pour 14.04.
Luís de Sousa
1
Cela fonctionne avec Ubuntu 14.04, il vous suffit d’ajouter explicitement tous les indicateurs que vous utilisez au fichier. Exécutez cette commande pour déterminer ceux que vous utilisez: 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"/" -f5Cela ne fonctionnera pas avec Dropbox, car l'ID de notificateur d'état change en fonction du PID de dropbox. J'ai ajouté une réponse ci-dessous pour mettre à jour le fichier ordering-override.key en fonction du PID de Dropbox.
Gruzzles
Est-ce que cela fonctionne pour 15.04? J'ai créé le fichier .local, mais je ne le vois pas fonctionner. Le fichier global d'origine in /usr/shareest présent, ce qui suggère qu'il devrait fonctionner. L'analyse de ce fichier est-elle enregistrée quelque part? Y at-il un moyen de déboguer si quelque chose ne va pas?
Jean Jordaan
@ ted-gould Pouvez-vous localiser le code dans la source indicet-applet qui rend la commande fixe?
Khurshid Alam
17

Les versions officielles d'ubuntu (météo, batterie, messages, moi, son, arrêt) sont codées en dur. Suce. Les autres doivent passer leur commande en utilisant la loi du premier arrivé, premier servi, priorité de droite à gauche. A en juger par cette demande de brainstorming / feature , la réponse est: Non, vous ne pouvez pas modifier manuellement l’ordre des icônes via l’interface graphique. Mais voir la réponse de @Ted Gould .

djeikyb
la source
1
J'ai moi aussi ce bug. Belle trouvaille. Merci.
Scaine
11

Pour modifier la position des indicateurs d'application sur le panneau Unity, vous devez éditer un fichier appelé ordering-override.keyfilesitué sous /usr/share/indicator-application. Étant donné que la modification de ce fichier modifiera les paramètres de tous les utilisateurs, vous pouvez le copier ~/.local/share/indicators/application/ordering-override.keyfileet le modifier uniquement pour votre utilisateur:

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

Ouvrez maintenant le fichier en lançant la commande suivante dans un terminal:

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

Dans ce fichier, vous devriez voir les règles existantes pour l'ordre des indicateurs d'application sur le panneau. Le premier est nm-appletet a la valeur "1", ce qui signifie que ce sera le premier indicateur d'application à s'afficher sur le panneau, de droite à gauche.

En vous servant de cet exemple, vous pouvez ajouter vos propres indicateurs d’application et spécifier leur position en entrant leur nom et un numéro transmission=6permettant d’indiquer l’indicateur d’application de transmission en tant que sixième indicateur du panneau (de droite à gauche), si les 5 autres indicateurs existent.

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

Maintenant, dans votre cas, le ordering-override.keyfilefichier devrait ressembler à ceci:

[Ordering Index Overrides]
nm-applet=1
My_Weather_Indicator=2
lang_indicator=3
bluetooth_manager=4
indicator_sysmonitor=5
transmission=6
Radu Rădeanu
la source
1
@James Ceci s'applique évidemment aussi aux indicateurs fournis par l'application, puisque Transmission est utilisé à titre d'exemple.
Léo Lam
Est-ce que cela fonctionne pour 15.04? J'ai créé le fichier .local, mais je ne le vois pas fonctionner. Le fichier global d'origine in /usr/shareest présent, ce qui suggère qu'il devrait fonctionner. L'analyse de ce fichier est-elle enregistrée quelque part? Y at-il un moyen de déboguer si quelque chose ne va pas?
Jean Jordaan
Après kill $(pgrep unity-panel-service)cela fonctionne :-) J'ai redémarré après avoir créé le ordering-override.keyfile, alors je ne sais pas pourquoi il a "pris" après le redémarrage de ce panneau.
Jean Jordaan
Cette façon de redémarrer le panneau root@laptop:~# restart unity-panel-servicene fonctionne plus:restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Jean Jordaan
4

Instructions pour activer le tri de l'indicateur Dropbox

Suivez les instructions de Ted Gould. Si vous souhaitez trier l'indicateur Dropbox, voici quelques étapes supplémentaires:

Remarque : Si vous avez modifié le fichier, /usr/share/...vous devrez alors insérer le script /etc/rc.local(recherchezNote ci-dessous)

Étant donné que Dropbox ajoute le PID au nom de l'indicateur et que celui-ci change à chaque démarrage de Dropbox, vous devez mettre à jour la liste ordering-override.keyfiledéroulante Chaque fois que Dropbox démarre.

Pour ce faire, vous pouvez ouvrir un éditeur de texte, copier et coller le script suivant et lui donner un nom start-dropbox.sh. Cliquez ensuite avec le bouton droit de la souris sur "Propriétés", accédez à l'onglet "Autorisations", puis cochez la case "Autoriser l'exécution du fichier en tant que programme" ou ouvrez un terminal, accédez au dossier dans lequel vous avez placé le script, puis exécutez Exécuter.sudo 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

Maintenant, vous pouvez ouvrir "Applications de démarrage et créer une nouvelle entrée, en utilisant le chemin complet de votre script comme" commande "(utiliser ~ / start-dropbox.sh ne fonctionnera pas, vous devrez faire / home / votrenom / start -dropbox.sh).

** Remarque : C’est là que vous ajoutez le chemin de script complet à la fin de/etc/rc.local

Une étape facultative consiste à ouvrir les paramètres de Dropbox et à décocher "Démarrer la dropbox au démarrage du système". Vous ne pouvez pas simplement modifier la commande de Dropbox figurant déjà dans la liste Applications de démarrage, car Dropbox la remplace à chaque démarrage.

Vous avez terminé!

Voici à quoi ~/.local/share/indicators/application/ordering-override.keyfileressemble mon look:

[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
la source
root@laptop:~# restart unity-panel-service restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Jean Jordaan