Ned*_*der 5 compiz ubuntu wmctrl
我正在尝试使用此脚本作为起点为每个工作区创建一个 gvim:http : //www.openhex.org/notes/2011/1/27/one-vim-server-per-desktops
我知道几个月前我第一次发现这个脚本时,wmctrl -d列出了四个工作区。但是现在当我尝试时,它只显示一个:
$ wmctrl -d
0 * DG: 7208x1003 VP: 0,0 WA: 0,0 1802x976 Workspace 1
Run Code Online (Sandbox Code Playgroud)
列出窗口显示所有窗口都在同一个桌面上,但间隔屏幕宽度:
$ 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
Run Code Online (Sandbox Code Playgroud)
这是在虚拟框中运行 compiz 的 Ubuntu 10.10(这就是屏幕宽度为 1802 像素的原因)。
为什么我的工作区在 wmctrl 中不可见?它们在 GUI 中的行为正常,所有快捷键都可以正常工作,在工作区之间移动窗口的菜单项也很好。如何让 wmctrl 显示我想要的内容?还有另一种方法可以准确获取工作区信息吗?
小智 8
Compiz 实现视口而不是桌面。您可以根据桌面的宽度计算视口的数量:
$ wmctrl -d
0 * DG: 7680x1200 VP: 0,0 WA: 0,0 1920x1175 Workspace 1
Run Code Online (Sandbox Code Playgroud)
这表示我有四个视口 (7680 / 1920 = 4),我目前正在查看第一个。(不幸的是,我在 wmctrl 中没有看到可靠获取视口宽度的方法,因为如果面板在边缘占用空间,工作区域会缩小。您可以使用硬数字或使用 xdpyinfo 来查找像素尺寸你的屏幕。)
切换到第二个视口:
$ wmctrl -o 1920,0
Run Code Online (Sandbox Code Playgroud)
如果你想在 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 ))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2674 次 |
| 最近记录: |