Ответы:
Это легче сделать, если вы установите что-то вроде 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
.
Специфично для 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, а также для других дистрибутивов.