Einstellung, dass nur Anwendungen des aktuellen Arbeitsbereichs im Launcher angezeigt werden?

30

Ist es möglich, die geöffneten Anwendungen des aktuellen Arbeitsbereichs im Launcher zu haben, aber nicht diejenigen aus anderen Arbeitsbereichen?

user165749
quelle
Ich denke, Strg + (1,2,3,4) wird zum Wechseln von Arbeitsbereichen verwendet. Aber überprüfen Sie die Verknüpfungen in den Systemeinstellungen ...
Alvar
Halten Sie die SUPER-Taste (Windows-Taste) gedrückt, um eine Übersicht aller verfügbaren Unity-Verknüpfungen anzuzeigen. Lesen Sie auch diese Fragen und Antworten .
Glutanimate
Ich habe Ihre zweite Frage zu den Verknüpfungen aus Ihrem Beitrag bearbeitet, da es sich um ein Duplikat handelt und das bereits beantwortet wurde. Ich sehe, dass dies Ihre erste Frage ist (Willkommen bei Askubuntu!): Es ist für uns einfacher, Ihnen zu helfen, wenn Sie nur eine Frage pro Beitrag stellen. Bitte berücksichtigen Sie dies in Zukunft, wenn Sie AU verwenden.
Glutanimate
Gleiche Frage wie hier . Diesem fehlt jedoch eine Antwort.
RPiAwesomeness
Wahrscheinlich nicht die Antwort, die Sie suchen, sondern die mangelnde Anpassbarkeit. Wenn Sie besondere Anforderungen haben oder mehr Kontrolle über Ihren Desktop wünschen, sollten Sie in Erwägung ziehen, auf eine flexiblere Desktop-Umgebung wie KDE umzusteigen.
Conchylicultor

Antworten:

30

Für Ubuntu Dock ab Ubuntu 17.10 (mit GNOME)

Nun, andere Antworten sind ziemlich alt, daher denke ich, dass es sich lohnt, eine aktuelle Antwort hinzuzufügen. Es ist jetzt möglich und nicht zu schwer (mit Ubuntu 17.10 und Gnome).

Benutze einfach dconf-editor :

sudo apt install dconf-editor

Navigieren Sie zu org> gnome> shell> extensions> dash-to-dock und aktivieren Sie Arbeitsbereiche isolieren Bildbeschreibung hier eingeben

Jakub Kopyś
quelle
1
Die Frage hat absolut nichts mit der Dash To Dock Gnome Extension zu tun. Die Frage bezieht sich auf Unity Launcher, dessen Dash To Dock nicht einmal mit Unity kompatibel ist.
Crookedleaf
2
@crookedleaf Ubuntu wechselte mit einem neu gebackenen Dash-to-Dock als Standard mit 17.10 zu GNOME.
Seth
1
@Seth Aber OP benutzt Unity, nicht Gnome. Also hat OP entweder nur versehentlich den Tag "Unity" verwendet, oder es wird eine Ubuntu-Version mit Unity verwendet.
Crookedleaf
3
@ Crookedleaf Oder wir müssen nur Fragen auf dem Laufenden halten, damit sie auch die neuesten Antworten haben :)
Seth
1
Funktioniert hervorragend in 18.04 / w Gnome. Vielen Dank! Beachten Sie, dass die Erweiterung auch einfach von der Website installiert werden kann: extensions.gnome.org/extension/307/dash-to-dock
Jeff Ward
8

So machen Sie Anwendungen auf (anderen) Arbeitsbereichen nicht nachvollziehbar

Mit xdotool's windowunmapist es möglich, ein Fenster komplett auszublenden. Das Fenster und seine Anwendung erscheinen nicht mehr im Launcher-Symbol und werden in der Ausgabe von nicht mehr aufgeführt wmctrl.

Theoretisch könnte dies mit der "Workspace-Engine" zusammenhängen, die in dieser und dieser Antwort verwendet wurde. Das wäre die eleganteste Lösung gewesen.

Der Prozess der jedoch nur versteckt Fenster auf anderen Arbeitsbereichen und automatisch auf die , die auf dem erhöhen aktuellen Arbeitsbereich ist zu anspruchsvoll in einem laufenden verwenden Hintergrund Skript (bis jetzt), und nicht unwahrscheinlich , auch „erkälten“. Da Fenster bei Fehlern für immer verloren gehen, habe ich mich entschieden, das Verfahren nicht als automatischen (Hintergrund-) Prozess anzubieten.

Ob diese Antwort für Sie dennoch nützlich ist oder nicht, hängt von der Situation und dem Grund ab, warum Sie Symbole von Anwendungen ausblenden möchten, die auf anderen Arbeitsbereichen ausgeführt werden. Das ist deine Entscheidung.

Die Lösung; was es ist und wie es in der Praxis funktioniert

  • Ein Skript, das unter einer Tastenkombination verfügbar ist und anscheinend alle Fenster des aktuellen Arbeitsbereichs (und damit der Anwendungen) vollständig verschwindet. Das bedeutet, dass das Anwendungssymbol im Unity-Launcher keine Aktivität der Anwendung anzeigt:

    Drei laufende Anwendungen: Bildbeschreibung hier eingebenNach dem Drücken der Tastenkombination:Bildbeschreibung hier eingeben

  • Wenn Sie die Tastenkombination erneut drücken, werden die Fenster und ihre Anwendungen wieder angezeigt.

  • Da durch die Tastenkombination nur die Fenster und Anwendungen im aktuellen Arbeitsbereich ausgeblendet werden, können Sie anschließend in einen anderen Arbeitsbereich wechseln, ohne zu bemerken, was im aktuellen Arbeitsbereich (verborgen) ist.
  • Das Ein- und Ausblenden wird (nur) für den aktuellen Arbeitsbereich durchgeführt. Kurz gesagt, der Vorgang des Ein- und Ausblenden ist für jeden Arbeitsbereich völlig unabhängig .

Das Drehbuch

#!/usr/bin/env python3
import subprocess    
import os
import time

datadir = os.environ["HOME"]+"/.config/maptoggle"
if not os.path.exists(datadir):
    os.makedirs(datadir)
workspace_data = datadir+"/wspacedata_"

def get_wlist(res):
    res = get_res()
    try:
        wlist = [l.split() for l in subprocess.check_output(["wmctrl", "-lG"]).decode("utf-8").splitlines()]
        return [w for w in wlist if all([
            0 < int(w[2]) < res[0],
            0 < int(w[3]) < res[1],
            "_NET_WM_WINDOW_TYPE_NORMAL" in subprocess.check_output(["xprop", "-id", w[0]]).decode("utf-8"),
            ])]
    except subprocess.CalledProcessError:
        pass

def get_res():
    # get resolution
    xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
    pos = xr.index("current")
    return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]

def current(res):
    # get the current viewport
    vp_data = subprocess.check_output(
        ["wmctrl", "-d"]
        ).decode("utf-8").split()
    dt = [int(n) for n in vp_data[3].split("x")]
    cols = int(dt[0]/res[0])
    curr_vpdata = [int(n) for n in vp_data[5].split(",")]
    curr_col = int(curr_vpdata[0]/res[0])+1
    curr_row = int(curr_vpdata[1]/res[1])
    return str(curr_col+curr_row*cols)

res = get_res()

try:
    f = workspace_data+current(res)
    wlist = eval(open(f).read().strip())
    for w in wlist:
        subprocess.Popen(["xdotool", "windowmap", w[0]])
    os.remove(f)
except FileNotFoundError:
    current_windows = get_wlist(res)
    open(f, "wt").write(str(current_windows))
    for w in current_windows:
        subprocess.Popen(["xdotool", "windowunmap", w[0]])

Wie benutzt man

  1. Das Skript benötigt beides wmctrlund xdotool:

    sudo apt-get install wmctrl xdotool
    
  2. Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter toggle_visibility.py
  3. Führen Sie das Skript aus: Führen Sie in einem Terminalfenster den folgenden Befehl aus:

    python3 /path/to/toggle_visibility.py
    

    Öffnen Sie nun ein neues Terminalfenster (da das erste scheinbar vom Erdboden verschwunden ist) und führen Sie denselben Befehl erneut aus. Alle Fenster sollten wieder angezeigt werden.

    NB : Stellen Sie sicher, dass beim Testen keine "wertvollen" Fenster geöffnet sind

  4. Wenn alles funktioniert, fügen Sie den Befehl einer Tastenkombination hinzu: Wählen Sie: Systemeinstellungen> "Tastatur"> "Verknüpfungen"> "Benutzerdefinierte Verknüpfungen". Klicken Sie auf das "+" und fügen Sie den Befehl hinzu:

    python3 /path/to/toggle_visibility.py
    

Erläuterung

Wie gesagt, das Skript verwendet xdotool's windowunmap, um Fenster und die Anwendungen, zu denen sie gehören, (vollständig) auszublenden. Das Drehbuch:

  • Liest den aktuellen Arbeitsbereich
  • liest die Fenster, die im aktuellen Arbeitsbereich existieren (nur)
  • Schreibt die Fensterliste in eine Datei, die nach dem aktuellen Arbeitsbereich benannt ist
  • verbirgt die Fenster

Bei der nächsten Ausführung lautet das Skript:

  • prüft, ob die Datei, die dem aktuellen Arbeitsbereich entspricht, existiert
  • In diesem Fall wird die Fensterliste gelesen und die Fenster ausgeblendet.

Dadurch wird die Sichtbarkeit von Fenstern und Anwendungen im aktuellen Arbeitsbereich umgeschaltet.

Jacob Vlijm
quelle
Groß. Jetzt nur, wenn ich eine Möglichkeit finde, das Skript automatisch auszuführen, wenn ich in den anderen Arbeitsbereich wechsle, sodass sie einfach auf magische Weise verschwinden und wieder angezeigt werden, wenn ich zurück gehe. Vielleicht könnte ich ein Python-Skript schreiben, um die Tastenkombination für ctrl+ shift+arrow key
Do Yein Tun
1
Am 17.10 ist dies nun möglich. Siehe andere Antworten.
Martin Melka
6

Leider ist es unmöglich.

Unity zeigt immer alle Anwendungen von überall an und es gibt keine Möglichkeit, dies zu ändern. Es gibt einen Fehlerbericht - https://bugs.launchpad.net/ayatana-design/+bug/683170 Aber anscheinend werden Entwickler nichts unternehmen. Wenn Sie oben auf der Seite markieren, dass Sie von diesem Fehler betroffen sind, wird dies den Entwicklern wahrscheinlich helfen, die Bedeutung dieser Option zu verstehen.

dofeoct
quelle
1
Kommentieren Sie den Fehlerbericht nicht, sondern markieren Sie ihn oben auf der Seite als Sie betreffend.
Flimm
@Flimm weißt du zufällig, welcher Desktop Manager diese Funktionalität hat?
Cesar
2
Einheit sieht gut aus, aber die mangelnde Anpassbarkeit ist wirklich frustrierend.
Programmierer