GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Holen Sie sich den aktuellen Fenstertitel mit Python und Xorg

BEARBEITEN

beste Weg:

import gtk
import wnck
import glib

class WindowTitle(object):
    def __init__(self):
        self.title = None
        glib.timeout_add(100, self.get_title)

    def get_title(self):
        try:
            title = wnck.screen_get_default().get_active_window().get_name()
            if self.title != title:
                self.title  = title
                print title
        except AttributeError:
            pass
        return True

WindowTitle()
gtk.main()

Alternativer Weg:

from subprocess import PIPE, Popen
import time

title = ''
root_check = ''

while True:
    time.sleep(0.6)
    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]:
                    title = j.split()[2]
                    print "current window title: %s" % title

Mir ist aufgefallen, dass wnck eine GTK-Ereignisschleife benötigt, um das aktive Fenster zu aktualisieren. Bei Xlib gibt es dieses Problem nicht:

import Xlib
import Xlib.display
disp = Xlib.display.Display()
window = disp.get_input_focus().focus

# Get active window class and name
window.get_wm_class()
window.get_wm_name()

killowns xprop-basierte Lösung kann in eine einzige (wenn auch lange) Anweisung komprimiert werden:

import subprocess
def GetActiveWindowTitle():
    return subprocess.Popen(["xprop", "-id", subprocess.Popen(["xprop", "-root", "_NET_ACTIVE_WINDOW"], stdout=subprocess.PIPE).communicate()[0].strip().split()[-1], "WM_NAME"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0].strip().split('"', 1)[-1][:-1]

Linux
  1. Wie kompiliere und installiere ich Python mit OpenSSL-Unterstützung?

  2. Den Fenstertitel für ein beliebiges Fenster in Kde überschreiben und einen benutzerdefinierten Fenstertitel festlegen?

  3. Beginnen Sie mit GlusterFS – Überlegungen und Installation

  4. Holen Sie sich die aktuelle Uhrzeit in Stunden und Minuten

  5. Android - X Window mit GNURoot

So installieren und beginnen Sie mit Git auf dem Mac

So erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit in Python

Erfahren Sie, wie Sie Netzwerkgeräte mit Scientific Linux 7.1 und Python erkennen

Beginnen Sie mit GNUPlot

So installieren Sie Nginx mit Lets encrypt und erhalten A+ von SSLLabs Test

Erhalten Sie System- und Hardwaredetails mit uname und lscpu unter Debian