GNU/Linux >> Linux Esercitazione >  >> Linux

Ottieni il titolo della finestra corrente con Python e Xorg

MODIFICA

modo migliore:

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()

Modo alternativo:

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

Ho notato che wnck richiede il ciclo di eventi GTK per aggiornare la finestra attiva. Non c'è questo problema con Xlib:

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()

La soluzione basata su xprop di killown può essere compattata in una singola (sebbene lunga) istruzione:

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. Come compilare e installare Python con il supporto di OpenSSL?

  2. Come ottenere la larghezza della finestra della console Linux in Python

  3. Ottieni il tempo di creazione del file con Python su Linux

  4. Ottieni il titolo della finestra attiva in X

  5. Utilizzo del comando `date` per ottenere il mese precedente, corrente e successivo

Come installare e iniziare con Git su Mac

Come ottenere la data e l'ora correnti in Python

Scopri come rilevare le apparecchiature di rete con Scientific Linux 7.1 e Python

Inizia con GNUPlot

Come installare Nginx con Lets crittografa e ottieni A+ da SSLLabs Test

Ottieni dettagli di sistema e hardware con uname e lscpu su Debian