Respostas:
Isso é mais fácil se você instalar algo parecido xdotool
. Então você pode fazer:
xdotool search --name "window name" windowsize 300 400
substitua "nome da janela" por um nome ou reg ex que apareça 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 o tamanho da janela são largura e altura, respectivamente. (Você também pode usar porcentagens, etc.) Veja man xdotool
uma vez instalado.
No entanto, se você estiver no Lucid ou anterior, recomendo ir ao site do xdotool para obter uma versão mais recente.
Para redimensionar o Firefox, por exemplo:
xdotool search --name "Mozilla Firefox" windowsize 1024 768
Se o gerenciador de janelas suportar Xlib, existe. Isso usa Python para definir o tamanho da janela para 500x300:
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, poderá 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
print pid
recebo <Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>
... alguma sugestão para isolar o PID real?
name
.
get_full_property
e fazer .value[0]
( value
é um conjunto )
Específico para o XFCE, existe o pyxfce, que permitirá fazer isso usando a linguagem python . O Pyxfce é uma API que, entre outras coisas, permite a comunicação com o gerenciador de janelas . Para usar isso na linha de comando, é necessário preparar primeiro um script.
Dependendo do seu uso, a importância de usar uma API baseada em X usando IDs de janelas X (como python-xlib ou xdotools mencionados em outra resposta) em comparação com outros que usam cadeias correspondentes a títulos de janelas (como wmctrl), é que não pode haver confusão entre janelas, que podem ter as mesmas palavras-chave em seus respectivos títulos.
#!/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-
Eu achei o wmctrl mais adequado para mim. Está disponível como um pacote pequeno, para Ubuntu e Raspbian, e provavelmente para outras distros também.