Est-il possible d'avoir les applications ouvertes de l'espace de travail actuel dans le lanceur mais pas celles des autres espaces de travail?
Est-il possible d'avoir les applications ouvertes de l'espace de travail actuel dans le lanceur mais pas celles des autres espaces de travail?
Réponses:
Eh bien, les autres réponses sont assez anciennes, donc je pense qu'il vaut la peine d'ajouter une réponse à jour. Il est possible de le faire dès maintenant et pas trop dur tbh (Avec Ubuntu 17.10 et avec Gnome).
Utilisez simplement dconf-editor :
sudo apt install dconf-editor
Naviguez vers org> gnome> shell> extensions> dash-to-dock et vérifiez isolate-workspaces
À xdotool
l' aide de windowunmap
, il est possible de masquer complètement une fenêtre. La fenêtre, ni son application, n'apparaît plus dans l'icône du lanceur, et n'est même plus répertoriée dans la sortie de wmctrl
.
Théoriquement, cela pourrait être connecté au "moteur d'espace de travail", qui a été utilisé dans ceci et cette réponse. Cela aurait été la solution la plus élégante.
Cependant, le processus consistant à masquer uniquement les fenêtres des autres espaces de travail et à augmenter automatiquement celles de l' espace de travail actuel est trop exigeant pour être utilisé dans un script d' arrière-plan en cours (pour l'instant), et il est peu probable qu'il "attrape un rhume" également. Comme les fenêtres sont définitivement perdues en cas d'erreur, j'ai donc décidé de ne pas proposer la procédure comme un processus 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, fonctionnant 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 de l'espace de travail actuel (et donc des 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 a besoin des deux wmctrl
et xdotool
:
sudo apt-get install wmctrl xdotool
toggle_visibility.py
Testez- exécutez 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 a apparemment 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 "précieuses" 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 dit précédemment, le script utilise xdotool
's' windowunmap
pour masquer (complètement) les fenêtres et les applications auxquelles elles appartiennent. Le script:
Lors de la prochaine exécution, le script:
basculant ainsi la visibilité des fenêtres et des applications sur l'espace de travail actuel.
ctrl
+ shift
+arrow key
Malheureusement, c'est impossible.
Unity affiche toujours toutes les applications de partout et il n'y a aucun moyen de changer cela. Il existe un rapport de bogue - https://bugs.launchpad.net/ayatana-design/+bug/683170 Mais il semble que les développeurs ne feront rien. 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.