J'essaie de comprendre comment obtenir le numéro de l'espace de travail à partir d'un script de terminal dans gnome. Des idées?
la source
J'essaie de comprendre comment obtenir le numéro de l'espace de travail à partir d'un script de terminal dans gnome. Des idées?
Un vieux fil, et répondu, mais j'étais juste après la même info. Vous pouvez le faire avec les outils xorg standard avec:
xprop -root -notype _NET_CURRENT_DESKTOP
Si vous êtes utilisez Compiz, ce sera un peu plus difficile.
edit: cela fonctionne maintenant avec et sans compiz, enfin ...
J'ai écrit un "petit" script python 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-le quelque part et marquez-le comme exécutable. Cela ne produira qu'un nombre compris 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 au cas où compiz est désactivé.
Sans rien installer et si vous utilisez metacity, vous pouvez utiliser ceci:
la source
Il semble qu'avec Unity, la réponse acceptée
ne fonctionne pas - il renvoie toujours 0. Je suppose que l'écran est configuré comme une très grande fenêtre 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:
renverra 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.
la source