このスクリプトを開始点として使用して、ワークスペースごとに1つのgvimを作成しようとしています: http://www.openhex.org/notes/2011/1/27/one-vim-server-per-desktops
数か月前にこのスクリプトを最初に見つけたとき、wmctrl -d
4つのワークスペースをリストしました。しかし、今試してみると、1つしか表示されません。
$ wmctrl -d
0 * DG: 7208x1003 VP: 0,0 WA: 0,0 1802x976 Workspace 1
ウィンドウを一覧表示すると、すべてが同じデスクトップ上にありますが、画面の幅が離れていることがわかります。
$ wmctrl -lGx
0x02200003 0 0 1952 1802 27 gnome-panel.Gnome-panel ned-vbox Bottom Expanded Edge Panel
0x0260001e 0 0 0 1802 1003 desktop_window.Nautilus ned-vbox x-nautilus-desktop
0x04600004 0 332 140 1169 722 gnome-terminal.Gnome-terminal ned-vbox Terminal
0x046000c6 0 116 288 1433 512 gnome-terminal.Gnome-terminal ned-vbox Terminal
0x0480001e 0 388 48 1604 948 gvim.Gvim ned-vbox .bashrc (~) - GVIM
0x04604c55 0 784 48 1214 948 gnome-terminal.Gnome-terminal ned-vbox Terminal
これは、仮想ボックスでcompizを実行しているUbuntu 10.10です(これが画面の幅が1802ピクセルである理由です)。
ワークスペースがwmctrlに表示されないのはなぜですか?これらはGUIで適切に動作し、すべてのショートカットキーは正常に機能し、ワークスペース間でウィンドウを移動するためのメニュー項目は問題ありません。 wmctrlに必要なものを表示させるにはどうすればよいですか?ワークスペース情報を正確に取得する別の方法はありますか?
Compizは、デスクトップの代わりにビューポートを実装します。デスクトップの幅に基づいてビューポートの数を計算できます。
$ wmctrl -d
0 * DG: 7680x1200 VP: 0,0 WA: 0,0 1920x1175 Workspace 1
これは、4つのビューポート(7680/1920 = 4)があり、現在最初のビューポートを見ていることを示しています。 (残念ながら、エッジにスペースをとるパネルがあると作業領域が縮小するため、wmctrlでビューポートの幅を確実にフェッチする方法がわかりません。ハード数値を使用するか、xdpyinfoを使用してピクセルの寸法を見つけることができます画面の。)
2番目のビューポートに切り替えるには:
$ wmctrl -o 1920,0
このようなものをbashで解析したい場合は、次に例を示します。
$ dimensions=$(xdpyinfo | awk '$1=="dimensions:"{print $2}')
$ screen_width=${dimensions%x*}
$ info=( $(wmctrl -d | awk '{print $4, $6}') )
$ desktop_width=${info[0]%x*}
$ viewports=$(( desktop_width / screen_width ))
$ current_vp=$(( ${info[1]%,*} / screen_width ))