Пометка разделов окна X11 как перетаскиваемых

В случае, если я хочу иметь неукрашенное окно (например, я могу нарисовать украшения самостоятельно), есть ли способ сообщить текущему оконному менеджеру X11, что область окна должна быть перетаскиваемой и управляться оконным менеджером? Меня интересуют низкоуровневые решения (Xlib, XCB или аналогичные). Я также ищу максимально стандартное решение.

Кроме того, могу ли я пометить область окна как представляющую кнопку закрытия?

Я спрашиваю об этом, потому что было бы здорово, если бы я мог прикрепить дополнительный контент к оформлению окна. Это вдохновлено Apple OS X, где все украшения представляют собой простые старые NSView, а некоторые (кнопки закрытия и т. д.) даже могут быть доступны задокументированным способом. Добавление дополнительного контента также вдохновлено OS X, где можно щелкнуть правой кнопкой мыши имя документа, связанного с окном (в строке заголовка), и получить путь к документу. В то же время окно остается подвижным, даже если приложение не отвечает, поэтому перетаскиваемая область должна быть каким-то образом передана диспетчеру окон (то есть WindowServer, верно?).

Итак, если есть стандартный способ (или широко распространенное расширение FreeDesktop.org, или что-то еще) сделать это под X11, я хотел бы узнать об этом. :-)


person Ivan Vučica    schedule 19.07.2012    source источник
comment
Фреймворки с графическим интерфейсом часто делают такие вещи, создавая подокна. Любой данный виджет обычно представляет собой несколько окон, работающих согласованно друг с другом. Другой (более простой) подход: 1) обрабатывать событие мыши, но 2) ничего не делать, если мышь x/y не находится в нужной области. Вот и все, что касается Xlib :)   -  person paulsm4    schedule 19.07.2012
comment
@paulsm4 paulsm4 Разве окно не остается неподвижным, если приложение, в котором размещена структура графического интерфейса, зависает? Вот почему я спросил.   -  person Ivan Vučica    schedule 21.07.2012


Ответы (1)


Ни в коем случае.

X11 даже не знает, что такое оконный менеджер. Стандарты ICCCM и Freedesktop мало чем отличаются. Они знают об оконных менеджерах, но не предписывают какой-либо конкретный способ закрытия и перетаскивания окон или даже саму возможность делать такие вещи. Таким образом, нет официальных понятий кнопок закрытия, перетаскивания углов или строк заголовка, а также нет API для пользовательского определения таких вещей.

person n. 1.8e9-where's-my-share m.    schedule 20.07.2012
comment
Технически X11 знает, что такое оконный менеджер. Однако X11 также должен учитывать мозаичные оконные менеджеры, в которых окна не являются свободными и не должны перемещаться путем перетаскивания в любом месте окна. Таким образом, оконный менеджер может заставить окно вести себя так, как считает нужным. По сути, X11 утверждает, что последнее слово почти во всем остается за оконным менеджером. - person Matthew; 01.05.2018