Настройка размеров окна запущенного приложения

Я пытаюсь запустить приложение в Ubuntu (xfce или gnome) и через и задалось вопросом, существует ли общий способ установки размеров данное окно данного приложения, которое в настоящее время работает?

28 голосов | спросил Jamie 18 Jam1000000amTue, 18 Jan 2011 00:31:36 +030011 2011, 00:31:36

4 ответа


17

Это проще сделать, если вы установите что-то вроде xdotool. Затем вы можете сделать:

xdotool search --name "window name" windowsize 300 400

заменить «имя окна» именем или регистром ex, появляющимся в заголовке окна (вы также можете выполнить поиск по классу окна и множеству других вещей), а два числа, появляющиеся после windowsize, - это ширина и высота соответственно. (Вы также можете использовать проценты и т. Д.) См. man xdotool после его установки.

Если вы на Lucid или ранее, я рекомендую перейти на сайт xdotool , чтобы получить более новую версию, однако.

Чтобы изменить размер Firefox, например:

xdotool search --name "Mozilla Firefox" windowsize 1024 768
ответил frabjous 18 Jam1000000amTue, 18 Jan 2011 01:13:58 +030011 2011, 01:13:58
11

Если диспетчер окон поддерживает 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
ответил Michael Mrozek 18 Jam1000000amTue, 18 Jan 2011 00:45:38 +030011 2011, 00:45:38
3
#!/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-
ответил Wilton lazary 26 J000000Tuesday11 2011, 03:55:51
3

Конкретно для XFCE существует pyxfce , который позволит вам сделать это с помощью python язык. Pyxfce - это API, который, помимо прочего, позволяет общаться с оконный менеджер . Для использования этого из командной строки вам потребуется сначала подготовить сценарий.

В зависимости от вашего использования важность использования X-based API с использованием X-идентификаторов окон (таких как python-xlib или xdotools, упомянутых в другом ответе) по сравнению с другими, использующими строки, соответствующие названиям окон (например, wmctrl), заключается в том, что там не может быть путаницы между окнами, которые могут иметь одинаковые ключевые слова в соответствующем заголовке.

ответил Benjamin 24 SatEurope/Moscow2011-12-24T12:40:13+04:00Europe/Moscow12bEurope/MoscowSat, 24 Dec 2011 12:40:13 +0400 2011, 12:40:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132