Я использую Ubuntu 12.04. Я установил xscreensaver вместо gnome.screensaver.
Моя проблема в том, что я не могу заставить заставку перестать появляться, когда я смотрю фильм в Movie Player. У меня установлен Movie Player для отключения заставок, но он не работает на xscreensaver.
Как изменить файлы программы для отключения xscreensaver во время работы Movie Player?
Я заметил, что все ответы здесь казались излишне сложными; Вы не должны действительно делать этого на основе определенного медиаплеера - все, что необходимо сделать, обнаруживают, если какое-либо аудио играет. Я на самом деле удивлен, что это не функция, встроенная в xscreensaver. Вот супер простой сценарий удара:
#!/bin/bash
while true
do
state=$(pacmd list-sinks | grep -A 4 "*" | grep "state: " | cut -c 9-)
if [[ $state == SUSPENDED || $state == IDLE ]]
then
echo "State: $state. Not pausing screensaver."
sleep 2m
else
echo "State: $state. Pausing screensaver."
xscreensaver-command -deactivate > /dev/null
sleep 4m
fi
done
Вот моя собственная версия от кода Chris:
#!/bin/bash
while sleep 55
do
players_list=$(gdbus call --session --dest org.freedesktop.DBus \
--object-path / --method org.freedesktop.DBus.ListNames | \
awk 'BEGIN { RS=","; } /org.mpris.MediaPlayer2./ { gsub(/[\[\]()\x27]/, ""); print $1; }')
for player in $players_list
do
state=$(gdbus call --session \
--dest $player \
--object-path /org/mpris/MediaPlayer2 \
--method org.freedesktop.DBus.Properties.Get \
"org.mpris.MediaPlayer2.Player" \
"PlaybackStatus")
fullscreen=$(gdbus call --session \
--dest $player \
--object-path /org/mpris/MediaPlayer2 \
--method org.freedesktop.DBus.Properties.Get \
"org.mpris.MediaPlayer2" \
"Fullscreen")
if [ "$state" = "(<'Playing'>,)" -a "$fullscreen" = "(<true>,)" ]
then
echo $player $state $fullscreen send signal
xscreensaver-command -deactivate
break
else
echo $player $state $fullscreen
fi
done
done
Это проверяет при каждом повторении, если список плееров был изменен.
Это также деактивирует экранную заставку, только если плеер является полным экраном, который обычно имеет место для видео.
я просто поместил этот сценарий в автоматический запуск, и не беспокойтесь больше xscreensaver при просмотре ролика.
Для MPV и mplayer, встроена функциональность сердцебиения.
1) Определяют местонахождение Вашего mpv конфигурационного файла. locate mpv.conf
2) Открывают его. sudo nano /path/to/mpv.conf
3) Добавляют эту линию внизу. heartbeat-cmd="/usr/bin/xscreensaver-command -deactivate > /dev/null"
4) Близко, и экономят. Ctrl+X, используя нано.
Узнают, где найти Ваш mpv.conf файл здесь (конфигурация идентична на Арке Linux), https://wiki.archlinux.org/index.php/Mpv#Configuration
, Если переменная окружения XDG_CONFIG_HOME не будет установлен, то пользовательские конфигурационные файлы будут прочитаны из ~/.config/mpv справочник. Общесистемные конфигурационные файлы прочитаны из/etc/mpv справочника.
Можно попробовать подобный сценарий этому. Наблюдайте за состоянием плеера через DBUS.
я более низкая задержка с 55 секундами, работайте лучше с 1 минимальным разом экранной заставки.
Пример VLC:
BTW, VLC в Ubuntu 14.04 включили интерфейс DBUS по умолчанию. Где в Ubuntu 12.04 не. Проверьте его от:
Инструменты → Предпочтения → Усовершенствованный (или Все) → Интерфейс → Интерфейсы Управления → интерфейс управления D-шины. (Примените тогда Перезапуск VLC)
Создают файл heartbeat.sh
в [1 112]:
#!/bin/bash
while sleep 55
do
if [ "$(pgrep vlc)" != "" ]
then
state=$(bash -c 'gdbus call --session \
--dest org.mpris.MediaPlayer2.vlc \
--object-path /org/mpris/MediaPlayer2 \
--method org.freedesktop.DBus.Properties.Get \
"org.mpris.MediaPlayer2.Player" \
"PlaybackStatus"')
if [ "$state" = "(<'Playing'>,)" ]
then
#xscreensaver-command -deactivate
xset s reset
fi
fi
done
Открытый терминал Ctrl + Высокий звук + t
Добавляют выполненные полномочия:
chmod +x ~/Desktop/heartbeat.sh
сценарий Выполнения:
~/Desktop/heartbeat.sh
Попытка плеер VLC.
Для [1 166] Gnome MPlayer (D-шина включила по умолчанию), используйте:
"$(pgrep gnome-mplayer)"
и --dest org.mpris.MediaPlayer2.gnome-mplayer
Для [1 167] (Тотем) плеер Видео (Плагин D-шины, отключенный по умолчанию),
Редактирование → Плагины → Проверьте D-автобусное-сообщение. (Тотем перезапуска)
Использование:
"$(pgrep totem)"
и --dest org.mpris.MediaPlayer2.totem
Это изменяется с работать с любым плеером, которые обеспечивают MPRIS. Это получает список динамично (недостаток, это не различает аудио, только играют и видео игра). Лучшим способом я думаю, должен поместить вручную список плееров, которые Вы любите:
#!/bin/bash
players_list=$(gdbus call --session --dest org.freedesktop.DBus \
--object-path / --method org.freedesktop.DBus.ListNames | \
awk 'BEGIN { RS=","; } /org.mpris.MediaPlayer2./ { gsub(/[\[\]()\x27]/, ""); print $1; }')
while sleep 55
do
for player in $players_list
do
state=$(gdbus call --session \
--dest $player \
--object-path /org/mpris/MediaPlayer2 \
--method org.freedesktop.DBus.Properties.Get \
"org.mpris.MediaPlayer2.Player" \
"PlaybackStatus")
if [ "$state" = "(<'Playing'>,)" ]
then
echo $player $state send signal
#xscreensaver-command -deactivate
#use xset to work with all screensaver tools and avoid dimming display ...
xset s reset
break
else
echo $player $state
fi
done
done
подсказки Отладки :
Часы в X раз
watch -n1 xprintidle
или:
while sleep 1; do xprintidle; done;
Проверка при отключении работ экранной заставки (при выполнении этого сценария, xscreensave не должен открываться)
#!/bin/bash
while sleep 55
do
#xscreensaver-command -deactivate
#xdg-screensaver reset
xset s reset
done
Проверка на список DBUS для интерфейса плеера MPRIS, примера с выполнением VLC:
gdbus call --session --dest org.freedesktop.DBus \
--object-path / --method org.freedesktop.DBus.ListNames | \
awk 'BEGIN { RS=","; } /org.mpris.MediaPlayer2./ { gsub(/[\[\]()\x27]/, ""); print $1; }'
Вывод:
org.mpris.MediaPlayer2.vlc
org.mpris.MediaPlayer2.vlc.instance3939
Или использование dbus-send
Вывод команды
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames \
| grep org.mpris.MediaPlayer2.
:
string "org.mpris.MediaPlayer2.vlc"
string "org.mpris.MediaPlayer2.vlc.instance3939"
Ссылки :
qdbusviewer
, чтобы проверить корректное целевое имя или использовать другой плеер Вам нравится.