Bash

wmctrl 在最大化來自 .bashrc 的終端時的行為不一致

  • March 11, 2020

我有這個

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

這讓我認為整個錯誤平衡在找到目前活動的視窗上。

我正在使用帶有 XFCE4 的 Mint 19.3,我的終端是 urxvt。什麼可能導致這種不一致的行為?

這似乎是一個XY 問題。正在顯示的終端與嘗試查找和調整終端大小的 shell 啟動腳本之間存在競爭。OP 發現 asleep 0.1足以讓該視窗被發現為活動視窗。

然而,正確的做法是以正確的初始大小打開終端,而不是以某個預設大小打開它然後調整它的大小。初始大小可以通過載入到 X 伺服器的預設值來指定,通常使用xdb程序,或者使用-geometry終端仿真器的標準命令。

引用自:https://unix.stackexchange.com/questions/572271