2014-02-04 2 views
1

Я программировал в Linux уже много лет, но не имею слишком много знаний в перспективе отображения. Теперь меня попросят написать отдельный процесс, который будет контролировать, какое окно (возможно, не окно, созданное моим процессом) сфокусировано пользователем и выполняет некоторые простые манипуляции, такие как перемещение и изменение размера.Как управлять окном в Linux

Возможно ли это? Есть ли общий способ достижения этого? Может кто-нибудь дать какой-либо намек, на который я могу заглянуть? Благодаря!

+0

Может быть, вам просто нужно [ 'wmctrl'] (http://en.wikipedia.org/wiki/Wmctrl)? – tripleee

ответ

0

Использование xdotool. Он может имитировать нажатия клавиш, мыши-действия, найти активные окна и т.д.

Пример: Выполните эту команду в вашем (не развернутом) окно терминала, и он будет прыгать на 10 пикселей вниз и вправо:

xdotool windowmove --relative $(xdotool getwindowfocus) 10 10 

Он должен быть доступен в большинстве дистрибутивов, то есть sudo apt-get install xdotool или аналогичен другим менеджерам пакетов.

0

По существу, это система XWindow, которая делает все это. Однако вы можете контролировать его много, используя простые утилиты. Например, если я тусклый, чтобы изменить название окна VLC, я могу сделать это так:

# this will ask me to point to a window and I will point to VLC player 
$ xwininfo -all | grep 'xwininfo: Window id:' 
xwininfo: Window id: 0x2000011 (has no name) 

0x2000011 Вот это окно идентификатор VLC Player работает на моей системе. Мы можем использовать это окно для получения или установки свойств. Для этого мы можем использовать утилиту xprop:

for p in _NET_WM_VISIBLE_NAME _NET_WM_NAME; \ 
    do xprop -id 0x2000011 -format $p 8s -set $p "MyVLC"; done 

Это изменит заголовок окна из VLC Player для MyVLC.

Хотя это то, что xdotool также делает за кулисами, эти команды довольно низкого уровня и, скорее всего, будут установлены по умолчанию.

Ссылки: