![从 .bashrc 最大化终端时 wmctrl 的行为不一致](https://linux22.com/image/168978/%E4%BB%8E%20.bashrc%20%E6%9C%80%E5%A4%A7%E5%8C%96%E7%BB%88%E7%AB%AF%E6%97%B6%20wmctrl%20%E7%9A%84%E8%A1%8C%E4%B8%BA%E4%B8%8D%E4%B8%80%E8%87%B4.png)
我有这个
wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
在我的 .bashrc 中,以便在打开时最大化我的终端。奇怪的是,它似乎只是随机工作,有时会导致全屏终端,有时则不会,没有可辨别的模式。在已打开的终端中输入上述命令始终会成功。
我应该注意到该命令xdotool windowsize $(xdotool getactivewindow) 100% 100%
(来自这答案),它达到了类似的效果,当放置在我的 .bashrc 中时也会导致相同的零星行为。同样,当从已经打开的提示符运行时它总是有效。更远,有时当此命令不起作用时,我将在第一个提示之前收到以下错误消息:
XGetWindowProperty[_NET_ACTIVE_WINDOW] failed (code=1)
xdo_get_active_window reported an error
There are no windows in the stack
Invalid window '%1'
Invalid argument count, got 3, expected 2
Usage: windowsize [--sync] [--usehints] [window=%1] width height
If no window is given, %1 is used. See WINDOW STACK in xdotool(1)
--usehints - Use window sizing hints (like font size in terminals)
--sync - only exit once the window has resized
这让我认为整个错误在查找当前活动窗口上达到了平衡。
我使用 Mint 19.3 和 XFCE4,我的终端是 urxvt。是什么导致了这种不一致的行为?
答案1
这似乎是一个XY问题。显示的终端与尝试查找终端并调整其大小的 shell 启动脚本之间存在竞争。 OP 发现 asleep 0.1
足以让窗口被发现为活动窗口。
然而,正确的做法是以正确的初始大小打开终端,而不是以某种默认大小打开它,然后调整它的大小。初始大小可以通过加载到 X 服务器中的默认值(通常使用程序)或使用终端仿真器的xdb
标准命令来指定。-geometry