Вы здесь

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         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 написал:
да, кстати замечал, что 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. Тему по-русски не назвать было?

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

—

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

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

—

Jah will give us everything

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

—

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

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

—

Jah will give us everything

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

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

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

—

Jah will give us everything