Кто-нибудь знает библиотеку, желательно для ruby или python, которая позволит вам получить доступ к списку открытых приложений и манипулировать ими? Все, что я действительно хочу сделать, это изменить их геометрию и минимизировать или закрыть их. Я немного возился с ruby-gnome2, но не нашел ничего для манипулирования окнами, кроме окон вашего собственного процесса.
Я использую 10.10.
Вы можете использовать спецификацию советов менеджера окон , чтобы сообщить 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)
Самый простой способ сделать это - использовать 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.
Привет, взгляните на wmctrl. Это не настоящая библиотека, а скрипт командной строки, который позволяет манипулировать окнами с помощью переключателей командной строки. Вы наверняка сможете позвонить через систему.
sudo apt-get install wmctrl
Я использую его во многих сценариях оболочки, а иногда и в сценариях perl, используя system ()
hth