Suspend при бездействии

Команда pm-suspend прекрасно отрабатывает, хотелось бы того же, но при бездействии в n минут.
В системе установлены иксы, но с гуевыми PM связываться не хочется.
pm-utils-1.41, acpid-2.0.6, gentoo-sources-2.6.34-r1.
Мои варианты:
1. Может pm-utils умеет такое, но я честно искал и не нашел.
2. Забросить в автозагрузку скрипт на bash вызывающий по таймауту pm-suspend. Только я не знаю как описать период бездействия.
3. Свежие идеи форумчан...

Цитата: Только я не знаю как

Цитата:
Только я не знаю как описать период бездействия.

who -u -t

$ who -u -t kotoyozh tty7

$ who -u -t
kotoyozh tty7         2010-07-19 08:07 дав       5473 (:0)
root     tty1         2010-07-19 13:56   .         13661
kotoyozh tty2         2010-07-19 14:00 00:02       13757

как это мне должно помочь?
он считает от последнего действия юзера в консоли, но это не значит бездействие, у меня во второй консоли был запущен "mpg123 Massive\ Attack\ -\ Angel.mp3" как-то будет обидно если он посреди песни или фильма уснет. ;)
а иксовый сеанс эта утилита вообще криво определяет.

да, кстати замечал, что xscreensaver и gnome-screensaver тоже нагло включаются во время фильма(в mplayer или vlc). единственный способ совсем их отключать. неудобно...

Jah will give us everything

hedgeven написал(а): да,

hedgeven написал(а):
да, кстати замечал, что xscreensaver и gnome-screensaver тоже нагло включаются во время фильма(в mplayer или vlc). единственный способ совсем их отключать. неудобно...

У mplayer'a есть опция конфига, отключающая скринсейвер (вроде stop-xscreensaver=1). Кроме того у него есть опция, позволяющая выполнять какую-то команду через определенный промежуток времени во время работы плеера. На эту команду можно повесить отключение скринсейвера

то есть нет возможности

то есть нет возможности самому скринсейверу отследить, что в данный момент воспроизводится видео?

Jah will give us everything

более ради прикола, конечно...

hedgeven написал(а):
2. Забросить в автозагрузку скрипт на bash вызывающий по таймауту pm-suspend. Только я не знаю как описать период бездействия.

раз уж разговор и за xscreensaver пошел... xscreensaver-command имеет опцию -watch. Там же в man и примерчик (For example, suppose you want to run a program that turns down the volume on your machine when the screen blanks).

Еще есть -deactivate (If the screen is not blanked, then this simulated user activity will re-start the countdown (so, issuing the -deactivate command periodically is one way to prevent the screen from blanking.)
Что подразумевается под other ways, непонятно.. -restart, наверное )

По крайней мере скрипт, чтобы запускать плеер и переодически выполнять xscreensaver-command -deactivate, сляпать несложно. Ну и suspend'иться как в примере по black или lock, тоже можно...

да, хороший вариант,

да, хороший вариант, кстати...
но как-то... не глобально.
а если я в консоли слушаю музыку или кино смотрю...

Jah will give us everything

,

Если ты в консоли слушаешь музыку, то невижу причин не активировать скринсейвер. А если кино - большинство плееров умеет его деактивировать
UPD: Еще есть x11-misc/xautolock, который, якобы, умеет по таймауту бездействия выполнять скрипт. Можно попробовать в этот скрипт внести список приложений при которых нельзя засыпать и обрабатывать действие соответсвенно.

при чем тут скринсейвер? я

при чем тут скринсейвер? я вроде suspend хотел.
я ведь про глобальную настройку, чтобы вне зависимости запущены иксы или нет, комп все равно засыпал при бездействии.

Jah will give us everything

Не знаю, есть ли какая-нибудь

Не знаю, есть ли какая-нибудь готовая утилитка по получению времени бездействия, но написать ее самому довольно элементарно.
Посмотрите на структуру XScreenSaverInfo в X11/extensions/scrnsaver.h в ней есть поле idle типа unsigned long int, после запроса XScreenSaverQueryInfo в котором будет содержаться время последнего использования устройств ввода.
В самом заголовочном файле (X11/extensions/scrnsaver.h) все прекрасно расписано.

#include <stdio.h>
#include <X11/extensions/scrnsaver.h>

int main()
{
    XScreenSaverInfo *XScrInfo = XScreenSaverAllocInfo();
    Display *XDisp = XOpenDisplay(NULL);
    XScreenSaverQueryInfo(XDisp, DefaultRootWindow(XDisp), XScrInfo);

    printf("%lu\n", XScrInfo->idle);

    return 0;
}

Собираем с Xss

P.S.: Извиняюсь, это с X

Справедливость восторжествует.

1. Тему по-русски не назвать

1. Тему по-русски не назвать было?

2. Как система должна различать звучащую музыку и, скажем, работу какого-нибудь демона в фоне?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Цитата: 1. Тему по-русски не

1. Исправил
2. А универсально это делать невозможно? придется описывать отдельно каждую программу и проверять ее на ... ?

Jah will give us everything

Так вот как различать эти

Так вот как различать эти программы? Для системы всё равно, проверяется почта там или играет музыка — есть запущенный процесс.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

мне бы хватило, если бы

мне бы хватило, если бы можно было проверять на активность звуковой карты, ведь ее и фильмы и музыка используют.

Jah will give us everything

.

Проверять активность звуковой можно с помощью fuser, неактивность в консоли - w, неактивность в X - xautolock

Осталось написать скрипт. Но вообще, странно, что нет ничего готового.

fuser дает не совсем точную

fuser дает не совсем точную картину, например mpd постоянно использует аудиоустройство, не зависимо от того проигрывается что-то или нет.
также fuser /dev/snd/controlC0 отображает активность mpd и игр, но на vlc никакой реакции. будто vlc использует другое аудиоустройство(оно всего одно).
может можно как-то делать опрос средствами alsa?

Jah will give us everything

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".