Definindo as dimensões da janela de um aplicativo em execução

28

Estou tentando iniciar um aplicativo no Ubuntu (xfce ou gnome) e por meio do linha de comando e queria saber se há uma maneira genérica de definir as dimensões de um determinada janela de um determinado aplicativo que está sendo executado atualmente?

    
por Jamie 17.01.2011 / 22:31

4 respostas

17

Isso é mais fácil se você instalar algo como xdotool . Então você pode fazer:

xdotool search --name "window name" windowsize 300 400

substitua "nome da janela" por um nome ou reg ex exibido no título da janela (você também pode pesquisar por classe de janela e várias outras coisas), e os dois números que aparecem após windowsize são width e height, respectivamente. (Você também pode usar porcentagens, etc.) Veja man xdotool quando estiver instalado.

Se você estiver no Lucid ou anterior, recomendo ir ao site xdotool para obter uma versão mais recente, no entanto.

Para redimensionar o Firefox, por exemplo:

xdotool search --name "Mozilla Firefox" windowsize 1024 768
    
por 17.01.2011 / 23:13
11

Se o gerenciador de janelas suportar o Xlib, existe. Isso usa o Python para definir o tamanho da janela como 500 x 300:

WIDTH, HEIGHT = 500, 300
import Xlib
import Xlib.display

display = Xlib.display.Display()
root = display.screen().root
windowID = root.get_full_property(display.intern_atom('_NET_ACTIVE_WINDOW'), Xlib.X.AnyPropertyType).value[0]
window = display.create_resource_object('window', windowID)
window.configure(width = WIDTH, height = HEIGHT)
display.sync()

A parte difícil é obter o ID da janela; no código acima, obteve o ID da janela ativa. Se você quiser outro ID, pode usar algo assim para obter o título e controlar o PID de cada janela e escolher o ID correto com base naqueles:

windowIDs = root.get_full_property(display.intern_atom('_NET_CLIENT_LIST'), Xlib.X.AnyPropertyType).value
for windowID in windowIDs:
    window = display.create_resource_object('window', windowID)
    name = window.get_wm_name() # Title
    prop = window.get_full_property(display.intern_atom('_NET_WM_PID'), Xlib.X.AnyPropertyType)
    pid = prop.value[0] # PID
    
por 17.01.2011 / 22:45
3
#!/bin/bash
#get window pid under mouse
xprop -id $(xwit -current -print | cut -d ":" -f 1) | grep _NET_WM_PID | cut -d "=" -f2 | cut -c 2-
    
por 26.07.2011 / 01:55
3

Específico para o XFCE, existe o pyxfce que permitirá que você faça isso usando a linguagem python . O Pyxfce é uma API que, entre outras coisas, permite que você comunique-se com o gerenciador de janelas . Para usar isso na linha de comando, é necessário preparar um script primeiro.

Dependendo do seu uso, a importância de usar uma API baseada em X usando X IDs de janela (como python-xlib ou xdotools mencionadas em outra resposta) versus outras que usam strings correspondentes a títulos de janela (como wmctrl) é que não pode haver confusão entre janelas, que podem ter as mesmas palavras-chave em seus respectivos títulos.

    
por 24.12.2011 / 09:40