端末を使用してさまざまなウィンドウで「閉じる」イベントをシミュレートする方法はありますか?

端末を使用してさまざまなウィンドウで「閉じる」イベントをシミュレートする方法はありますか?

Ask Ubuntuに答えたgnome-terminalコマンドですべてのインスタンスを終了します。しかし、皆さんが読むことができるように、この「オフ」イベントをシミュレートするために使用できる電話gnome-terminalはありません。SIGだから質問があります。 GNOME/KDE/LXDE/{ここにウィンドウ/デスクトップマネージャ/環境を入力してください}で「閉じるボタンをクリック」イベントをシミュレートする方法はありますか?私は持っています読む その他 質問 それこれと関連があるかもしれませんが、この質問には答えないでください。

私が探しているのはグローバルさまざまなシナリオでこれを実行するコマンド(存在する場合)。存在しない場合は、「閉じる」ボタンがどのように機能するかを説明してください。

利用可能な用途:

答え1

関連するマニュアルページは次のとおりです。XKillClient。あなたはそれを使用することができますxdotool以下のように端末で閉じるボタンクリックをシミュレートします。

はい

gnome-terminal開いたファイルがあり、名前が「saml@grinchy:/home」であるとします。

  1. ウィンドウIDの取得

    $ xdotool search --name "saml@grinchy:/home"
    96488188
    
  2. Alt+送信F4

    $ xdotool windowactivate --sync 96488188 key --clearmodifiers \
         --delay 100 alt+F4
    

2 番目のコマンドの中に最初のコマンドを挿入して、それらを 1 つにまとめることができます。

$ xdotool windowactivate --sync $( ...1st command...) key --clearmodifiers \
         --delay 100 alt+F4

xdotool次の2つの操作を同時に実行すると、自分自身を救うことができます。

$ xdotool search --name "saml@grinchy:~" key alt+f4

世界的に

私が提供した内容を変更して、Windowsで同じ名前で実行できます。

$ xdotool search --name "saml@grinchy:~"
96488779
96468996

またはWindowsの他のプロパティを介して。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&ですxpropxdpyinfoXサーバーに関する情報を見つけるために使用できます。これにより、どのウィンドウに焦点が合っているかを確認できます。

$ xdpyinfo |grep focus
focus:  window 0x5c00005, revert to Parent

xpropそして、クリックせずに興味のあるウィンドウIDを提供できるトグルがxwininfoあります。-id

$ xprop -id 0x5c00001|grep -i class
WM_CLASS(STRING) = "gnome-terminal", "Gnome-terminal"

引用する

答え2

私はxdotoolそれがかなり不安定であるかバグがあることを知り、時々閉じなければならないウィンドウの代わりに前景ウィンドウを閉じたときもありました。これは、ウィンドウイベントを直接送信せず、ウィンドウを前景に取り込んだ後にキー押下を送信する方法によるものと思われますが、これは非常に面倒な問題です。使用することをお勧めしますwmctrl、キーストロークを送信せずにウィンドウを直接閉じます。

名前を一致させてウィンドウを直接閉じることができます。たとえば、両方とも「タイトルなし文書1 - gedit」ウィンドウを閉じます。

wmctrl -c "gedit"
wmctrl -c "Untitled"

この-Fオプションを使用すると、正確な一致のみを考慮できます。

wmctrl -F -c "Untitled Document 1 - gedit"

または、IDを直接提供することもできます。

wmctrl -i -c "121634821"

より多くの使用例/文書を見つけることができます。ここ

私が非常に便利だと思ったことの1つは、パラメータをxdotool使用して--sync結果を待つ機能です。 2つのコマンドを1つにまとめる方法は次のとおりです。

xdotool search --sync --name "gedit" | xargs wmctrl -i -c

Macを使用している場合は、次のパラメータが必要な場合が-I{}あります。

xdotool search --sync --name "gedit" | xargs -I{} wmctrl -i -c {}

複数のウィンドウをサポートするには、呼び出しxargsごとにwmctrl最大1つの引数を知らせる必要があります-nwmctrl複数のウィンドウは引数として明示的にサポートされていません。

xdotool search --sync --name "gedit" | xargs -I{} -n 1 wmctrl -i -c {}

そのウィンドウが1つ以上表示されるのを待ってから、すべて閉じます。

答え3

pkill(1) が必要です。

関連情報