J'essaie de comprendre comment obtenir le numéro d'espace de travail à partir d'un script de terminal dans gnome. Des idées?
Si vous n'utilisez pas Compiz, vous pouvez utiliser xdotool .
Exemple:
xdotool get_desktop
Ceci retournera 0
s'il est exécuté depuis le premier espace de travail, 1
s'il est exécuté depuis le second, etc.
Un vieux, et a répondu fil, mais j'étais juste après la même information. Vous pouvez le faire avec les outils xorg standard avec:
xprop -root -notype _NET_CURRENT_DESKTOP
Si vous utilisez en utilisant compiz, ce sera un peu plus difficile.
edit: cela fonctionne maintenant avec et sans compiz, enfin ...
J'ai écrit un "petit" python script pour le faire:
#!/usr/bin/python
from subprocess import Popen, PIPE
getoutput = lambda x: Popen(x, stdout=PIPE).communicate()[0]
compiz_running = list(i for i in getoutput(("ps", "-aef", )).split("\n")
if "compiz --replace" in i and not "grep" in i) != []
if compiz_running:
# get the position of the current workspace
ws = list(int(i.strip(",")) for i in getoutput(("xprop", "-root",
"-notype", "_NET_DESKTOP_VIEWPORT", )).split()[-2:])
# get the number of horizontal and vertical workspaces
hsize = int(getoutput(("gconftool",
"--get", "/apps/compiz/general/screen0/options/hsize", )))
vsize = int(getoutput(("gconftool",
"--get", "/apps/compiz/general/screen0/options/vsize", )))
# get the dimentions of a single workspace
x, y = list(int(i) for i in getoutput(("xwininfo", "-root",
"-stats", )).split("geometry ")[1].split("+")[0].split("x"))
# enumerate workspaces
workspaces, n = [], 0
for j in range(vsize):
for i in range(hsize):
workspaces.append([n, [x*i, y*j, ], ])
n += 1
print list(i for i in workspaces if i[1] == ws)[0][0]
# if compiz is not running
else: # this code via @DoR
print getoutput(("xdotool", "get_desktop", )).strip()
Enregistrez ceci quelque part et marquez-le comme exécutable. Cela ne produira qu'un nombre entre 0
et le nombre d'espaces de travail.
Voici à quoi ressemble l'énumération:
+---+---+
| 0 | 1 |
+---+---+
| 2 | 3 |
+---+---+
Vous devez installer xdotool pour que cela fonctionne si compiz est désactivé.
Sans rien installer et si vous utilisez metacity, vous pouvez utiliser ceci:
python -c "import wnck; s=wnck.screen_get_default(); s.force_update(); w=s.get_active_workspace(); w_num=w.get_number(); print(w_num);" 2>/dev/null
Il semble qu'avec Unity, la réponse acceptée
xdotool get_desktop_viewport
ne fonctionne pas - il renvoie toujours 0. Je suppose que l'écran est configuré comme une très grande fenêtre d'affichage dont seule une partie est visible. L’alternative est un peu délicate car vous devez connaître la taille de votre espace de travail. C'est à dire.:
xdotool get_desktop_viewport
retournera quelque chose comme "1600 0" si vous êtes dans l'espace de travail en haut à droite. Le premier nombre est probablement la largeur du plus grand écran que vous avez.