web-dev-qa-db-ja.com

Linuxで開いているウィンドウのリストを取得する

ps axは実行中のすべてのプロセスを表示します。同様のことをしたいのですが、実際のプロセスの名前ではなく、代わりにウィンドウ名をリストしたいのです。これを行うLinuxコマンドは何ですか?

25
tony_sid

wmctrl -lはあなたが探しているものかもしれません。 wmctrl プログラムは、ウィンドウの移動やプロパティの設定など、ウィンドウに対していくつかの簡単なアクションを実行することもできます。

xlsclientsは実行中のクライアントを示し、xwininfo -root -childrenは、ルートウィンドウのすべての子を表示します。これには、ウィンドウマネージャーやデスクトップがレンダリングするものも含まれます。

18
Aaron Digulla

名前のみを表示する方法は次のとおりです。

wmctrl -l|awk '{$3=""; $2=""; $1=""; print $0}'

wmctrl -lは、質問で必要な名前だけでなく、少し余分な情報を表示します。

このような:

0x020002c6  0 ruslan-Latitude-E6410 fromscratch
0x04600007  0 ruslan-Latitude-E6410 Psensor - Temperature Monitor
0x01600007  0 ruslan-Latitude-E6410 Top Expanded Edge Panel
0x01600017  0 ruslan-Latitude-E6410 Bottom Expanded Edge Panel
0x0200000a -1 ruslan-Latitude-E6410 Desktop
0x05a0000c  0 ruslan-Latitude-E6410 ruslan@ruslan-Latitude-E6410: /var/lib/apt
0x05600085  0 ruslan-Latitude-E6410 index.html (~/Dropbox/cpucraft.com/fromscratch) - gedit

awkでフィルタリングすると、開いているウィンドウの名前のみが取得されます。

   fromscratch
   Psensor - Temperature Monitor
   Top Expanded Edge Panel
   Bottom Expanded Edge Panel
   Desktop
   ruslan@ruslan-Latitude-E6410: /var/lib/apt
   index.html (~/Dropbox/cpucraft.com/fromscratch) - gedit
   ubuntu - Get a list of open windows in Linux - Super User - Mozilla Firefox
   [email protected] - FileZilla
4

タイトルだけを必要とし、他の情報(空白も含めない)が必要ない場合は、次のように使用できます。

wmctrl -l | grep -o "$HOSTNAME.*" | sed "s/$HOSTNAME //g"

結果:

 linux-grepと置換の方法-Stack Overflow-Pale Moon 
 sedで変数を使用するにはどうすればよいですか? | Unix Linuxフォーラム|シェルプログラミングとスクリプティング-Pale Moon 
 GREPを使用してテキストファイル内の文字*または#または&の後のすべてを削除-Stack Overflow-Pale Moon 
 Video.mp4-VLC Media Player 
2
Smile4ever