Estou tentando descobrir como obter o número da área de trabalho a partir de um script de terminal no gnome. Alguma ideia?
fonte
Estou tentando descobrir como obter o número da área de trabalho a partir de um script de terminal no gnome. Alguma ideia?
Um tópico antigo e respondido, mas eu estava logo após a mesma informação. Você pode fazer isso com as ferramentas padrão do xorg com:
xprop -root -notype _NET_CURRENT_DESKTOP
Se você estiver usando o compiz, isso será um pouco mais difícil.
edit: isso agora funciona com e sem compiz, finalmente ...
Eu escrevi um "pequeno" script python para fazer isso:
#!/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()
Salve isso em algum lugar e marque-o como executável. Esta saída será apenas um número entre 0
e o número de espaços de trabalho.
É assim que a enumeração se parece:
+---+---+
| 0 | 1 |
+---+---+
| 2 | 3 |
+---+---+
Você precisa instalar o xdotool para que isso funcione, caso o compiz esteja desativado.
Sem instalar nada e se você estiver usando o metacity, poderá usar o seguinte:
fonte
Parece que com a Unity, a resposta aceita
não funciona - sempre retorna 0. Acho que a tela está configurada como uma janela realmente grande, da qual apenas uma parte é visível. A alternativa é um pouco complicada, pois você precisa saber o tamanho do seu espaço de trabalho. Ou seja:
retornará algo como "1600 0" se você estiver no espaço de trabalho superior direito. O primeiro número é provavelmente a largura da maior tela que você possui.
fonte