私はAsk Ubuntuで答えました コマンドを使用してgnome-terminal
のすべてのインスタンスを終了します しかし、すべての人がgnome-terminal
を読み取ることができるので、SIG
callはできませんでしたこの「閉じる」イベントをシミュレートするために使用します。だからこれは私に尋ねるように導きました、「ここをクリックしてウィンドウ/デスクトップマネージャー/環境をここに置く} GNOME/KDE/LXDE /「閉じるボタンをクリック」イベントをシミュレートする方法はありますか?私は readdifferentquestionsthat と関係がある可能性がありますが、これには答えません。
私が探しているのは、さまざまなシナリオでこれを行うためのglobalコマンド(存在する場合)です。存在しない場合は、[閉じる]ボタンの動作を説明してください。
可能な用途:
gnome-terminal
インスタンスを閉じますが、まだ実行中の子プロセスがある場合は警告します。関連するmanページは XKillClient だと思います。 xdotool
を使用して、ターミナルから閉じるボタンがクリックされるのをシミュレートできます。
私がgnome-terminal
オープンし、その名前は「saml @ grinchy:/ home」です。
ウィンドウIDを取得する
$ xdotool search --name "saml@grinchy:/home"
96488188
それを送る Alt+F4
$ xdotool windowactivate --sync 96488188 key --clearmodifiers \
--delay 100 alt+F4
最初のコマンドを2番目のコマンドに埋め込むことで、それらをまとめることができます。
$ xdotool windowactivate --sync $( ...1st command...) key --clearmodifiers \
--delay 100 alt+F4
xdotool
に同時に両方を実行させると、自分を救うことができます。
$ xdotool search --name "saml@grinchy:~" key alt+f4
同じ名前のウィンドウで実行するために、私が提供したものを適応させることができます。
$ xdotool search --name "saml@grinchy:~"
96488779
96468996
または他の属性によるウィンドウ。 xwininfo
を使用して、特定のウィンドウの詳細を調べることができます。それを実行し、関心のあるウィンドウをクリックしてください:
$ xwininfo
xwininfo: Please select the window about which you
would like information by clicking the
mouse in that window.
xwininfo: Window id: 0x5c04d4b "saml@grinchy:~"
Absolute upper-left X: 14
Absolute upper-left Y: 74
Relative upper-left X: 14
Relative upper-left Y: 74
Width: 941
Height: 361
Depth: 32
Visual: 0x62
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x5c00003 (not installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +14+74 -485+74 -485-465 +14-465
-geometry 132x24+14+74
X11ウィンドウを扱うときに役立つその他のツールは、xdpyinfo
&xprop
です。 xdpyinfo
は、Xサーバーに関する情報を見つけるために使用できます。したがって、どのウィンドウにフォーカスがあるかを把握できます。
$ xdpyinfo |grep focus
focus: window 0x5c00005, revert to Parent
xprop
およびxwininfo
は-id
スイッチをクリックすると、興味のあるウィンドウIDをクリックせずに提供できます。
$ xprop -id 0x5c00001|grep -i class
WM_CLASS(STRING) = "gnome-terminal", "Gnome-terminal"
xdotool
が不安定/バギーであることがわかりました。閉じる必要があるウィンドウではなく、前景ウィンドウが閉じる場合があります。これは、ウィンドウイベントを直接送信するのではなく、ウィンドウをフォアグラウンドに移動した後にキーが送信される方法が原因であると思われ、非常に煩わしい問題です。キーストロークを送信せずにウィンドウを直接閉じる wmctrl
の使用をお勧めします。
名前を照合することで、ウィンドウを直接閉じることができます。これらはどちらも「無題のドキュメント1-gedit」ウィンドウを閉じます。
wmctrl -c "gedit"
wmctrl -c "Untitled"
-F
オプションを使用して、完全一致のみを考慮することができます。
wmctrl -F -c "Untitled Document 1 - gedit"
または、IDを直接指定することもできます。
wmctrl -i -c "121634821"
その他の使用例/ドキュメントは here にあります。
私が非常に便利だと思うのは、--sync
引数を使用して結果が得られるまでxdotool
が待機できることです。 2つを1つのコマンドに結合する方法は次のとおりです。
xdotool search --sync --name "gedit" | xargs wmctrl -i -c
Macを使用している場合は、おそらく-I{}
パラメータが必要になります。
xdotool search --sync --name "gedit" | xargs -I{} wmctrl -i -c {}
複数のウィンドウをサポートする場合は、xargs
に-n
オプションを指定して、最大で1つの引数でwmctrl
を呼び出すように指示する必要があります。 wmctrl
は、引数として複数のウィンドウを明示的にサポートしていません。
xdotool search --sync --name "gedit" | xargs -I{} -n 1 wmctrl -i -c {}
これは、そのようなウィンドウが少なくとも1つ存在するまで待機してから、それらすべてを閉じます。