Wil*_*n F 4 keyboard window-manager shortcut-keys
在 Windows 中(至少从 XP 开始,可能以前),如果您使用键盘移动或调整窗口大小,则可以通过使用 Ctrl 键和箭头组合获得非常精确的位置和大小 - 甚至比使用鼠标更准确键(在从窗口菜单 [Alt+Space]调用Move
或Resize
功能之后)将窗口边框一次移动一个像素。
有没有办法在 Ubuntu 中做同样(或类似)的事情?
假设您使用 Unity,下面的脚本将窗口移动或调整大小 1 像素。该脚本可以使用 8 个不同的参数运行。根据您要使用的移动/重新调整大小选项,您可以将命令添加到快捷键组合中。下面是选项和相应命令的概述:
有一些限制:
gnome-terminal
窗口只能逐步调整大小。因此,将窗口大小增加/减少 1px 不适用于gnome-terminal
.首先安装wmctrl,它是获取窗口几何形状和移动窗口所需要的。
sudo apt-get install wmctrl
Run Code Online (Sandbox Code Playgroud)创建一个目录~/bin
(所以在你的主目录中)
move_window
(无扩展名)使其可执行(右键单击文件 > 属性 > 权限(选项卡),勾选“允许执行”)
要进行测试,请打开终端窗口并随后运行:
move_window l
move_window r
move_window u
move_window d
Run Code Online (Sandbox Code Playgroud)
由于终端窗口是最前面的,它应该向左/右/上/下移动 1px。
(如前所述,调整大小不适用于gnome-terminal
)
如果正常,将命令添加到快捷键;
选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并将命令添加到四个不同的快捷键组合中。这可能很棘手,因为您提到的命令可能已被占用。什么对我的系统有效:
为移动动作。
对于调整大小操作,您必须尝试其他组合。
sudo apt-get install wmctrl
Run Code Online (Sandbox Code Playgroud)
wmctrl
报告窗口几何形状的方式和wmctrl
设置窗口几何形状的方式略有不同。在第一种情况下,它从全屏(分辨率)计算,在第二种情况下仅从工作区域 (??) 计算。即便如此,脚本也必须垂直“校准”4 像素,对此我没有找到令人满意的解释。好消息是,在不同的计算机上,我发现偏差没有差异。
如果在您的情况下窗口意外跳转,请发表评论。
这个怎么运作
在以下帮助下查找最前面的窗口xprop
:
xprop -root
Run Code Online (Sandbox Code Playgroud)
在(广泛的)输出中的某处,有这样一行:
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x4600a8d
Run Code Online (Sandbox Code Playgroud)
从我们的窗口-ID可以被解析:0x4600a8d
。由于格式与 有点不同wmctrl
,我们需要在第三个位置添加一个零:0x04200085
窗口 id 用于在 的输出中查找窗口及其当前几何数据wmctrl -lG
。一旦我们有了正确的行,我们在窗口上的数据看起来像:
0x04200085 0 322 52 823 998 <computer_name> <window_name>
Run Code Online (Sandbox Code Playgroud)
其中第 2、3、4、5 列随后是:
通过操作这些图形,我们可以使用以下命令移动/调整窗口大小:(
例如将窗口向右移动 1 像素,将“322”更改为“323”)
wmctrl -ir 0x04200085 -e 0,323,52,823,998
Run Code Online (Sandbox Code Playgroud)有一些复杂情况需要处理,但这基本上就是它的工作原理。