Browse Source

В аддон livemode добавлена поддержка Linux

master
cofob 10 months ago
parent
commit
81114e721f
No known key found for this signature in database GPG Key ID: BA5F250F390317D6
  1. 9
      addons/drp/livemode/README.txt
  2. 23
      addons/drp/livemode/__init__.py

9
addons/drp/livemode/README.txt

@ -0,0 +1,9 @@
Для Linux:
Должно работать без зависимостей, проверено на Gnome Arch
Установите wnck (НЕОБЯЗАТЕЛЬНО, sudo apt-get install python-wnck в Ubuntu, см. libwnck.)
Для Windows:
Убедитесь, что win32gui доступен
Для Mac:
Убедитесь, что AppKit доступен

23
addons/drp/livemode/__init__.py

@ -1,11 +1,34 @@
from api import *
def get_linux_active_window_title():
import os, re, sys
from subprocess import PIPE, Popen
root = Popen( ['xprop', '-root', '_NET_ACTIVE_WINDOW'], stdout = PIPE )
stdout, stderr = root.communicate()
m = re.search( b'^_NET_ACTIVE_WINDOW.* ([\w]+)$', stdout )
if m is not None:
window_id = m.group( 1 )
window = Popen( ['xprop', '-id', window_id, 'WM_NAME'], stdout = PIPE )
stdout, stderr = window.communicate()
match = re.match( b'WM_NAME\(\w+\) = (?P<name>.+)$', stdout )
if match is not None:
return match.group( 'name' ).decode( 'UTF-8' ).strip( '"' )
return None
def get_active_window():
import sys
active_window_name = None
if sys.platform in ['linux', 'linux2']:
# Alternatives: http://unix.stackexchange.com/q/38867/4784
window = get_linux_active_window_title()
if window is not None:
return window
try:
import wnck
except ImportError: