4

「last.fm」( http://www.last.fm/download)の「ウィンドウタイトル」が変更された場合(または初めての場合)、X秒ごとにチェックするpythonプログラムを作成しようとしていますプログラムを実行します) ウィンドウ タイトルから取得した文字列を使用して、曲の歌詞を検索し、ユーザーに表示します。

現在、デスクトップ環境として KDE4 を使用しており、last.fm クライアントのウィンドウ タイトルに属する文字列をキャプチャする方法について、「正しい方向に向ける」必要があります。

ありがとう!

4

5 に答える 5

4

モジュールwmctrlを介してユーティリティを使用できます。端末にsubprocess入力して、そこから得られる出力を確認できます。wmctrl -l

于 2009-10-09T14:03:13.623 に答える
2

自動化フレームワークを使用することで、これをサブセットとして実現できると思います。たとえば、dogtail ( https://fedorahosted.org/dogtail/ ) を試してみてください。名前でウィンドウにフォーカスし、名前でボタンをクリックできるため、src コードでタイトルを取得する方法を確認できる場合があります。

于 2009-10-09T07:58:25.743 に答える
1

X11 ユーティリティ、具体的にはxlsclientsとをご覧くださいxprop

例として、Firefox ウィンドウに関する情報を取得するために使用したシェル コマンドを次に示します。

id_=$(xlsclients -al|grep "Command:  firefox-bin" -A1 -B4|head -n1|cut -d ' ' -f 2|tr -d ':')
xprop -id "$_id"

出力:

SM_CLIENT_ID(STRING) = "1181f048b9000125508490000000037360008"
WM_CLASS(STRING) = "firefox-bin", "Firefox-bin"
WM_COMMAND(STRING) = { "firefox-bin" }
WM_CLIENT_LEADER(WINDOW): window id # 0x0
_NET_WM_PID(CARDINAL) = 4265
WM_LOCALE_NAME(STRING) = "no_NO"
WM_CLIENT_MACHINE(STRING) = "gnom.ifi.uio.no"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified size: 10 by 10
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING
WM_ICON_NAME(STRING) = "firefox-bin"
_NET_WM_ICON_NAME(UTF8_STRING) = 0x66, 0x69, 0x72, 0x65, 0x66, 0x6f, 0x78, 0x2d, 0x62, 0x69, 0x6e
WM_NAME(STRING) = "Firefox"
_NET_WM_NAME(UTF8_STRING) = 0x46, 0x69, 0x72, 0x65, 0x66, 0x6f, 0x78
于 2009-10-09T11:46:30.720 に答える
0

別の答えは、アプリケーションが曲の変更をDBusに公開しているかどうかを確認することかもしれません。もしそうなら、あなたはただイベントを聞いてそれに基づいて行動することができます。

于 2009-12-12T11:31:51.190 に答える
0

dcop を使用して kwin を操縦してみてください。おそらく、すべてのウィンドウ タイトルを一覧表示できます。

dcop の使用方法の例については、次を参照してください: http://docs.kde.org/stable/en/kdegraphics/ksnapshot/dcop.html

于 2009-10-09T10:48:30.760 に答える