Réponses:
C'est plus facile à faire si vous installez quelque chose comme xdotool
. Ensuite, vous pouvez faire:
xdotool search --name "window name" windowsize 300 400
remplacez "nom de la fenêtre" par un nom ou un reg ex apparaissant dans le titre de la fenêtre (vous pouvez également rechercher par classe de fenêtre et une variété d'autres choses), et les deux nombres apparaissant après la taille de la fenêtre sont respectivement la largeur et la hauteur. (Vous pouvez également utiliser des pourcentages, etc.) Voir man xdotool
une fois qu'il est installé.
Si vous utilisez Lucid ou une version antérieure, je vous conseille toutefois d'aller sur le site Web xdotool pour obtenir une version plus récente.
Pour redimensionner Firefox, par exemple:
xdotool search --name "Mozilla Firefox" windowsize 1024 768
Si le gestionnaire de fenêtres prend en charge Xlib, c'est le cas. Cela utilise Python pour définir la taille de la fenêtre à 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 partie difficile est d'obtenir l'ID de la fenêtre; dans le code ci-dessus, il a obtenu l'ID de la fenêtre active. Si vous voulez un autre ID, vous pouvez utiliser quelque chose comme ça pour obtenir le titre et contrôler le PID de chaque fenêtre, et choisir le bon ID en fonction de ceux-ci:
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
reçois <Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>
... une suggestion pour isoler le PID réel?
name
.
get_full_property
et faire .value[0]
( value
est un tableau )
Spécifique à XFCE, il existe pyxfce qui vous permettra de le faire en utilisant le langage python . Pyxfce est une API qui, entre autres, vous permet de communiquer avec le gestionnaire de fenêtres . Pour l'utiliser à partir de la ligne de commande, vous devez d'abord préparer un script.
Selon votre utilisation, l'importance d'utiliser une API basée sur X utilisant des ID de fenêtre X (tels que python-xlib ou xdotools mentionnés dans une autre réponse) par rapport à d'autres qui utilisent des chaînes correspondant aux titres de fenêtre (comme wmctrl), est qu'il ne peut y avoir aucun confusion entre les fenêtres, qui peuvent avoir les mêmes mots-clés dans leur titre respectif.
#!/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-
J'ai trouvé que wmctrl me convenait le mieux. Il est disponible en tant que petit paquet, pour Ubuntu et pour Raspbian, et probablement pour d'autres distributions également.