Как я могу захватить все окна с определенным словом в их заголовках? - PullRequest
2 голосов
/ 13 ноября 2009

У меня работает gnome, и у меня есть программа, которая порождает большое количество отдельных процессов, каждый из которых имеет собственное окно графического интерфейса. Я хотел бы иметь возможность выборочно получать открытые окна, заголовки которых соответствуют определенному шаблону, чтобы закрыть их. Кто-нибудь знает способ сделать это легко?

Ответы [ 2 ]

4 голосов
/ 14 ноября 2009

Отлично, jleedev, вот небольшой трюк, чтобы написать его и использовать шаблон для соответствия окнам.

#!/usr/bin/python

import pygtk
pygtk.require('2.0')
import gtk
import wnck
import re
import sys

if(len(sys.argv) < 2):
  print 'A regex pattern is required to match window titles'
  print 'Usage: wkill <regex>'
  sys.exit(1)

screen = wnck.screen_get_default()
while gtk.events_pending():
    gtk.main_iteration()

titlePattern = re.compile(sys.argv[1])

windows = screen.get_windows()
for w in windows:
  if titlePattern.match(w.get_name()):
    print "Closing window - ", w.get_name()
    w.close(0)
4 голосов
/ 13 ноября 2009

Вы определенно хотите использовать python-wnck (для документации вам может потребоваться поиск python-gnome-extras, или привязок Perl, или просто простой документации на Си). WNCK написан, чтобы облегчить просмотр экранов, рабочих областей и окон. Примерно так:

import pygtk
pygtk.require('2.0')
import gtk
import wnck

screen = wnck.screen_get_default()
while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
for w in windows:
    if w.get_name() == 'foo':
        w.close(0)

... но я не проверял.

(Кроме того, это не будет зависеть от GNOME. Работает с любой рабочей средой.)

...