Estoy tratando de descubrir cómo obtener el número del espacio de trabajo de un script de terminal en gnome. ¿Algunas ideas?
fuente
Estoy tratando de descubrir cómo obtener el número del espacio de trabajo de un script de terminal en gnome. ¿Algunas ideas?
Un hilo viejo y respondido, pero estaba justo después de la misma información. Puede hacer esto con las herramientas estándar de xorg con:
xprop -root -notype _NET_CURRENT_DESKTOP
Si está utilizando compiz, esto será un poco más difícil.
editar: esto ahora funciona con y sin compiz, finalmente ...
Escribí un "pequeño" script de Python para hacerlo:
#!/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()
Guarde esto en algún lugar y márquelo como ejecutable. Esto generará solo un número entre 0
y el número de espacios de trabajo.
Así es como se ve la enumeración:
+---+---+
| 0 | 1 |
+---+---+
| 2 | 3 |
+---+---+
Tienes que instalar xdotool para que esto funcione en caso de que compiz esté deshabilitado.
Sin instalar nada y si está usando metacity, puede usar esto:
fuente
Parece que con Unity, la respuesta aceptada
no funciona, siempre devuelve 0. Supongo que la pantalla está configurada como una ventana muy grande de la cual solo una parte es visible. La alternativa es un poco complicada ya que debes conocer el tamaño de tu espacio de trabajo. Es decir:
devolverá algo así como "1600 0" si está en el espacio de trabajo superior derecho. El primer número es probablemente el ancho de la pantalla más grande que tiene.
fuente