Как программно манипулировать окнами приложения?

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

Я использую 10.10.

3
задан 21 January 2011 в 12:46

3 ответа

Вы можете использовать спецификацию советов менеджера окон , чтобы сообщить WM об изменении некоторых окон. Это трюк, который использует wmctrl.

Обычно вам нужно использовать XLib для использования EWMH, но для python есть хороший проект: PyTile . Это программа на Python для разбиения на окна. Это не только хороший пример, он объединяет самые важные функции в одном классе. Просто скачайте исходный код и посмотрите на Probe.py, он выполняет большую часть того, что вы просите.

Этот пример максимизирует все окна:

import Probe

prob=Probe.Probe()
winlist=prob.get_window_list()
for win in winlist:
    prob.window_maximize(win)
0
ответ дан 21 January 2011 в 12:46

Самый простой способ сделать это - использовать wmctrl . Вы можете прочитать man wmctrl , чтобы узнать, как его использовать.

sudo apt-get install wmctrl

Вы можете связать командную строку с классом Window и добавить в него методы, которые используют команды wmctrl в фоновом режиме.

class Window
    @@windows = []
    def self.windows
        @@windows
    end
    def self.get_windows
        @@windows.clear
        `wmctrl -l`.split("\n").map do |str|
            @@windows << self.class.new(str.split(' ')*)
        end
    end
    def initialize window_id, desktop_id, client_machine, window_title
        #set up object here
    end
    #add other methods here
end

Это должно быть хорошей отправной точкой. Это не проверено или что-то еще, но вы должны быть в состоянии решить это отсюда. Теперь вы можете добавить методы экземпляра, например. change_geometry, который может использовать опцию -r <WIN> -e <MVARG>.

Вы должны ознакомиться с трубами и IO в целом , прежде чем делать это.

Возможно, когда вы выполнили то, что вам нужно, вы можете распространить это как библиотеку ruby ​​и упаковать в Debian / Ubuntu.

0
ответ дан 21 January 2011 в 12:46

Привет, взгляните на wmctrl. Это не настоящая библиотека, а скрипт командной строки, который позволяет манипулировать окнами с помощью переключателей командной строки. Вы наверняка сможете позвонить через систему.

sudo apt-get install wmctrl

Я использую его во многих сценариях оболочки, а иногда и в сценариях perl, используя system ()

hth

0
ответ дан 21 January 2011 в 12:46

Другие вопросы по тегам:

Похожие вопросы: