Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Qt: время простоя системы  (Прочитано 1169 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Qt: время простоя системы
« : 08 Августа 2012, 21:02:10 »
Доброго времени суток.

Как это реализовать? То есть, если пользователь не активен в течении некоторого времени (ушел), то сделать какое то действие.

Интересует реализация на глобальном уровне, то есть чтобы работало даже тогда, когда приложение свернуто или в трее или окно приложения не в фокусе

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #1 : 08 Августа 2012, 21:07:13 »
думаю что можно следить на мышью и клавой, или же смотреть как это делает система, можно смотреть в сторону dbus если вы пишите приложение для Linux
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #2 : 08 Августа 2012, 21:13:19 »
Да. Я и думал следить за мышью и клавой. Но только как это делать глобально.

Приложение планируется кроссплатформенное.

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #3 : 08 Августа 2012, 21:27:06 »
вот как глобально сказать сложно, думаю что Qt тут не очень поможет, может заюзать стороннюю библиотеку, типа игровой библиотеки для управления мышью клавой и т.п. Но думаю это пушкой по воробьям
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #4 : 08 Августа 2012, 21:32:40 »
«Будем искать» )) решение кончено же.

Оффлайн vasiliyVV

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #5 : 08 Августа 2012, 21:46:04 »
Делал похожее на pyGTK. Для определения простоя слушал внешние устройства (мышь и клавиатуру). Советую слушать оба устройства, не всегда же все печатают, иногда и грызуном в сети сидят. По делу на python'е (как пример) функция (метод) прослушки, вернее чтения файла (ведь в linux всё файлы, даже устройства  :)), может выглядеть так:
def read_keyboard():
  byte = []
  f = open('/dev/input/event5', 'r')
  while True:
    for bit in f.read(1):
      byte.append(ord(bit))
      if len(byte) == 8:
        if byte[2] in keyboard_keys:
          if byte == [1, 0, byte[2], 0, 1, 0, 0, 0]:
            print keyboard_keys[byte[2]] #ну или в нашем случае обнулим счетчик времени.

/dev/input/event5 как раз наша клавиатура.
keyboard_keys это словарь {код:значение клавиши}.

Ну как то так. Как вариант.

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #6 : 08 Августа 2012, 21:47:29 »
vasiliyVV,
на винде ваш вариант не прокатит :(
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Qt: время простоя системы
« Ответ #7 : 08 Августа 2012, 21:48:58 »
Ну вообще-то по принципам Qt - он тупо кросплатформенен и не пытается лезть в азы каждой из ОС. Только основной набор.

А реализацию можно глянуть в SMPlayer. Он же умеет блокировать скринсейвер (или это ключ у mplayer =/ не помню).

А если вообще глобально - то можно посмотреть в сторону qxt, там есть работа с окнами и тд.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн vasiliyVV

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #8 : 08 Августа 2012, 21:57:35 »
vasiliyVV,
на винде ваш вариант не прокатит :(

Полностью согласен. Уточнений не было, а форум всётаки профильный)).
В Вин я бы запилил используя win32api или службы. Хотя клаву  слушать не пробовал.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #9 : 08 Августа 2012, 21:59:07 »
наверное буду писать платформозависимый код. хотя, приложение просто для себя, наверное ограничусь winAPI и реализацией под винду.

Оффлайн vasiliyVV

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #10 : 08 Августа 2012, 22:02:47 »
Ну вообще-то по принципам Qt - он тупо кросплатформенен и не пытается лезть в азы каждой из ОС. Только основной набор.

А реализацию можно глянуть в SMPlayer. Он же умеет блокировать скринсейвер (или это ключ у mplayer =/ не помню).

А если вообще глобально - то можно посмотреть в сторону qxt, там есть работа с окнами и тд.

Полностью согласен. Мой пример чистый Python. PyGTK это так, к слову. В GTK и Qt я бы посоветовал использовать Events (Signal). Они элементарно обрабатываются и удобны если писать ПО с GUI.

Пользователь решил продолжить мысль 08 Августа 2012, 22:09:11:
Добавлю для размышления  8)
Как и писали ранее можно использовать dbus.
На платформе Maemo (nNokia N900, Linux) точно есть такой вызов, также как и аптайм системы. Советую поискать, хотя да на Вин опять не пройдет. Беда :)
« Последнее редактирование: 08 Августа 2012, 22:09:11 от vasiliyVV »

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Qt: время простоя системы
« Ответ #11 : 08 Августа 2012, 22:53:33 »
наверное буду писать платформозависимый код. хотя, приложение просто для себя, наверное ограничусь winAPI и реализацией под винду.
не надо этого делать, ей богу не стоит убивать кроссплатформенность из-за лени написать пару лишних строк кода... Напишите winAPI для Win и dbus для Linux не так много этого кода зато сохраните кроссплатформенность....
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

 

Страница сгенерирована за 0.017 секунд. Запросов: 21.