GNU/Linux >> Tutoriales Linux >  >> Linux

Obtenga el título de la ventana actual con Python y Xorg

EDITAR

mejor manera:

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

Forma alternativa:

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

Noté que wnck requiere un bucle de eventos GTK para actualizar la ventana activa. No hay tal 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 solución basada en xprop de Killown se puede compactar en una declaración única (aunque larga):

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. ¿Cómo compilar e instalar Python con soporte OpenSSL?

  2. Cómo obtener el ancho de la ventana de la consola de Linux en Python

  3. ¿Cómo puedo controlar el teclado y el mouse con Python?

  4. Usando el comando `fecha` para obtener el mes anterior, actual y el próximo

  5. Título de la aplicación Qt

Cómo instalar y comenzar con Git en Mac

Cómo obtener la fecha y hora actuales en Python

Aprenda a detectar equipos de red con Scientific Linux 7.1 y Python

Comience con GNUPlot

Cómo instalar Nginx con Lets encrypt y obtener A+ de SSLLabs Test

Obtenga detalles del sistema y hardware con uname y lscpu en Debian