web-dev-qa-db-ja.com

端末からアクティブウィンドウを閉じる

あなたはそれを行う方法を知っていますか?キーボード(Alt + F4)からそれを行う方法を知っています。マウス(Xをクリックします)でそれを行う方法を知っています。また、kill XがID Xのプロセスを強制終了することも知っています(そしてkillall YはYという名前のプロセスを強制終了します)。しかし、ターミナルからactive windowを殺す方法を知りたいです。

したがって、上記で述べたことから、有効な答えはアクティブウィンドウのIDを取得することでもあります。

今は xte (Alt + F4をシミュレート)からこの関数を実装していますが、別のアプリのインストールを暗示しない方法があるかどうか知りたいです。皆さん、ありがとうございました。

編集。完全なスクリプトは次のとおりです。最初に「Ctrlを押したときにマウスを表示する」を有効にしてから、このスクリプトをCompizConfigのコマンドに追加し、右上隅にバインドします。右上隅をタッチすると、マウスの周りに小さな通知が表示されます。何もしないと、アクティブウィンドウは1秒後に閉じます。ただし、2秒以内に再び角をタッチすると、アクティブなウィンドウは閉じられません。

xte 'key Control_R'; if [ -f ~/.fcont ]; then rm -f -r ~/.fcont; else touch ~/.fcont; sleep 1;  if [ -f ~/.fcont ]; then xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`; rm -f -r ~/.fcont; fi fi

this 少し前に作成した質問には答えられなかったため、以前の名前のxteアプリを使用していることに注意してください。

6

そして、本当に毛むくじゃらになり、デフォルトでインストールされていないアプリケーションを避けたい場合:

xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2`

繰り返しますが、これはかなりうまくいくようです。

注:someアプリケーション(コメントを参照)の場合、これはアプリケーションのすべてのウィンドウが閉じていることを意味する場合があります。 gnome-terminalはそのようなアプリケーションの1つですが、terminatorxtermは影響を受けません。これは、私のコマンドのバグではなく、これらのアプリケーションのバグ(おそらく設計による)です。

5
Oli

wmctrlを使用した高レベルの「クローズ」操作

次のコマンドも、EWMH仕様を使用して現在アクティブなウィンドウを閉じますが、doesは別のプログラムをインストールする必要があります。

仕様

  • これは、高レベルの「クローズ」操作です。つまり、「閉じる」ガジェットまたはキーショートカットでマウスクリックを介して送信されるウィンドウを閉じるように要求するメッセージとまったく同じメッセージをアプリケーションに送信します。
  • キーショートカットをエミュレートしないため、キーショートカットが何であれ、またはショートカットが構成されていない場合(またはキーボードが構成されていない場合でも)動作します。

その結果、予想される動作があります。

  • アプリ全体ではなく、ターゲットのウィンドウのみを閉じます(xfce4-terminal、Chromium、Thunderbirdでテスト済み)。
  • また、確認を求める(メールが書き込まれているウィンドウでThunderbirdで確認され、Firefoxがいくつかの開いているタブでウィンドウを閉じる前に確認を求める)など、閉じるイベントに反応するアプリケーションを提供します。行事。

コマンド

 wmctrl -c:ACTIVE:

参照

プロジェクトのホームページから wmctrl-EWMH/NetWM互換のXウィンドウマネージャーと対話するためのコマンドラインツール。

-cウィンドウを正常に閉じます。

そして

特別な文字列 ":ACTIVE:"(引用符なし)を使用して、現在アクティブなウィンドウをアクションに使用するようにwmctrlに指示できます。

1

xdotoolを使用します:

xdotool windowkill `xdotool getactivewindow`

素早く静かに仕事をするようです。

1
Oli