Ist es möglich, die geöffneten Anwendungen des aktuellen Arbeitsbereichs im Launcher zu haben, aber nicht diejenigen aus anderen Arbeitsbereichen?
Ist es möglich, die geöffneten Anwendungen des aktuellen Arbeitsbereichs im Launcher zu haben, aber nicht diejenigen aus anderen Arbeitsbereichen?
Antworten:
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
Mit xdotool
's windowunmap
ist 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.
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: Nach dem Drücken der Tastenkombination:
Wenn Sie die Tastenkombination erneut drücken, werden die Fenster und ihre Anwendungen wieder angezeigt.
#!/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]])
Das Skript benötigt beides wmctrl
und xdotool
:
sudo apt-get install wmctrl xdotool
toggle_visibility.py
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
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
Wie gesagt, das Skript verwendet xdotool
's windowunmap
, um Fenster und die Anwendungen, zu denen sie gehören, (vollständig) auszublenden. Das Drehbuch:
Bei der nächsten Ausführung lautet das Skript:
Dadurch wird die Sichtbarkeit von Fenstern und Anwendungen im aktuellen Arbeitsbereich umgeschaltet.
ctrl
+ shift
+arrow key
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.