ivo*_*ron 6 shortcut-keys unity workspaces
我非常依赖 wmctrl 在窗口之间切换,基本上是为了避免多次键入 alt-tab。我一直使用一个工作区,但现在我想开始使用多个工作区。
我想知道是否可以修改 wmctrl 的上下文,以便在我键入时wmctrl -l,只显示当前工作区中的窗口,而不是所有工作区中的所有窗口。
例如,假设我在工作区 1 中打开了一个 Firefox 窗口。我有一个ctrl+alt+f执行的键盘快捷键wmctrl -a firefox,它切换到 Firefox。如果我在工作区 2 上打开一个新的 Firefox 窗口并键入ctrl+alt+f,它将切换到工作区 1 的窗口,这不是我想要的。
关于如何解决这个问题的任何建议/想法?
编辑:我正在使用 compiz (Unity)
如果您正在使用 Compiz(wmctrl -m如果不确定则运行),wmctrl 只能看到 1 个桌面(wmctrl -l 的第二个字段,即 0),但您可以使用几何 (-G) 选项来知道哪个窗口在哪个虚拟桌面上。当前桌面中的所有窗口的 x 位置都介于 0 和屏幕宽度之间。0 和屏幕高度之间的 y 位置也是如此。所以你可以使用类似的东西
#!/bin/bash
SCREEN_W=$(xwininfo -root | sed -n 's/^ Width: \(.*\)$/\1/p')
SCREEN_H=$(xwininfo -root | sed -n 's/^ Height: \(.*\)$/\1/p')
NAME='Navigator.Firefox'
wmctrl -xlG | awk -v W="$SCREEN_W" -v H="$SCREEN_H" -v NAME="$NAME" '$7==NAME && $3>=0 && $3<W && $4>=0 && $4<H {print $1}' | while read WINS; do wmctrl -ia "$WINS"; done
exit 0
Run Code Online (Sandbox Code Playgroud)
如果愿意,您可以对屏幕的宽度和高度进行硬编码,如果您想要单线,则可以对 NAME 进行硬编码。我不确定您想如何处理与 NAME 匹配的多个窗口。这将使他们全部集中。
对于 metacity,可以使用wmctrl -l和 grepping 2nd 字段找到桌面窗口数。
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |