LINUX.ORG.RU

Прогуляться по списку окон. У каждого спросить координаты. Сделать вывод.

svu ★★★★★
()
Ответ на: комментарий от Davidov

xprop использует грабер мыши и отлавливает нажатия кнопок. А внутри события нажатия уже есть нужное окно. Соответственно, такой способ не подходит, т.к. пользователь ничего не должен выбирать. Всё должно происходить автоматом.

anonymous
()
Ответ на: комментарий от svu

поясню поподробнее: Необходимо получить id окна для задания ему прозрачности. При использования композитных WM типа xcompmgr, то что ты видишь на экране, может быть вовсе не то окно, которое создавалась программой. Видимое окно может иметь совсем другой id, чем вернётся внутри этой же программы от тулкита или Xlib.

Т.е. внутри некой программы мы может получить id своего окна используя тутлкит или что-то ещё:

Window id1 = getId();

Но если запустить тот же transset (программа, устанавливающая прозрачность окон), который меняет прозрачность окон, он выдаст совсем другой id для нашего окна - id2. transset отработает как нужно с id2, но не будет работать с id1. Потому что ВИЗУАЛЬНО на экране находится окно с id2, а не id1!

Именно поэтому важно определить ВИЗУАЛЬНО окно под точкой НА ЭКРАНЕ, а не их списка доступных окон. Потому что из списка окон мы получим id, который нам не нужен.

P.S. использовать transset внутри своей программы невозможно, т.к. он определяет нужное окно точно также как и xprop - по щелчку. А нужно автоматом.

anonymous
()
Ответ на: комментарий от ival

Вобщем, разрыл такую штуку - исходное окно может несколько раз репарентиться композитным менеджером. Т.е. чтобы найти реальный, самый верхний id, надо идти по дереву наследования вверх с помощью XQueryTree. Вроде работает, но надо поискать ещё доку по этому делу.

anonymous
()

А через X11 можно делать круглые/кляксоидные окна? Или Ъ окно должно быть только в форме прямоугольника?
А вообще, здравый разум говорит мне, что именно X-server должен решать, что же находится под некоторой точкой, потому что расширяемость, гибкость и вообще.

ShprotX
()
Ответ на: комментарий от ShprotX

>>А через X11 можно делать круглые/кляксоидные окна?

можно

>>А вообще, здравый разум говорит мне, что именно X-server должен решать, что же находится под некоторой точкой, потому что расширяемость, гибкость и вообще.

это нужно определить в определённый момент времени, когда именно в этой точке будет окно (даже не в точке, а в регионе).

X-Server вообще ничего не решает, это решает WM.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.