web-dev-qa-db-ja.com

ワークスペース間を循環するキーをバインドするにはどうすればよいですか?

現在2つのワークスペースを使用していますが、1つのショートカットを使用してそれらを順に切り替えたいと思います。現時点では、私はできる Ctrl+Alt+Right ワークスペース2に切り替える Left 1に切り替えますが、単一のキー(またはキーの組み合わせ)を使用して、現在いないワークスペースに切り替えたいです。そうすれば、そのショートカットだけが必要になり、2つは必要なくなります。

古いマシンでUbuntuを実行しているため、compizを有効にできません。 wmctrlxdotoolの両方を使用してスクリプトを作成しようとしましたが、どちらも正常に動作しません(何をしても、どちらもワークスペース1にのみ切り替わり、2には切り替わりません)。

助言がありますか?

7
Malabarba

次のスクリプトは、次のワークスペースに切り替えて、最後の後に最初のワークスペースに折り返します。ワークスペースには0から番号が付けられていることに注意してください。スクリプトを記述しようとしたときに、これが原因である可能性があります。

#!/bin/sh
total=$(wmctrl -d | wc -l)
current=$(wmctrl -d | sed -n 's/^\([0-9]\+\) *\*.*/\1/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
5
Gilles

私はこれが古いことを知っていますが、ここに私のバージョンがあります:

複数のワークスペースの場合(Gillesの答えのように):

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}'`
2
palindrom