2012-05-21 4 views
3

Я пытаюсь создать оверлейное окно над другим запущенным приложением. Скажем, firefox. Я реализовал с помощью XcreatewindowПрозрачное окно в родительском доме Xwindow

win = XCreateWindow(display, *firefoxwindow, 
        50, 300, 400, 400, 
        0, 
        visualinfo.depth, 
        InputOutput, 
        visualinfo.visual, 
        CWColormap|CWEventMask|CWBackPixmap|CWBorderPixel, 
        &attr 
        ) ; 

Я искал * firefoxwindow с помощью XQueryTree()

, а затем следую этому коду https://gist.github.com/903479

Результат является прозрачным окном, когда я использую XRoot в качестве родителя , Но, когда я пытаюсь использовать firefoxwindow или другое окно приложения в качестве родителя, он стал optique.

ответ

1

В вашем случае вам нужно создать композитную рамку с окном фона вручную. Когда вы создаете окно с корнем в качестве родительской прозрачности, обрабатывается компоновщиком оконного менеджера

+0

Не могли бы вы направить меня немного больше, я совершенно новичок в этом. – user753758

+0

с композитным расширением (http://www.freedesktop.org/wiki/Software/CompositeExt) вы можете делегировать copmositing во внешнюю программу, которая coud, например, обрабатывает канал aplpha как прозрачность. Очень простой менеджер компоновки: http://cgit.freedesktop.org/xorg/app/xcompmgr/ –

+0

Спасибо, Андрей, еще один вопрос, как вы думаете, можно запустить другое приложение в верхней части другого полноэкранного приложения? – user753758