Відповіді:
Це простіше зробити, якщо встановити щось подібне xdotool
. Тоді ви можете зробити:
xdotool search --name "window name" windowsize 300 400
замініть "ім'я вікна" на ім'я або регістр, що відображається у заголовку вікна (ви також можете шукати за класом вікна та різними іншими речами), а два числа, що з'являються після розміру вікна, - це відповідно ширина та висота. (Ви також можете використовувати відсотки тощо). Дивіться, man xdotool
як тільки це встановлено.
Якщо ви перебуваєте на Lucid чи раніше, рекомендую перейти на веб-сайт xdotool, щоб отримати нову версію.
Наприклад, щоб змінити розмір Firefox, наприклад:
xdotool search --name "Mozilla Firefox" windowsize 1024 768
Якщо менеджер вікон підтримує Xlib. При цьому Python використовує для встановлення розміру вікна 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()
Важкою частиною є отримання ідентифікатора вікна; у наведеному вище коді він отримав ідентифікатор активного вікна. Якщо ви хочете інший ідентифікатор, ви можете використовувати щось подібне, щоб отримати назву та керувати PID кожного вікна, і вибрати правильний ідентифікатор виходячи з таких:
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
отримую <Xlib.protocol.request.GetProperty serial = 15, data = {'bytes_after': 0, 'property_type': 6, 'value': (32, array('I', [5810L])), 'sequence_number': 15}, error = None>
... будь-яку пропозицію ізолювати фактичний PID?
name
.
get_full_property
і зробити .value[0]
( value
це масив )
Характерною для XFCE є pyxfce, яка дозволить вам робити це за допомогою мови python . Pyxfce - це API, який, крім усього іншого, дозволяє спілкуватися з менеджером вікон . Щоб використовувати це з командного рядка, потрібно спочатку підготувати сценарій.
Залежно від вашого використання, важливість використання API на основі X з використанням ідентифікаторів X вікон (наприклад, python-xlib або xdotools, згаданих в іншій відповіді) проти інших, які використовують рядки, що відповідають заголовкам вікон (наприклад, wmctrl), полягає в тому, що не може бути плутанина між вікнами, які можуть мати однакові ключові слова у відповідному заголовку.
#!/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-
Я знайшов, що wmctrl мені найбільше підходить. Він доступний як невеликий пакет для Ubuntu і для Raspbian, і, ймовірно, і для інших дистрибутивів.