Отключение хранителя экрана

Есть и такой ОС.

Модератор: weec

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Charlz_Klug_
проходил мимо

Отключение хранителя экрана

Непрочитанное сообщение Charlz_Klug_ » 2018-07-20 12:57:04

Использую Gentoo. В качестве менеджера окон: Dwm. Логин-менеджер: Slim. У Firefox нет отключения хранителя экрана. Поэтому я накостылил такой сценарий:

Код: Выделить всё

charlzk@Scarlett ~ $ cat .dwm/dwmrc 
#!/bin/sh

WEATHER="`curl -s wttr.in/Moscow | sed -nr '3,5s/^.{30}//p' | sed -r 's/ +$//' | sed -r 'N;s/\n/ /;N;s/\n/ /' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g"`"
I=0
while true
do
    LOCALTIME="`date +'%a %b %d %H:%M %Z %Y'`"
    BAT="B"

    if acpi -a | grep off-line > /dev/null
    then
	BAT=$BAT-
	if acpi -b | grep "Discharging, [0-9]%" > /dev/null
	then
		notify-send -h string:bgcolor:#cc0000 -h string:fgcolor:#000000 "Батарея" "Критический уровень заряда"
	fi
    else
	BAT=$BAT+
    fi

    if acpi -b|grep --only-matching Full > /dev/null
    then
	BAT=$BAT" Full"
	notify-send -h string:bgcolor:#66FF00 -h string:fgcolor:#000000 "Батарея" "Заряжена полностью"
    else
	BAT=$BAT" `acpi -b|grep --only-matching --extended-regexp '[[:digit:]]+%+, [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}'|sed s/,//`"
    fi

    if [ $I==90 ];
    then
	I=0
	WEATHER="`curl -s https://weathermetro.com |grep -E '(wn-location)|(wn-temperature)|(wn-box-condition-row.*(Conditions)|(Wind speed))' | sed -n 's/<img.*">//;s/.*">//;s/<.*>//;s/Conditions:\s//;s/Wind speed:\s//;s/\n/ /;s/\s$//;p' | xargs -n4 -d'\n'`"
    fi

    if pacmd list-sink-inputs | grep 'state: RUNNING' > /dev/null
    then
	echo "11" >> /home/charlzk/dbg.txt
	xscreensaver-command -deactivate > /dev/null
    fi
    
    xsetroot -name "$WEATHER $BAT $LOCALTIME"
    I=$I+1
sleep 10s
done

Что делает этот сценарий? В основном он формирует заголовок для Dwm: погода, состояние батареи и текущее время/дата. Сюда же я попытался добавить сброс хранителя экрана при обнаружении звука в Pulseaudio. Приведу эту часть сценария:

Код: Выделить всё

    if pacmd list-sink-inputs | grep 'state: RUNNING' > /dev/null
    then
	echo "11" >> /home/charlzk/dbg.txt
	xscreensaver-command -deactivate > /dev/null
    fi
В чём проблема? Проблема в том, что если я залогинюсь, открою в Dwm консоль и из-под неё запущу мой сценарий, то всё отрабатывает как надо: звук определяется, хранитель экрана сбрасывается. Но если я добавляю запуск этого сценария в .xinitrc, то всё работает за исключением определения звука и, соответственно, сброса хранителя экрана. Такое ощущение, что при запуске из .xinitrc команда "pacmd list-sink-inputs" просто не видит Pulseaudio. При этом пользователь, из под которого запущен сценарий, - это я:

Код: Выделить всё

charlzk@Scarlett ~ $ ps axu|grep dwmrc
charlzk   4579  0.0  0.1  11544  3068 ?        S    12:24   0:00 /bin/sh .dwm/./dwmrc
charlzk   7970  0.0  0.0  10824   900 pts/1    S+   12:53   0:00 grep --colour=auto dwmrc
Что можно тут придумать. Или если есть ещё какие-то способы сбрасывать хранителя экрана, то прошу сообщить мне. Спасибо!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Charlz_Klug_
проходил мимо

Отключение хранителя экрана

Непрочитанное сообщение Charlz_Klug_ » 2018-08-07 12:26:50

Перешёл на Xmonad и уже из-под него запустил сценарий. Всё заработало.