Inkonsistentes Verhalten von wmctrl beim Maximieren des Terminals von .bashrc

Inkonsistentes Verhalten von wmctrl beim Maximieren des Terminals von .bashrc

ich habe das

wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz

in meiner .bashrc, um mein Terminal beim Öffnen zu maximieren. Das Seltsame ist, dass es nur zufällig zu funktionieren scheint, manchmal führt es zu einem Terminal im Vollbildmodus und manchmal nicht, ohne erkennbares Muster. Die Eingabe des obigen Befehls in ein bereits geöffnetes Terminal ist immer erfolgreich.

Ich möchte darauf hinweisen, dass der Befehl xdotool windowsize $(xdotool getactivewindow) 100% 100%(vonDasAntwort), das einen ähnlichen Effekt erzielt, verursacht auch das gleiche sporadische Verhalten, wenn es in meiner .bashrc platziert wird. Auch hier funktioniert es immer, wenn es von einer bereits geöffneten Eingabeaufforderung ausgeführt wird. AußerdemManchmalWenn dieser Befehl nicht funktioniert, erhalte ich vor der ersten Eingabeaufforderung die folgende Fehlermeldung:

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

Dies lässt mich vermuten, dass der gesamte Fehler darauf zurückzuführen ist, das aktuell aktive Fenster zu finden.

Ich verwende Mint 19.3 mit XFCE4 und mein Terminal ist urxvt. Was könnte die Ursache für dieses inkonsistente Verhalten sein?

Antwort1

Dies scheint einXY-Problem. Es gibt einen Wettlauf zwischen dem angezeigten Terminal und dem Shell-Startskript, das versucht, es zu finden und seine Größe zu ändern. Der OP hat festgestellt, dass ein sleep 0.1ausreicht, damit das Fenster als aktives Fenster gefunden wird.

Das Richtige ist jedoch, das Terminal mit der richtigen Anfangsgröße zu öffnen, anstatt es mit einer Standardgröße zu öffnen und dann die Größe zu ändern. Die Anfangsgröße kann entweder über in den X-Server geladene Standardwerte angegeben werden, normalerweise mit dem xdbProgramm, oder mit dem Standardbefehl -geometryfür den Terminalemulator.

verwandte Informationen