Привет. Проще говоря, нужно таймер неактивности реализовать. И когда пользователь неактивен определённое время, то заблочить своё приложение. Есть какие-нибудь истории успеха в данном деянии?
KDE делает это через XCB, мне бы напрямую через X11 API.
Покопался в исходниках xscreensaver, разработчику очень не нравится x11, о чём свидетельствует его комментарий:
/* What an amazingly shitty design. Not only does Xt execute timeout
events from XtAppNextEvent() instead of from XtDispatchEvent(), but
there is no way to tell Xt to block until there is an X event OR a
timeout happens. Once your timeout proc is called, XtAppNextEvent()
still won't return until a "real" X event comes in.
So this function pushes a stupid, gratuitous, unnecessary event back
on the event queue to force XtAppNextEvent to return Right Fucking Now.
When the code in sleep_until_idle() sees an event of type XAnyEvent,
which the server never generates, it knows that a timeout has occurred.
*/