it-swarm.com.de

Anwendung immer auf der dritten Position in Ubuntu 16.04 zeigen

Nachdem ich mein Ubutu auf 16.04 aktualisiert habe, ist ein Problem mit Unity Launcher aufgetreten. Immer wenn ich eine Anwendung öffne, die nicht im Launcher aufgeführt ist, nimmt sie die dritte Position anstelle der letzten Position ein. Hat jemand das gleiche Problem?

enter image description here

5
Jared Chu

Es gibt ein spezielles unsichtbares Startelement namens "Laufende Apps", das immer in Ihren Startfavoriten vorhanden ist und festlegt, an welcher Position die Symbole von nicht angehefteten laufenden Apps angezeigt werden. In deinem Fall hat es offensichtlich eine seltsame Position erreicht, aber es ist leicht zu beheben.

Es gibt zwei Möglichkeiten, eine einfache und natürlich auch die nerdige Kommandozeile ;-)


Ich möchte, dass es einfach ist, es zu tun und sich zu erinnern!

Am einfachsten ist es, die Startsymbole in der richtigen Reihenfolge zu ziehen und abzulegen.

Öffnen Sie daher eine Anwendung, die nicht an den Launcher gebunden ist, z. B. die Darstellungseinstellungen in Ihrem Screenshot. Es darf nicht fixiert werden, sonst geht das nicht.

Dann können Sie das nicht angeheftete Symbol nicht ziehen, da dies keine Auswirkungen auf die Position des speziellen Elements "Laufende Apps" hat, sondern nur das angeheftete Symbol an der neuen Position anheftet.
Ziehen Sie stattdessen alle Symbole von unten/rechts (funktioniert für beide Starterausrichtungen) des nicht fixierten Symbols direkt über/links davon. Auf diese Weise verschieben Sie das nicht fixierte Symbol nach unten/rechts, ohne es zu berühren.

Wenn die Position erreicht ist, an der alle nicht angehefteten Anwendungssymbole angezeigt werden sollen, sind Sie fertig. Sie können das Fenster jetzt schließen und erneut öffnen oder neue Fenster, um zu testen, ob es funktioniert hat.


Ich fühle mich heute nerdy, lass es uns durch das Terminal hacken!

Ihre angehefteten Starterelemente werden als "Favoriten" bezeichnet und als dconf-Einstellungen in Ihrem Benutzerprofil gespeichert. Sie können Ihre Favoritenliste anzeigen, indem Sie ein Terminal öffnen und ausführen

gsettings get com.canonical.Unity.Launcher favorites

Dies könnte wie im folgenden Beispiel aussehen (von mir hinzugefügte Ausgabeformatierung):

$ 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']

Diese Ausgabe stellt einen minimalistischen Launcher mit nur einem angehefteten Terminal-, Nautilus- und Firefox-Symbol dar. Das nächste Element ist 'unity://running-apps', das wichtige Spezialelement, das als Platzhalter für die Symbole aller nicht angehefteten laufenden Anwendungen dient. Danach folgen weitere spezielle Elemente, nämlich das Symbol "Desktop anzeigen" und ein weiteres Platzhalterelement, mit dem festgelegt wird, wo Symbole für angeschlossene Wechselmedien angezeigt werden.

Der einzige Artikel, der für uns interessant ist, ist der Artikel "Running Apps". Um Ihr Problem zu beheben, müssen Sie es an die gewünschte Position in der Liste der Elemente verschieben.

Sie tun dies, indem Sie den Befehl eingeben

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

aber statt einer leeren Liste [] müssen Sie natürlich Ihre geänderte Liste als letztes Argument übergeben.

Führen Sie beispielsweise in Anbetracht des oben beschriebenen Startprogramms Folgendes aus, damit die Symbole für ausgeführte Apps unter "Desktop anzeigen", aber immer noch über den Gerätesymbolen angezeigt werden:

$ 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']"

Die Änderungen werden sofort wirksam. Starten Sie daher einige nicht fixierte Anwendungen, um sicherzustellen, dass Sie das Objekt an die richtige Position gebracht haben, und genießen Sie es.

7
Byte Commander

Wie ByteCommander richtig erklärt hat, beeinflusst die Position unity://running-apps in der Liste des com.canonical.Unity.Launcher gsettings-Schemas, wo laufende Apps angezeigt werden, daher ist seine Antwort genau richtig. Um dies zu demonstrieren und zu testen, habe ich ein kleines Skript geschrieben, dessen Ergebnisse Sie in den folgenden Screenshots sehen können.

Beachten Sie, wie das mit Index 1 und Index 2 aufgerufene Skript zwei Terminal-Apps anzeigt, die sich zusammen an die entsprechende Position im Launcher bewegen (dh Apps ausführen, die nicht in der aktuellen Liste sind zusammengefasst). Beachten Sie, dass die Liste mit dem Index 0 beginnt, der vom Chrom-Symbol entsprechend übernommen wird.

enter image description hereenter image description here

Hinweis: Wenn Sie möchten, dass Apps zuletzt ausgeführt werden, reicht es aus, -1 als Argument zu verwenden.

Skript

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