[PYTHON] X에서 활성 창 제목 가져 오기
PYTHONX에서 활성 창 제목 가져 오기
활성 창 제목을 얻으려고합니다. 응용 프로그램은 백그라운드 작업이므로 사용자가 Eclipse를 열면이 함수는 "Eclipse - blabla"를 반환하므로 내 자신의 창의 창 제목이 표시되지 않습니다. PyQt4를 사용하여 Python 2.6에서 이것을 개발 중입니다.
내 현재 솔루션, 빌린 약간 수정 된 그래서 여기에 늙은 대답은 다음과 같습니다 :
def get_active_window_title():
title = ''
root_check = ''
root = Popen(['xprop', '-root'], stdout=PIPE)
if root.stdout != root_check:
root_check = root.stdout
for i in root.stdout:
if '_NET_ACTIVE_WINDOW(WINDOW):' in i:
id_ = i.split()[4]
id_w = Popen(['xprop', '-id', id_], stdout=PIPE)
for j in id_w.stdout:
if 'WM_ICON_NAME(STRING)' in j:
if title != j.split()[2]:
return j.split("= ")[1].strip(' \n\"')
대부분의 창문에서 작동하지만 전부는 아닙니다. 예를 들어 내 kopete 채팅 창이나 현재 개발중인 응용 프로그램의 이름을 찾을 수 없습니다.
내 다음 시도는 다음과 같습니다.
def get_active_window_title(self):
screen = wnck.screen_get_default()
if screen == None:
return "Could not get screen"
window = screen.get_active_window()
if window == None:
return "Could not get window"
title = window.get_name()
return title;
그러나 어떤 이유로 창은 항상 없음입니다.
누군가 현재 창 제목을 얻는 더 좋은 방법을 가지고 있습니까, 아니면 모든 창에서 작동하는 방식 중 하나를 수정하는 방법이 있습니까?
편집하다:
누군가가 궁금해하는 경우에 이것이 모든 창에서 작동하는 것으로 보이는 방법입니다.
def get_active_window_title(self):
root_check = ''
root = Popen(['xprop', '-root'], stdout=PIPE)
if root.stdout != root_check:
root_check = root.stdout
for i in root.stdout:
if '_NET_ACTIVE_WINDOW(WINDOW):' in i:
id_ = i.split()[4]
id_w = Popen(['xprop', '-id', id_], stdout=PIPE)
id_w.wait()
buff = []
for j in id_w.stdout:
buff.append(j)
for line in buff:
match = re.match("WM_NAME\((?P<type>.+)\) = (?P<name>.+)", line)
if match != None:
type = match.group("type")
if type == "STRING" or type == "COMPOUND_TEXT":
return match.group("name")
return "Active window not found"
해결법
-
==============================
1.xdotool이 그렇게 할 수 있습니다.
xdotool이 그렇게 할 수 있습니다.
xdotool getactivewindow
-
==============================
2.솔루션을 약간 수정하여보다 효율적으로 실행해야합니다 (xprop에 매개 변수를 전달하므로 필요한 데이터 만 반환 됨). 또한 xprop의 출력을 버퍼링 할 필요가 있는지 확신 할 수 없으므로이를 제거했습니다. 어떤 이유로 액티브 윈도우를 찾을 수없는 경우 "액티브 윈도우를 찾을 수 없음"도 반환해야합니다.
솔루션을 약간 수정하여보다 효율적으로 실행해야합니다 (xprop에 매개 변수를 전달하므로 필요한 데이터 만 반환 됨). 또한 xprop의 출력을 버퍼링 할 필요가 있는지 확신 할 수 없으므로이를 제거했습니다. 어떤 이유로 액티브 윈도우를 찾을 수없는 경우 "액티브 윈도우를 찾을 수 없음"도 반환해야합니다.
def get_active_window_title(self): root = Popen(['xprop', '-root', '_NET_ACTIVE_WINDOW'], stdout=PIPE) for line in root.stdout: m = re.search('^_NET_ACTIVE_WINDOW.* ([\w]+)$', line) if m != None: id_ = m.group(1) id_w = Popen(['xprop', '-id', id_, 'WM_NAME'], stdout=PIPE) break if id_w != None: for line in id_w.stdout: match = re.match("WM_NAME\(\w+\) = (?P<name>.+)$", line) if match != None: return match.group("name") return "Active window not found"
-
==============================
3.xdotool을 사용하여 활성 창 제목을 가져올 수 있습니다.
xdotool을 사용하여 활성 창 제목을 가져올 수 있습니다.
$ xdotool getactivewindow getwindowname
from https://stackoverflow.com/questions/3983946/get-active-window-title-in-x by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] matplotlib - 이미지를 변수에 저장 (0) | 2018.11.02 |
---|---|
[PYTHON] "% s"% 형식과 "{0}". format () vs "?"형식 (0) | 2018.11.02 |
[PYTHON] Python Matplotlib로 그림과 그림 결합 (0) | 2018.11.02 |
[PYTHON] 로컬 컴퓨터 또는 웹 리소스에서 jupyter 노트북에 이미지 또는 그림을 포함시키는 방법? (0) | 2018.11.02 |
[PYTHON] 헤 루쿠 산발적 인 높은 응답 시간 (0) | 2018.11.02 |