The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Определение 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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру