Как я могу привязать ключ к циклу между рабочими пространствами?

7

Я использую 2 рабочих пространства прямо сейчас, и я хотел бы иметь возможность циклически переключаться между ними, используя один ярлык. На данный момент я могу сделать Ctrl + Alt + Вправо для переключения в рабочее пространство 2, а Влево переключается на 1, но я бы хотел, чтобы один ключ (или комбинация клавиш) переключился на рабочую область, в которой я не сейчас. Таким образом мне понадобится только этот ярлык, и вам не нужны два.

Я запускаю Ubuntu на старой машине, и это мешает мне включить компиляцию вообще. Я пробовал писать сценарий, используя как wmctrl , так и xdotool , но не работаю должным образом (независимо от того, что я делаю, они оба будут переключаться только на рабочую область 1 и никогда не на 2).

Любые предложения?

    
задан Malabarba 05.10.2010 в 16:48
источник

2 ответа

5

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

#!/bin/sh
total=$(wmctrl -d | wc -l)
current=$(wmctrl -d | sed -n 's/^\([0-9]\+\) *\*.*//p')
if [ -z "$total" ] || [ -z "$current" ]; then
  echo 1>&2 "$0: Could not obtain workspace information!"
  exit 2
fi
target=$(($current+1))
if [ $target = $total ]; then
  target=0
fi
wmctrl -s $target
    
ответ дан Gilles 05.10.2010 в 18:42
источник
2

Я знаю, что это старый, но вот мои версии:

Для нескольких рабочих пространств (как в ответе Жиля):

wmctrl -s 'wmctrl -d | awk '$2=="*"{cur=NR} END{print cur % NR}''

Для нескольких видовых экранов:

wmctrl -o 'wmctrl -d | awk '{gsub(/[^0-9]/," ",$0);x = ($4 + $6 + $8) % $2; if( 
x == 0 ) y = ($5 + $7 + $9) % $3; else y = $5; print x","y}''
    
ответ дан palindrom 16.08.2012 в 14:38