Antworten:
Dies ist einfacher, wenn Sie so etwas installieren xdotool
. Dann können Sie tun:
xdotool search --name "window name" windowsize 300 400
Ersetzen Sie "Fenstername" durch einen Namen oder ein Register, das im Fenstertitel erscheint (Sie können auch nach Fensterklasse und einer Vielzahl anderer Dinge suchen), und die beiden Zahlen, die nach der Fenstergröße erscheinen, sind die Breite bzw. Höhe. (Sie können auch Prozente usw. verwenden.) Nach man xdotool
der Installation anzeigen .
Wenn Sie auf Lucid oder früher sind, empfehle ich jedoch, auf der xdotool-Website eine neuere Version zu erhalten.
So ändern Sie die Größe von Firefox:
xdotool search --name "Mozilla Firefox" windowsize 1024 768
Wenn der Fenstermanager Xlib unterstützt, gibt es. Dies verwendet Python, um die Fenstergröße auf 500x300 zu setzen:
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()
Der schwierige Teil ist das Abrufen der Fenster-ID. im obigen Code wurde die ID des aktiven Fensters ermittelt. Wenn Sie eine andere ID wünschen, können Sie so etwas verwenden, um den Titel und die Steuer-PID jedes Fensters abzurufen und die richtige ID basierend auf diesen zu wählen:
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
bekomme ich <Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>
... einen Vorschlag, um die tatsächliche PID zu isolieren?
name
.
get_full_property
und tun .value[0]
( value
ist ein Array )
Speziell für XFCE gibt es pyxfce, mit dem Sie dies in der Python- Sprache tun können . Pyxfce ist eine API, mit der Sie unter anderem mit dem Fenstermanager kommunizieren können . Um dies von der Befehlszeile aus zu verwenden, müssen Sie zuerst ein Skript vorbereiten.
Abhängig von Ihrer Verwendung besteht die Bedeutung der Verwendung einer X-basierten API unter Verwendung von X-Fenster-IDs (wie Python-Xlib oder Xdotools, die in einer anderen Antwort erwähnt wurden) im Vergleich zu anderen, die Zeichenfolgen verwenden, die mit Fenstertiteln übereinstimmen (wie wmctrl), darin, dass es keine geben kann Verwechslung zwischen Fenstern, die möglicherweise die gleichen Schlüsselwörter in ihrem jeweiligen Titel haben.
#!/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-
Ich fand wmctrl am besten für mich. Es ist als kleines Paket für Ubuntu und Raspbian und wahrscheinlich auch für andere Distributionen erhältlich.