Risposte:
Questo è più facile da fare se si installa qualcosa di simile xdotool
. Quindi puoi fare:
xdotool search --name "window name" windowsize 300 400
sostituisci "nome finestra" con un nome o registro che appare nel titolo della finestra (puoi anche cercare per classe di finestra e una varietà di altre cose), e i due numeri che appaiono dopo la dimensione della finestra sono rispettivamente la larghezza e l'altezza. (È anche possibile utilizzare le percentuali, ecc.) Vedere man xdotool
una volta installato.
Se sei su Lucid o prima, ti consiglio di visitare il sito Web xdotool per ottenere una versione più recente.
Per ridimensionare Firefox, ad esempio:
xdotool search --name "Mozilla Firefox" windowsize 1024 768
Se il gestore di finestre supporta Xlib c'è. Questo utilizza Python per impostare le dimensioni della finestra su 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()
La parte difficile è ottenere l'ID della finestra; nel codice sopra ha ottenuto l'ID della finestra attiva. Se vuoi un altro ID, puoi usare qualcosa del genere per ottenere il titolo e controllare il PID di ogni finestra e scegliere l'ID giusto in base a quelli:
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
ricevo <Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>
... qualche suggerimento per isolare il PID effettivo?
name
.
get_full_property
e fare .value[0]
( value
è un array )
Specifico per XFCE c'è pyxfce che ti permetterà di farlo usando il linguaggio python . Pyxfce è un'API che, tra le altre cose, ti consente di comunicare con il gestore delle finestre . Per utilizzarlo dalla riga di comando, è necessario preparare prima uno script.
A seconda dell'utilizzo, l'importanza di utilizzare un'API basata su X utilizzando gli ID finestra X (come python-xlib o xdotools menzionati in un'altra risposta) rispetto ad altri che usano stringhe che corrispondono ai titoli delle finestre (come wmctrl), è che non possono esserci confusione tra windows, che può avere le stesse parole chiave nel rispettivo titolo.
#!/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-
Ho trovato wmctrl adatto a me. È disponibile come pacchetto smallish, per Ubuntu e per Raspbian, e probabilmente anche per altre distro.