Есть ли способ определить, какое рабочее пространство вы сейчас используете в командной строке?

Возникнет скрипт /etc/init conf. Верхний репозиторий теперь включает сценарий инициализации Upstart, разработанный специально для Ubuntu.

Скрипт инициализации Upstart, разработанный специально для Ubuntu , представляет собой программу с аналогичной функциональностью asd и включает в себя сценарий инициализации upstart и пакет pre-build deb для тестирования.

Также нужно просто запустить goanysyncs upstart conf и использовать его с небольшими изменениями для asd.

1
задан 13 March 2017 в 13:45

4 ответа

Старая и ответная нить, но я был сразу после той же информации. Вы можете сделать это со стандартными инструментами xorg с помощью:

xprop -root -notype _NET_CURRENT_DESKTOP
7
ответ дан 25 May 2018 в 23:58

Если вы используете compiz, это будет немного сложнее.

edit: теперь это работает как с компилятором, так и без него, наконец ...

Я написал " маленький "скрипт 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 для этого, чтобы работать, если компилятор отключен.

6
ответ дан 25 May 2018 в 23:58
  • 1
    Благодарю. Мне пришлось удалить " --replace & Quot; из теста compiz_running, а также, похоже, получил неправильное значение для vsize (1 против 2) при запуске этого на Precise 12.04, хотя ccsm General Options сказал, что мой рабочий стол / вертикальный виртуальный размер равен 2. – nealmcb 19 August 2013 в 00:40

Не устанавливая ничего, и если вы используете 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
3
ответ дан 25 May 2018 в 23:58

Кажется, что с Unity принятый ответ

 xdotool get_desktop_viewport

не работает - он всегда возвращает 0. Я думаю, экран настроен как действительно большой видовой экран, из которого видна только часть. Альтернатива немного сложна, так как вам нужно знать размер вашей рабочей области. I.e.:

 xdotool get_desktop_viewport

вернет что-то вроде «1600 0», если вы находитесь в верхнем правом рабочем пространстве. Первое число - это, вероятно, ширина самого большого отображаемого вами дисплея.

0
ответ дан 25 May 2018 в 23:58

Другие вопросы по тегам:

Похожие вопросы: