Здравтсвуйте!
Я написал демон, который в своей работе использеут функции XLib.
Но с ним происходит что-то непонятное:
1. Я запускаю его из консоли. Он исправно выполняет свои функции. Я закрываю консоль, открываю ее снова - демон может присутствовать в списке процессов, а может и нет (когда как). По моим соображениям, его падение происходит на функции XGetNextEvent().
2. Я запускаю демон из системных скриптов при старте системы. Функция XOpenDisplay() возвращает NULL. Это присходит, даже если в теле демона поставить задержку, достаточную, чтобы дальнейшее выполнение продолжилось после захода вользователя в систему.
Кто-нибудь может это прокомментировать?
Здравствуйте!
Подскажите, пожалуйста, как в Linux программным способом определить, что был выполнен Logon и Logout? Предполагается, что есть некоторый демон, который должен реагировать на данные события.
Спасибо!
Подскажите, пожалуйста, как с помощью функций XLib можно получить идентификатор (Window) Панели Задач в KDE, как программно узнать и какой оконный менеджер запущен.
Здравствуйте!
В моей программе необходимо реагировать определенным образом на создание окон, изменение их размеров, перемещении и т. д. Для этого я получаю сообщения от рутового окна с маской SubstructureNotifyMask. Но вся беда в том, что, например, при создании окна (я запускаю какое-либо приложение) начинают приходить не только сообщения CreateNotify, ConfigureNotify и MapNotify. А так же приходят сообщения и DestroyNotify. Получается, что создается не только одно окно, а несколько, а некоторые из них сразу же после создания уничтожаются. Такое же происходит и при попытке реагировать на другие действия с окнами.
Подскажите пожалуйста:
1. Есть ли другой способ реагировать на описанные действия с конами?
2. Почему приходят сообщения о создании еще каких-то окон и об уничтожении каких-то окон?
Привожу небольшой лог (запускал клнсоль из KDE):
defRootWnd = 0x44
The dispatching of events:
'DestroyNotify' event come for window 0x1000003
'CreateNotify' event come for window 0x1000004
parent = 0x44
x = 0
y = 0
width = 1
height = 1
border_width = 0
'CreateNotify' event come for window 0x16000F2
parent = 0x44
x = 320
y = 307
width = 640
height = 409
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 320
y = 307
width = 16
height = 16
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 320
y = 307
width = 20
height = 20
border_width = 0
'CreateNotify' event come for window 0x3A00001
x = 0
y = 0
width = 1
height = 1
border_width = 0
'DestroyNotify' event come for window 0x3A00001
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1029
width = 20
height = 20
border_width = 0
'MapNotify' event come for window 0x16000F2
'CreateNotify' event come for window 0x3A00002
x = 0
y = 0
width = 1
height = 1
border_width = 0
'DestroyNotify' event come for window 0x3A00002
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1033
width = 20
height = 20
border_width = 0
'CreateNotify' event come for window 0x3C00001
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C00002
x = 0
y = 0
width = 1
height = 1
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1036
width = 20
height = 20
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1036
width = 20
height = 20
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1039
width = 20
height = 20
border_width = 0
'CreateNotify' event come for window 0x3C00007
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C00018
x = 320
y = 307
width = 640
height = 409
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1042
width = 20
height = 20
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1042
width = 20
height = 20
border_width = 0
'CreateNotify' event come for window 0x3C0001A
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0001B
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0001C
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0001D
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0001E
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0001F
x = 320
y = 307
width = 640
height = 409
border_width = 0
'ConfigureNotify' event come for window 0x3C00007
x = 320
y = 307
width = 321
height = 321
border_width = 0
'CreateNotify' event come for window 0x3C00020
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C00021
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0002C
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0002D
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0002E
x = 320
y = 307
width = 640
height = 409
border_width = 0
'CreateNotify' event come for window 0x3C0002F
x = 320
y = 307
width = 640
height = 409
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1044
width = 20
height = 20
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1044
width = 20
height = 20
border_width = 0
'DestroyNotify' event come for window 0x3C00047
'ConfigureNotify' event come for window 0x3C00007
x = 320
y = 307
width = 746
height = 430
border_width = 0
'CreateNotify' event come for window 0x1201070
x = 0
y = 0
width = 1
height = 1
border_width = 0
'ConfigureNotify' event come for window 0x1200032
x = 0
y = 0
width = 100
height = 100
border_width = 0
'CreateNotify' event come for window 0x1201088
x = 320
y = 307
width = 640
height = 409
border_width = 0
'ConfigureNotify' event come for window 0x1201088
x = 320
y = 307
width = 100
height = 100
border_width = 0
'ConfigureNotify' event come for window 0x1200032
x = 0
y = 0
width = 754
height = 462
border_width = 0
'ConfigureNotify' event come for window 0x1201070
x = 0
y = 0
width = 1
height = 1
border_width = 0
'ConfigureNotify' event come for window 0x1201070
x = 526
y = 0
width = 754
height = 462
border_width = 0
'MapNotify' event come for window 0x1201070
'ConfigureNotify' event come for window 0x1201070
x = 526
y = 0
width = 754
height = 462
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1046
width = 20
height = 20
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1047
width = 20
height = 20
border_width = 0
'ConfigureNotify' event come for window 0x16000F2
x = 129
y = 1049
width = 20
height = 20
border_width = 0
'CreateNotify' event come for window 0x3C000B8
x = 320
y = 307
width = 640
height = 409
border_width = 0
'UnmapNotify' event come for window 0x16000F2
'UnmapNotify' event come for window 0x16000F2
'DestroyNotify' event come for window 0x16000F2
'DestroyNotify' event come for window 0x3C000B8
'ConfigureNotify' event come for window 0x180011A
x = 93
y = 898
width = 206
height = 86
border_width = 0
'ConfigureNotify' event come for window 0x180011A
x = 133
y = 898
width = 206
height = 86
border_width = 0