Как xorg раскрашивает многослойные окна?

Другой awk подход. Поскольку awk может принимать несколько символов в качестве разделителей полей, это можно сделать за один шаг:

$ awk -F'[-_]' '{print $3$4$5$6}' <<<"$var"
20161014111250

В качестве альтернативы в Perl:

$ perl -pe 's/.+?_.+?_//; s/[-_]//g' <<<"$var"
20161014111250

или

$ perl -F_ -ane 's/-//g for @F; print @F[2..$#F]' <<<"$var"
20161014111250

Я использую здесь строки , но если ваша оболочка их не поддерживает, просто echo $ var | command для каждой команды выше.

2
28.12.2018, 21:22
2 ответа

Оба резервного хранилища и сохранения в являются атрибутами/флагами, которые можно установить при создании окна с помощью XCreateWindow(). Тем не менее, это всего лишь подсказки для сервера X11, они не включены по умолчанию и на самом деле не стоят проблем с современным оборудованием.

Как правило, когда (часть )фонового окна становится видимой, сервер X11 отправляет событие Exposeклиенту X11, что должно привести к его перерисовке. Поскольку это всего лишь подсказки, сервер X11 может по-прежнему отправлять Expose, даже если клиент установил как .backing_store = Alwaysв окне, так и CWSaveUnderво всплывающих окнах, которые он открывал поверх него.

Существуют также интерфейсы, которые позволяют клиенту запрашивать, реализует ли сервер резервное хранилище и сохранение в:XDoesBackingStore()и XDoesSaveUnders().

Оконный менеджер не имеет ко всему этому никакого отношения; он не перерисовывает никаких окон (, кроме собственных :заголовков, кнопок закрытия ).

3
27.01.2020, 22:02

If not, does it repaint each of the stacked window one by one in case of a random window removal?

Большинство популярных настольных компьютеров используют более новое расширение XCOMPOSITE. Все содержимое окна визуализируется в выключенных -экранных буферах, поэтому все они доступны диспетчеру композитинга без необходимости запрашивать приложения для их перерисовки.

Вот выдержка с официального сайта:

This extension causes a entire sub-tree of the window hierarchy to be rendered to an off-screen buffer. Applications can then take the contents of that buffer and do whatever they like. The off-screen buffer can be automatically merged into the parent window or merged by external programs, called compositing managers. Compositing managers enable lots of fun effects.

0
27.01.2020, 22:02

Теги

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