LINUX.ORG.RU

Cmus и ждущий режим

 


0

1

Доброго дня. Прошу помочь знающих, какая опция в настройках cmus ответственна за отключение lockscreen. Чтобы проигрывание музыки не прекращалось и комп не уходил в ждущий режим. Спасибо Linux Mint Mate 18.1 | Ubuntu 16.04

У меня подобное поведение осуществляется при помощи скрипта и xautolock. Если какое-либо приложение воспроизводит звук или приложение в фуллскрине экран не гаснет.

(скрипт не самого лучшего качества, но работает.)

#!/usr/bin/env bash

SUSPEND_TIMEOUT=15
DISPLAY_OFF_MINUTES=5
DISPLAY_OFF_TIMEOUT=$(((SUSPEND_TIMEOUT - DISPLAY_OFF_MINUTES) * 60))
RESTARTTIMEOUT=300
DEFAULT_STATE="hibernate"
LOCKER="i3lock -i $HOME/.wallpaper.png"
#LOCKER=""

STATE="none"

HIBERNATE="org.freedesktop.ConsoleKit.Manager.Hibernate boolean:true"
RESTART="org.freedesktop.ConsoleKit.Manager.Restart"
SUSPEND="org.freedesktop.ConsoleKit.Manager.Suspend boolean:true"
STOP="org.freedesktop.ConsoleKit.Manager.Stop"
HYBRID="org.freedesktop.ConsoleKit.Manager.HybridSleep boolean:true"

checkfullscreen() {
if xprop -id "$(xdotool getactivewindow)" _NET_WM_STATE | grep -q _NET_WM_STATE_FULLSCREEN ; then
    return 0
else
    return 1
fi
}

checkpulseaudio() {
if pactl list | grep -q RUNNING ; then
    return 0
else
    return 1
fi
}


checkplaying() {
if checkpulseaudio || checkfullscreen; then
    return 0
else
    return 1
fi
}

lock() {
if xset q | grep -q "Monitor is Off"; then
    return 1
else
    sleep 0.5
    #$LOCKER
    xset dpms force off
fi
return 0
}


checker() {
case "$1" in
"poweroff")
    STATE=$STOP
    ;;

"reboot")
    STATE=$RESTART
    ;;

"suspend")
    STATE=$SUSPEND
    checker lock
    ;;

"hibernate")
    STATE=$HIBERNATE
    checker lock
    ;;

"hybridsleep")
    STATE=$HYBRID
    checker lock
    ;;

"lock")
    lock
    ;;

"autolock")
    xautolock -time "$SUSPEND_TIMEOUT"  -locker "$0 $DEFAULT_STATE" \
        -notify "$DISPLAY_OFF_TIMEOUT" -notifier "$0 checklock" -detectsleep  -noclose &
    ;;

"restartlocker")
    killall -TERM xautolock
    sleep $RESTARTTIMEOUT
    checker autolock &
    ;;

"checklock")
    if  checkplaying ; then
        checker restartlocker
    else
        checker lock
    fi
    ;;
"checksuspend")
    ;;

"")
    exit
    ;;

esac
}

checker "$1"

if [ "$STATE" != "none" ]; then
    dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager $STATE
fi

x13 ()
Ответ на: комментарий от x13

У меня рабочее окружение mate, нет там consolekit, звук через alsa. Детект видео и фулскрина впрочем не нужен, но вот в остальном я как то плаваю. Вряд ли мне подойдёт этот скрипт без переработки.

diatum ()

Мне стало довольно интересно как можно решить эту проблему и похоже решение нашлось.
По этой ссылке куча программ для показа статуса воспроизведения
https://github.com/cmus/cmus/wiki/status-display-programs
Там есть этот скрипт:
https://github.com/cmus/cmus/wiki/status_display_short_text.sh

Если его переделать в что-то подобное и подсунуть вместо status_display_program, то он решит проблему.

##!/usr/bin/env bash

stat="stopped"

while [ "$1" '!=' "" ]
do
    if [ "$1" == "status" ]; then
        stat="$2"
    fi
shift
shift
done

case "$stat" in
"playing")
    if !([ -e /tmp/powermanager_disabled.lockfile ]); then
        touch /tmp/powermanager_disabled.lockfile
        команда для выключения менеджера питания
    fi
    ;;
"stopped" |"paused")
    if ([ -e /tmp/powermanager_disabled.lockfile ]); then
        rm /tmp/powermanager_disabled.lockfile
        команда для включения менеджера питания
    fi
    ;;
*)
    ;;
esac

if'ы нужны для того чтобы не дёргать менеджер питания без необходимости. Команды для корректного отключения/усыпления mate-power-manager я не знаю.

x13 ()