Я настроил свои сочетания клавиш так, чтобы Высокий звук + оставленный взял меня к рабочему пространству, оставленному, и Высокий звук +, право берет меня к рабочему пространству направо, но у меня был бы один набор ключей для циклического повторения. Идеально, что-то как
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?
В 12,04 я решил эту проблему путем редактирования ключа с gconf-редактором, но не имел того же самого ключа 16.04, таким образом, вот то, что работало на меня:
sudo apt-get install compizconfig-settings-manager
, который устанавливает утилиту расширенных настроек GUI, затем
ccsm
, который запускает ее. И затем я перешел в Настольная Стена>, Переключение Области просмотра> Позволяет Циклический возврат и установило флажок.
С маленьким сценарием очень хорошо возможно просмотреть рабочие области (на самом деле области просмотра):
передайте:
(Если последняя область просмотра достигнута, сценарий перемещается в первый),
... или назад:
(Если первая область просмотра достигнута, сценарий перемещается в последний),
#!/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])
Для сценария нужен wmctrl:
sudo apt-get install wmctrl
Скопируйте сценарий в пустой файл, сохраните его как through_viewports.py
Добавьте две команды к двум различным сочетаниям клавиш:
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