Чи є спосіб визначити, в якій робочій області ви зараз перебуваєте в командному рядку?


12

Я намагаюся розібратися, як отримати номер робочої області з термінального скрипту в gnome. Будь-які ідеї?

Відповіді:


13

Якщо ви не використовуєте Compiz, ви можете використовувати xdotool Встановіть xdotool .

Приклад:

xdotool get_desktop

Це повернеться, 0якщо запустити з першого робочого простору, 1якщо запустити з другого і т.д.


7

Стара і відповіла нитка, але я був лише за тією ж інформацією. Це можна зробити за допомогою стандартних інструментів xorg за допомогою:

xprop -root -notype _NET_CURRENT_DESKTOP

6

Якщо будуть з допомогою Compiz, це буде трохи складніше.

редагувати: тепер це працює як з комп’ютером, так і без нього, нарешті ...

Я написав "маленький" сценарій python, щоб це зробити:

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

Збережіть це десь і позначте його як виконуваний. Це виведе просто число між 0та кількістю робочих просторів.

Ось так виглядає перерахування:

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

Ви повинні встановити xdotool, Встановіть xdotool щоб це працювало у разі відключення комп’ютера.


Спасибі. Мені довелося видалити "- заміну" з тесту compiz_running, а також, здавалося, отримали неправильне значення для vsize (1 vs 2) при запуску цього в Precision 12.04, навіть незважаючи на те, що загальні параметри ccsm сказали, що мій розмір робочого столу / вертикальний віртуальний розмір є 2.
nealmcb

3

Не встановлюючи нічого і якщо ви використовуєте metacity, ви можете скористатися цим:

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

Здається, що з Єдністю прийнята відповідь

 xdotool get_desktop_viewport

не працює - завжди повертається 0. Я думаю, що екран налаштований як дійсно великий вікно перегляду, з якого видно лише частину. Альтернатива трохи хитра, оскільки ви повинні знати розмір робочої області. Тобто:

 xdotool get_desktop_viewport

поверне щось на зразок "1600 0", якщо ви перебуваєте у верхньому правому робочому просторі. Перше число - це, мабуть, ширина найбільшого дисплея.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.