Генерация тени под окном Xlib

По -видимому, диспетчер окон (в моем случае Compiz) обрабатывает тень, которую вы видите во всех окнах Xlib в Ubuntu, поэтому связь с системой X Window не повлияет на тень по умолчанию, сгенерированную в окне, которое я создал в своем коде. Поэтому, как я могу общаться через мой код с Compiz, чтобы назначить большую / меньшую / другую цветную тень под вновь созданным окном?

Редактировать: я использую только C++ и библиотеку xlib, а не QT

Изменить: метод общения с оконным менеджером становится все более сложным, чем больше я пытаюсь, так что у кого-нибудь есть какие-либо другие предложения? Может быть, второе окно позади оригинала с какой-то настройкой?

1 ответ

Вам нужно написать композитный менеджер, чтобы иметь тени / прозрачность и подобные эффекты (я полагаю, вы делаете это, чтобы узнать, как это работает под капотом. Если вам просто нужна тень - почти у каждого менеджера компов есть эта опция, прочитайте руководства xcompmgr / compiz)

Вот очень хорошее введение в расширения Composite/Damage. Вам нужно перенаправить все окна верхнего уровня и нарисовать их вручную в специальном оверлейном окне.

Другие вопросы по тегам