Jawaban:
Ini lebih mudah dilakukan jika Anda menginstal sesuatu seperti xdotool
. Maka Anda dapat melakukan:
xdotool search --name "window name" windowsize 300 400
ganti "nama jendela" dengan nama atau reg yang muncul di judul jendela (Anda juga dapat mencari berdasarkan kelas jendela dan berbagai hal lainnya), dan dua angka yang muncul setelah ukuran jendela masing-masing adalah lebar dan tinggi. (Anda juga dapat menggunakan persen, dll.) Lihat man xdotool
begitu diinstal.
Jika Anda menggunakan Lucid atau sebelumnya, saya sarankan pergi ke situs web xdotool untuk mendapatkan versi yang lebih baru.
Untuk mengubah ukuran Firefox, misalnya:
xdotool search --name "Mozilla Firefox" windowsize 1024 768
Jika manajer jendela mendukung Xlib ada. Ini menggunakan Python untuk mengatur ukuran jendela ke 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()
Bagian yang sulit adalah mendapatkan ID jendela; dalam kode di atas mendapat ID dari jendela aktif. Jika Anda menginginkan ID lain, Anda dapat menggunakan sesuatu seperti ini untuk mendapatkan judul dan mengendalikan PID dari setiap jendela, dan memilih ID yang tepat berdasarkan pada mereka:
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
saya mendapatkan <Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>
... ada saran untuk mengisolasi PID yang sebenarnya?
name
.
get_full_property
dan lakukan .value[0]
( value
adalah array )
Khusus untuk XFCE ada pyxfce yang akan memungkinkan Anda melakukannya menggunakan bahasa python . Pyxfce adalah API yang, antara lain, memungkinkan Anda berkomunikasi dengan manajer jendela . Untuk menggunakan ini dari baris perintah akan mengharuskan Anda untuk menyiapkan skrip terlebih dahulu.
Bergantung pada penggunaan Anda, pentingnya menggunakan API berbasis X menggunakan ID X window (seperti python-xlib atau xdotools yang disebutkan dalam jawaban lain) dibandingkan yang lain yang menggunakan string yang cocok dengan judul jendela (seperti wmctrl), adalah tidak ada kebingungan antara windows, yang mungkin memiliki kata kunci yang sama di judul masing-masing.
#!/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-
Saya menemukan wmctrl paling cocok untuk saya. Ini tersedia sebagai paket bertubuh kecil, untuk Ubuntu dan untuk Raspbian, dan kemungkinan untuk distro lain juga.