web-dev-qa-db-fra.com

Application toujours afficher en troisième position dans Ubuntu 16.04

Après avoir mis à jour mon ubutu vers 16.04, j'ai eu un problème avec le lanceur Unity. À chaque fois que j'ouvre une application qui ne figure pas dans la liste de lancement, elle prend la troisième position au lieu de la dernière. Quelqu'un at-il le même problème?

enter image description here

5
Jared Chu

Il existe un élément de lancement invisible spécial appelé "Applications en cours d'exécution" qui est toujours présent dans vos favoris de lanceur et détermine l'emplacement des icônes des applications en cours d'exécution non épinglées. Dans votre cas, cela a évidemment pris une position bizarre, mais cela est facilement réparable.

Il existe deux méthodes, une méthode simple et bien sûr la méthode de commande en ligne nerdy ;-)


Je veux que ce soit facile à faire et à retenir!

La méthode la plus simple consiste à faire glisser les icônes de votre lanceur dans le bon ordre.

Par conséquent, ouvrez une application qui n'est pas épinglée au lanceur, comme les paramètres d'apparence de votre capture d'écran. Cela ne doit pas être épinglé, sinon cela ne fonctionnera pas.

Ensuite, vous ne faites pas glisser l'icône non épinglée , car cela n'affectera pas la position de l'élément spécial "Running Apps", mais épingle simplement l'icône glissée sur le nouvel emplacement.
Au lieu de cela, faites glisser toutes les icônes situées en bas/à droite (fonctionne pour les deux orientations du lanceur) de l’icône non épinglée directement au-dessus/à gauche de celle-ci. De cette façon, vous déplacez l’icône non épinglée vers le bas/la droite sans la toucher.

Lorsque vous avez atteint la position où vous souhaitez que toutes les icônes d'applications non épinglées apparaissent, vous avez terminé. Vous pouvez maintenant fermer cette fenêtre et la rouvrir ou de nouvelles fenêtres pour vérifier si cela a fonctionné.


Je me sens nerdy aujourd'hui, allons le pirater à travers le terminal!

Les éléments de votre lanceur épinglés sont appelés "favoris" et sont stockés en tant que paramètres dconf dans votre profil utilisateur. Vous pouvez voir votre liste de favoris en ouvrant un terminal et en cours d'exécution.

gsettings get com.canonical.Unity.Launcher favorites

Cela pourrait ressembler à l'exemple ci-dessous (formatage de sortie ajouté par moi):

$ gsettings get com.canonical.Unity.Launcher favorites
['application://gnome-terminal.desktop', 
 'application://org.gnome.Nautilus.desktop', 
 'application://firefox.desktop', 
 'unity://running-apps', 
 'unity://desktop-icon',
 'unity://devices']

Cette sortie représente un lanceur minimaliste avec seulement un terminal, l’icône Nautilus et Firefox épinglés. L’élément suivant est 'unity://running-apps', qui est l’élément spécial important qui sert d’espace réservé aux icônes de toutes les applications en cours d’exécution non épinglées. Après cela, d'autres éléments spéciaux suivent, à savoir l'icône "Afficher le bureau" et un autre élément d'espace réservé qui définit l'emplacement où les icônes des périphériques amovibles branchés apparaissent.

Le seul élément qui nous intéresse est l'élément "Exécution d'applications". Pour résoudre votre problème, vous devez le déplacer à la position souhaitée dans la liste des éléments.

Vous faites cela en tapant la commande

gsettings set com.canonical.Unity.Launcher favorites []

mais au lieu d'une liste vide [], vous devez passer votre liste modifiée comme dernier argument, bien sûr.

Par exemple, étant donné le lanceur décrit ci-dessus, pour que les icônes des applications en cours apparaissent sous "Afficher le bureau" mais toujours au-dessus des icônes de périphérique, exécutez la procédure suivante:

$ gsettings set com.canonical.Unity.Launcher favorites "['application://gnome-terminal.desktop', 'application://org.gnome.Nautilus.desktop', 'application://firefox.desktop', 'unity://desktop-icon', 'unity://running-apps', 'unity://devices']"

Les modifications entreront en vigueur immédiatement. Lancez donc des applications non épinglées pour vérifier que vous avez mis l'élément à la bonne position et en profiter.

7
Byte Commander

Comme ByteCommander l'a bien expliqué, la position unity://running-apps dans la liste des schémas com.canonical.Unity.Launcher gsettings a une incidence sur l'emplacement d'affichage des applications en cours, sa réponse est donc exacte. Pour démontrer et tester cela, j'ai écrit un petit script dont vous pouvez voir les résultats dans les captures d'écran ci-dessous.

Notez que le script appelé index 1 et index 2 montre deux applications terminales se déplaçant ensemble vers la position respective dans le lanceur (c'est-à-dire des applications en cours d'exécution qui sont et non dans la liste actuelle sont regroupés). Notez que la liste commence par l'index 0, qui est pris de manière appropriée par l'icône de chrome.

enter image description hereenter image description here

Remarque: si vous souhaitez que les applications en cours d'exécution soient les dernières, il suffit d'utiliser -1 comme argument.

Scénario

from gi.repository import Gio
import sys

def gsettings_get(schema, path, key):
    """Get value of gsettings schema"""
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema, path)
    return gsettings.get_value(key)

def gsettings_set(schema, path, key, value):
    """Set value of gsettings schema"""
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema, path)
    if isinstance(value, list):
        return gsettings.set_strv(key, value)
    if isinstance(value, int):
        return gsettings.set_int(key, value)

def main():
    schema='com.canonical.Unity.Launcher' 
    key='favorites'
    current_list = list(gsettings_get(schema,None,key))
    running_index = current_list.index('unity://running-apps')

    position = int(sys.argv[1])

    temp = current_list[position]
    current_list[position] = current_list[running_index]
    current_list[running_index] = temp
    gsettings_set(schema,None,key,current_list)
if __== '__main__': main()
2
Sergiy Kolodyazhnyy