我想集思广益,想出一个可以在多个桌面 UI 和多个 Linux 终端(如果可能)上运行的脚本,该脚本可以“智能地”定位终端窗口。静态设置大小和位置的问题很明显 - 不同的屏幕分辨率。
用户案例 1:Ann 喜欢使用多个终端窗口,并且她希望一个终端窗口使用屏幕的上半部分,另一个终端窗口使用屏幕的下半部分,但每个终端窗口的宽度应为屏幕分辨率的 80%。
用户案例 2:Bill 只使用一个终端,但他喜欢将其放在右下角,并具有全屏分辨率的 40% 宽度和 30% 高度。
答案1
你应该能够做一些事情wmctrl
:
wmctrl 是一个 UNIX/Linux 命令行工具,用于与 EWMH/NetWM 兼容的 X Window Manager 进行交互。
该工具提供对 EWMH 规范中定义的几乎所有功能的命令行访问。例如,它可用于获取有关窗口管理器的信息、获取桌面和管理窗口的详细列表、切换和调整桌面大小、使窗口全屏、始终位于上方或粘滞,以及激活、关闭、移动、调整大小、最大化和最小化它们。
只需为 Ann 和 Bill 编写类似这样的脚本:
#!/bin/bash
xterm &
sleep 2 ## sleep just to let the terminas appear and become the active window
wmctrl -r :ACTIVE: -e 5,-1,-1,660,540
----------- -- -- -- --- ---
| | | | | |---> Window height
| | | | |-------> Window width
| | | |-----------> Window Y coordinates
| | |--------------> Window X coordinates
| |----------------> Gravity
|--------------------------> Apply to the active window
引力可以是(来源):
- 西北 (1)
- 北 (2),
- 东北地区 (3)、
- 西 (4),
- 中锋(5)
- 东 (6),
- 西南航空 (7)、
- 南 (8),
- 东南 (9)
- 静态(10)。
重力为 0 表示窗口管理器应使用 中指定的重力
WM_SIZE_HINTS.win_gravity
。
如果您查看,您应该能够找到一种具体指定终端窗口的方法man wmctrl
。否则,请使用我的sleep
&& active
hack。
更新以回应您的评论:
我可以用这个让活动窗口移动到屏幕的右下角:
wmctrl -r :ACTIVE: -e 4,3040,900,620,620
我不太清楚重力在做什么,但指定 X 和 Y 是可行的。我正在运行一个扩展桌面分布在两个屏幕上的系统:
$ xrandr | grep -w connected
VGA-0 connected 1440x900+1600+0 (normal left inverted right x axis y axis) 408mm x 255mm
DP-3 connected 1600x900+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
所以,1600+1440 = 3040
这意味着3040
我的窗口将位于右下角。当然,您需要根据您的设置进行调整。