.bashrc からターミナルを最大化する際の wmctrl の動作が一貫していない

.bashrc からターミナルを最大化する際の wmctrl の動作が一貫していない

私はこれを手に入れた

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 です。この一貫性のない動作の原因は何でしょうか?

答え1

これは、XY問題表示されている端末と、それを見つけてサイズを変更しようとするシェル起動スクリプトとの間に競合が発生します。OP は、sleep 0.1ウィンドウをアクティブなものとして検出するには、 で十分であることを発見しました。

ただし、正しい方法は、ターミナルを何らかのデフォルト サイズで開いてからサイズを変更するのではなく、正しい初期サイズで開くことです。初期サイズは、通常はプログラムを使用して X サーバーにロードされたデフォルトを介して指定するか、ターミナル エミュレーターのxdb標準コマンドを使用して指定できます。-geometry

関連情報