Определение Idle состояния X сесии, anton7811, 22-Апр-11, 15:52 [смотреть все]Может кто сталкивался, как определить, что сесия (gnome/kde) находится в состоянии idle?Конкретно сейчас борюсь с Gnome. Ранее в dbus у screensaver были методы GetSessionIdle() GetSessionIdleTime(), но сейчас они признаны устаревшими. GetActive() показывает true только когда запущен screensaver, но его в настройках и вовсе можно отключить. А интересует именно момент когда нету активности (мышка, клавиатура) пользователя. Сам screensaver как-то может ведь єто отследить. Можно ли такое без C/C++ сделать, например читать гдето тот же dbus или еще что? Если нет, то рассмотрю варианты и на C/C++.
|
- Определение Idle состояния X сесии,
anton7811, 18:21 , 22-Апр-11 (1)Способ получения результата без C/C++ актуален.Но паралельно, если никто не знает другого варианта, может подскажете как сделать что б нижеприведеная программа работала корректно не только на дисплее :0, но и на других, таких как удаленные сеансы. #include <stdio.h> #include <X11/extensions/scrnsaver.h> main() { XScreenSaverInfo *info = XScreenSaverAllocInfo(); Display *display = XOpenDisplay(0); XScreenSaverQueryInfo(display, DefaultRootWindow(display), info); printf("%lu ms\n", info->idle); } Собственно сразу оговорюсь, что я с C/C++ не знаком, поєтому если можно коментируйте поподробней. Заранее благодарен!
- Определение Idle состояния X сесии,
gpl77, 19:06 , 22-Апр-11 (2)> Но паралельно, если никто не знает другого варианта, может подскажете как сделать > что б нижеприведеная программа работала корректно не только на дисплее :0, > Display *display = XOpenDisplay(0); > коментируйте поподробней.все просто man XOpenDisplay Display *XOpenDisplay(char *display_name); .. XOpenDisplay connects your application to the X server through TCP or DECnet communications protocols, or through some local inter-process communication protocol. If the hostname is a host machine name and a single colon (:) separates the hostname and display number, XOpenDisplay connects using TCP streams. If the hostname is not specified, Xlib uses whatever it believes is the fastest transport. - Определение Idle состояния X сесии,
pavlinux, 21:08 , 22-Апр-11 (4)> Способ получения результата без C/C++ актуален. > Но паралельно, если никто не знает другого варианта, может подскажете как сделать > что б нижеприведеная программа работала корректно не только на дисплее :0, > но и на других, таких как удаленные сеансы. #include <stdio.h> #include <X11/extensions/scrnsaver.h>char *displays[] = { NULL, "micosoft.com:0", "oracle.com:0", "8.8.8.8:0" }; int main(void) { XScreenSaverInfo *info = XScreenSaverAllocInfo(); for (int i = 0; i < 4; i++) { Display *display = XOpenDisplay(displays[i]); if (display != NULL) { XScreenSaverQueryInfo(display, DefaultRootWindow(display), info); printf("%lu ms\n", info->idle); } } return 0; }
как-то так.
- Определение Idle состояния X сесии,
anton7811, 14:43 , 27-Апр-11 (5)Спасибо за ответ.Получил такое вот сообщение на удаленной сесии: Xlib: extension "MIT-SCREEN-SAVER" missing on display ":1019.0". Похоже что screensaver впринципе на удаленном сеансе nx не работает (на vnc еще не проверял). Пока есть другие задачи, но к єтому еще вернусь, еще и поищю информацию по нижнему посту. Была мысль пошарится по исходникам pidgin, но он как оказалось тоже не определяет idle на удаленной сесии. Если что-то получится отпишу.
- Определение Idle состояния X сесии,
pavlinux, 22:16 , 27-Апр-11 (6)> Xlib: extension "MIT-SCREEN-SAVER" missing on display ":1019.0".MIT-SCREEN-SAVER - это расширение Xorg (встроенное), видимо оно отключено, например через # xset s off или стартует без него # Xorg -extension MIT-SCREEN-SAVER > Была мысль пошарится по исходникам pidgin, но он как оказалось тоже не > определяет idle на удаленной сесии. Вам нужно Idle именно у Xorg? А то для истинного idle давно уже придумали watchdog_и, программные иль аппаратные.
- Определение Idle состояния X сесии,
pavlinux, 20:33 , 22-Апр-11 (3)> Может кто сталкивался, как определить, что сесия (gnome/kde) находится в состоянии idle? > Конкретно сейчас борюсь с Gnome. Ранее в dbus у screensaver были методы > GetSessionIdle() GetSessionIdleTime(), но сейчас они признаны устаревшими. GetActive() > показывает true только когда запущен screensaver, но его в настройках и > вовсе можно отключить. А интересует именно момент когда нету активности (мышка, > клавиатура) пользователя. Сам screensaver как-то может ведь єто отследить. Можно > ли такое без C/C++ сделать, например читать Google: xlock, xautolock, xlockmore
|