web-dev-qa-db-ja.com

wmctrlは、実際には4つあるのに、1つのワークスペースがあると言っています

このスクリプトを開始点として使用して、ワークスペースごとに1つのgvimを作成しようとしています: http://www.openhex.org/notes/2011/1/27/one-vim-server-per-desktops

数か月前にこのスクリプトを最初に見つけたとき、wmctrl -d4つのワークスペースをリストしました。しかし、今試してみると、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に必要なものを表示させるにはどうすればよいですか?ワークスペース情報を正確に取得する別の方法はありますか?

5
Ned Batchelder

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 ))
8
Aron Griffis