Şu anda komut satırından hangi çalışma alanında olduğunuzu algılamanın bir yolu var mı?


12

Gnome bir terminal komut dosyasından çalışma alanı numarasını almak için nasıl anlamaya çalışıyorum. Herhangi bir fikir?

Yanıtlar:


13

Compiz kullanmıyorsanız, xdotool kullanabilirsiniz Xdotool'u yükle.

Misal:

xdotool get_desktop

Bu 0, ilk çalışma alanından 1çalıştırılırsa, ikinci çalışma alanından çalıştırılırsa döndürülür .


7

Eski ve cevaplanmış bir iş parçacığı, ama ben aynı bilgi hemen sonra oldu. Bunu standart xorg araçlarıyla yapabilirsiniz:

xprop -root -notype _NET_CURRENT_DESKTOP

6

Eğer varsa vardır Compiz'i kullanarak, bu biraz daha zor olacaktır.

edit: Bu şimdi hem compiz ile hem de compiz olmadan çalışır, nihayet ...

Bunu yapmak için bir "küçük" python betiği yazdım:

#!/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() 

Bunu bir yere kaydedin ve yürütülebilir olarak işaretleyin. Bu 0, çalışma alanı arasında yalnızca bir sayı ve sayı üretir .

Numaralandırma şöyle görünür:

+---+---+
| 0 | 1 |
+---+---+
| 2 | 3 |
+---+---+

Compiz'in Xdotool'u yükle devre dışı bırakılması durumunda bunun çalışması için xdotool yüklemeniz gerekir .


Teşekkürler. Ben "comprep_running test" --replace "kaldırmak zorunda kaldı, ve ayrıca ccsm Genel Seçenekler Masaüstü Boyutu / Dikey Sanal Boyutu söyledi rağmen, Hassas 12.04 üzerinde çalışırken vsize (1 vs 2) için yanlış değeri almak gibi görünüyordu 2.
nealmcb

3

Hiçbir şey kurmadan ve metacity kullanıyorsanız, bunu kullanabilirsiniz:

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

0

Görünüşe göre Unity ile kabul edilen cevap

 xdotool get_desktop_viewport

çalışmıyor - her zaman 0 döndürür. Sanırım ekran, yalnızca bir kısmı görünür olan gerçekten büyük bir görünüm olarak yapılandırıldı. Alternatif, çalışma alanınızın boyutunu bilmek zorunda olduğunuz için biraz zor. yani:

 xdotool get_desktop_viewport

sağ üst çalışma alanındaysanız "1600 0" gibi bir şey döndürür. İlk sayı muhtemelen sahip olduğunuz en büyük ekranın genişliğidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.