Answers:
多亏了Marco,我找到了使用的方法wmctrl。
由于compiz工作区实际上是单个桌面的视口,因此解决方案是移动当前视口以覆盖桌面的中心区域。
首先,致电wmctrl -d获取当前桌面的信息:
read desktop_id _ast \
DG_ geometry \
VP_ viewport \
WA_ wa_off wa_size \
title \
< <(LANG=C wmctrl -d | grep '*')
geom_w=${geometry%x*}
geom_h=${geometry#*x}
# The workarea size isn't accurate, because the top/bottom panel is excluded.
viewport_w=${wa_size%x*}
viewport_h=${wa_size#*x}
rows=$((geom_w / viewport_w))
cols=$((geom_h / viewport_h))
# Fix the viewport size
viewport_w=$((geom_w / rows))
viewport_h=$((geom_h / cols))
然后,计算中心视口的原点:
center_row=$((rows / 2))
center_col=$((cols / 2))
center_x=$((center_col * viewport_w))
center_y=$((center_row * viewport_h))
center_viewport=$center_x,$center_y
并将视口移到那里:
wmctrl -o $center_viewport
以控制compiz。将其另存为compiz-send.py您的主文件夹。python compiz-send.py vpswitch switch_to_5_key以确保其正常运行。它应该将您切换到中心工作区。如果可行,请.switch_to_center_workspace.sh在主文件夹中创建一个名为的文件,并将以下内容粘贴到其中:
#!/bin/bash
sleep 5 && python /home/user/compiz-send.py vpswitch switch_to_5_key
用user您的用户名替换。
打开启动应用程序,系统->首选项->启动应用程序。
单击添加,然后在命令:条目中放置/home/user/.switch_to_center_workspace.sh。在“ 名称:”和“ 注释:”条目中输入所需内容。
注销并重新登录,并验证其是否有效。
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method "activate" with signature "si" on interface "org.freedesktop.compiz" doesn't exist
sleep 5将脚本的一部分更改为更大的数字sleep 10,以确保在脚本运行时compiz已在运行。您正在使用compiz对吗?
我要问类似的问题,但是对于3个水平工作区,我也正在运行compiz,并且wmctrl -d输出(每个工作区)如下所示:
0 * DG: 4098x768 VP: 0,0 WA: 0,24 1366x744 Workspace 10 * DG: 4098x768 VP: 1366,0 WA: 0,24 1366x744 Workspace 10 * DG: 4098x768 VP: 2732,0 WA: 0,24 1366x744 Workspace 1比起我在启动时使用wmctrl -o 1366,0(VP值)简单地将中心作为默认工作区。可能不适合所有人,但以防万一;)
sh -c "sleep 2;/usr/bin/wmctrl -o 1366,0
简要说明-我正在使用Natty,感谢@谢继雷的回答,我注意到通过在Unity的四个“工作区”中的每个移动终端来报告以下内容:
$ wmctrl -d
# top left
0 * DG: 2048x1200 VP: 0,0 WA: 0,24 1024x576 Workspace 1
# bottom left
0 * DG: 2048x1200 VP: 0,600 WA: 0,24 1024x576 Workspace 1
# top right
0 * DG: 2048x1200 VP: 1024,0 WA: 0,24 1024x576 Workspace 1
# bottom right
0 * DG: 2048x1200 VP: 1024,600 WA: 0,24 1024x576 Workspace 1
...即它们既不是独立的桌面也不是工作区-只是视口发生了变化!
因此,要在这四个视口之间切换,只需wmctrl -o使用VP上面列出的值直接调用命令,即:
wmctrl -o 0,0
wmctrl -o 0,600
wmctrl -o 1024,0
wmctrl -o 1024,600
编辑:Ups,对不起,只是看到这与@wik的答案相同-适当地合并/删除。
wmctrl仍然可以在桌面内切换视口。请参阅下面的答案。