Действительно ли возможно циклически повториться через рабочие области в Единице (14.04 +)?

Я настроил свои сочетания клавиш так, чтобы Высокий звук + оставленный взял меня к рабочему пространству, оставленному, и Высокий звук +, право берет меня к рабочему пространству направо, но у меня был бы один набор ключей для циклического повторения. Идеально, что-то как

workspace 1 + Alt + tab ---> worskspace 2
workspace 2 + Alt + tab ---> worskspace 3
workspace 3 + Alt + tab ---> worskspace 4
workspace 4 + Alt + tab ---> worskspace 1

Проблемой является последняя строка. Я не вижу способа пойти от рабочего пространства 4 назад к рабочему пространству 1. Как переместиться в право по модулю 4?

1
задан 6 March 2016 в 11:51

2 ответа

В 12,04 я решил эту проблему путем редактирования ключа с gconf-редактором, но не имел того же самого ключа 16.04, таким образом, вот то, что работало на меня:

sudo apt-get install compizconfig-settings-manager

, который устанавливает утилиту расширенных настроек GUI, затем

ccsm

, который запускает ее. И затем я перешел в Настольная Стена>, Переключение Области просмотра> Позволяет Циклический возврат и установило флажок.

2
ответ дан 3 December 2019 в 06:40

Цикл через Ваши области просмотра

С маленьким сценарием очень хорошо возможно просмотреть рабочие области (на самом деле области просмотра):

  • передайте:

    enter image description here

    (Если последняя область просмотра достигнута, сценарий перемещается в первый),

  • ... или назад:

    enter image description here

    (Если первая область просмотра достигнута, сценарий перемещается в последний),

Сценарий

#!/usr/bin/env python3
import subprocess
import sys

move = sys.argv[1]

# get the needed info from wmctrl -d
wsdata = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").split()
# retrieve total size of workspace
ws = [int(n) for n in wsdata[3].split("x")]
# panel/launcher height/width
pans = [int(n) for n in wsdata[7].split(",")]
# work area
wa = [int(n) for n in wsdata[8].split("x")]
# x/y resolution
res_h = pans[0]+wa[0]; res_v = pans[1]+wa[1]
# current position in the spanning workspace
VP = [int(n) for n in wsdata[5].split(",")]

def last_h():
    # test if we are on the last viewport horizontally
    return VP[0]+res_h == ws[0]

def first_h():
    # test if we are on the first viewport horizontally
    return VP[0] == 0

def last_v():
    # test if we are on the last viewport vertically
    return VP[1]+res_v == ws[1]

def first_v():
    # test if we are on the first viewport vertically
    return VP[1] == 0

if move == "next":
    if last_h() == False:
        command = str(VP[0]+res_h)+","+str(VP[1])
    elif last_v() == True:
        command = "0,0"
    else:
        command = "0,"+str(VP[1]+res_v)

if move == "prev":
    if first_h() == False:
        command = str(VP[0]-res_h)+","+str(VP[1])
    elif first_v() == True:
        command = str(ws[0]-res_h)+","+str(ws[1]-res_v)
    else:
        command = str(ws[0]-res_h)+","+str(VP[1]-res_v)

subprocess.Popen(["wmctrl", "-o", command])

Как использовать

  1. Для сценария нужен wmctrl:

    sudo apt-get install wmctrl
    
  2. Скопируйте сценарий в пустой файл, сохраните его как through_viewports.py

  3. Добавьте две команды к двум различным сочетаниям клавиш:

    python3 /path/to/through_viewports.py next
    

    перейти к следующей области просмотра, и:

    python3 /path/to/through_viewports.py prev
    

    перейти к предыдущей области просмотра

    Настройки Открытой системы> Клавиатура> Ярлыки> Пользовательские Ярлыки. Нажмите + и добавьте обе команды к ярлыкам, которые Вы любите.

Вот именно сценарий обнаруживает, как Ваши области просмотра настраиваются и циклы через них.

Как это работает, понятие

В Единице области просмотра расположены в одной большой матрице, которую все вместе делают единственной рабочей областью, рабочий стол Единицы существует.

Используя команду:

wmctrl -d

в выводе мы можем считать всю информацию, которую мы должны узнать, где мы в настоящее время находимся в матрице.

0  * DG: 5120x2400  VP: 0,0  WA: 65,24 1215x776  N/A
  • 5120x2400 общий размер всех областей просмотра (матрица)
  • 0,0 x/y положение текущей области просмотра в матрице (верхний левый, пиксели)
  • от WA: 65,24 1215x776 мы можем получить разрешение экрана (65,24 ширина/высота Средства запуска/панели, 1215x776 остающаяся область),

После того как у нас есть корректная информация, сценарий вычисляет целевое положение в матрице и устанавливает ее с командой:

wmctrl -o x,y
3
ответ дан 3 December 2019 в 06:40

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

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