Est-il possible d'avoir les applications ouvertes de l'espace de travail actuel dans le programme de lancement, mais pas celles d'autres espaces de travail?
Eh bien, les autres réponses étant assez anciennes, je pense qu’il vaut la peine d’ajouter une réponse à jour. Il est possible de le faire maintenant et sans trop de difficultés (avec Ubuntu 17.10 et Gnome).
Utilisez simplement dconf-editor :
Sudo apt install dconf-editor
Accédez à org> gnome> Shell> extensions> dash-to-dock et cochez isolate-workspaces
En utilisant xdotool
name __ 's windowunmap
name__, il est possible de masquer complètement une fenêtre. La fenêtre, ni son application, n'apparaissent plus dans l'icône du lanceur et ne figurent même plus dans la sortie de wmctrl
name__.
Théoriquement, ceci pourrait être connecté au "moteur de l'espace de travail", qui était utilisé dans this et this answer. Cela aurait été la solution la plus élégante.
Cependant, le processus consistant à niquement masquer des fenêtres sur d'autres espaces de travail et à relever automatiquement celles de espace de travail actuel est trop exigeant pour une utilisation en cours background = script (pour l'instant), et il n'est pas improbable "d'attraper un rhume" aussi. Puisque les fenêtres sont définitivement perdues en cas d’erreur, j’ai donc décidé de ne pas proposer la procédure comme procédure automatique (en arrière-plan).
Si cette réponse vous est néanmoins utile ou non, cela dépend de la situation et de la raison pour laquelle vous souhaitez masquer les icônes des applications s'exécutant sur d'autres espaces de travail. c'est ta décision.
Un script, disponible sous une touche de raccourci, faisant apparemment disparaître complètement toutes les fenêtres sur l'espace de travail actuel (et donc les applications). Cela signifie que l'icône de l'application dans le lanceur Unity ne montre aucune activité de l'application:
Trois applications en cours d'exécution: Après avoir appuyé sur la touche de raccourci:
En appuyant à nouveau sur la combinaison de touches schortcut, les fenêtres et leurs applications réapparaîtront.
#!/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]])
Le script nécessite à la fois wmctrl
et xdotool
name__:
Sudo apt-get install wmctrl xdotool
toggle_visibility.py
Testez le script: dans une fenêtre de terminal, exécutez la commande:
python3 /path/to/toggle_visibility.py
Ouvrez maintenant une nouvelle fenêtre de terminal (puisque la première semble avoir disparu de la surface de la terre) et exécutez à nouveau la même commande. Toutes les fenêtres devraient réapparaître.
NB: assurez-vous de ne pas avoir de "fenêtres de valeur" ouvertes pendant le test
Si tout fonctionne correctement, ajoutez la commande à une combinaison de touches de raccourci: choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:
python3 /path/to/toggle_visibility.py
Comme indiqué, le script utilise le nom xdotool
de windowunmap
pour masquer (complètement) les fenêtres et les applications auxquelles elles appartiennent. Le scénario:
À la prochaine exécution, le script:
basculant ainsi la visibilité des fenêtres et des applications sur l’espace de travail actuel.
Malheureusement c'est impossible.
Unity affiche toujours toutes les applications de partout et il n’ya aucun moyen de changer cela. Il y a un rapport de bogue - https://bugs.launchpad.net/ayatana-design/+bug/68317 Mais il semble que les développeurs ne vont rien faire. Probablement si vous marquez en haut de la page que ce bogue vous affecte, cela aidera les développeurs à comprendre l'importance d'une telle option.