Завершение работы компьютера после воспроизведения. VLC Linux

Posted in *nix от Comp-Master on 14.01.2016 No Comments yet

Люблю посмотреть фильмы перед сном, а вставать и выключать компьютер после не хочется, да и есть вероятность заснуть. Есть таймеры отключения типа EasyShutdow и ComplexShutdown, но они отключают строго по времени, которое нужно высчитывать.
Вариант для Gnome мне не подходит (у меня файловый менедждер Nemo), но я его опишу ниже.
Пишем скрипт для VLC#! /bin/sh
vlc && shutdown -h now
вместо VLC может быть mplayer или любой другой плейер.

Делаем скрипт исполняемым, запускаем. Открывается проигрыватель, выбираем (или перетаскиваем ) свой файл, ставим галочку «Выйти, отыграв плейлист» (в VLC во вкладке «Медиа»). Ждем окончания фильма. Проигрыватель закрывается и… ничего не происходит.

shutdown без sudo не работает, а для sudo нужен пароль. Нам надо разрешить выполнение команды shutdown от sudo без ввода пароля.

Для правки файла с привилегиями «sudoers» существует команда:sudo visudo, которая открывает etc/sudoers в редакторе nano
Для добавления пользователю доступа к sudo без пароля:имя_пользователя ALL=NOPASSWD: команда
Путь до программы прописывается полностью, то есть в нашем примере не shutdown, а /sbin/shutdown
Чтобы узнать местонахождение программы набираем в терминалеwhereis название_программыв нашем случае

whereis shutdown
shutdown: /sbin/shutdown /usr/share/man/man2/shutdown.2.gz /usr/share/man/man8/shutdown.8.gz

Можно добавить несколько команд, НО каждая команда указывается отдельно, нельзя написать через запятую или подряд через пробел.
Если у нас есть набор команд, которые выполняются по очереди, и нам так лень вводить в каждой строке. Ну тогда их можно указать в sh скрипте и дать выполнить этот скрипт с sudo без ввода пароля.
Делается это аналогичным образом, паттерн такой же:имя_пользователя ALL=NOPASSWD: полный_путь_до_скриптаОпять же, следует избегать пробелов в названии каталогов, но если они есть то экранируются они «обратным слэшем» — \
То есть в нашем случаем мы дописываем в конце файла#Custom privilegies
avf ALL=NOPASSWD: /sbin/shutdown
Запускаем скрипт, включаем выход из плейера после окончания воспроизведения, досматриваем фильм и видим как выключается компьютер
Способ универсальный, работает независимо от системы, DE и файлового менеджера

Способ для пользователей Gnome и Nautilus.

Желаемое достигается очень просто, методом добавления скрипта Nautilus (название файла произвольное, например «Отключение после просмотра») в соответствующую папку
~/.gnome2/nautilus-scripts/ со следующим содержимым.#!/bin/bash
#Запуск медиапрлеера VLC c параметрами : выход после окончания плейлиста и списком файлов плей листа
#выбранных в контекстном меню для файлов Nautilus
vlc --play-and-exit $NAUTILUS_SCRIPT_SELECTED_URIS
#Выключение компьютера после завершения процесса VLC с использованием dbus (не требует прав root)
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
Таким образом в контекстном меню, в подменю «Сценарии» появится пункт «Отключение после просмотра».
Если выбрать файл(несколько файлов) с помощью этого пункта, то они будут проиграны медиаплеером VLC и после его закрытия компьютер моментально отключится без запроса подтверждения.

Для того что бы добавить возможность отмены этой операции необходимо установить пакет zenity (набор для создания графических интерфейсов) sudo apt-get install zenityПосле этого редактировать (или создать) файл ~/.gnome2/nautilus-scripts/»Отключение после просмотра»
со следующим содержимым :#!/bin/bash
#Сценарий Nautilus: Завершение работы компьютера после воспроизведения.
#
# VAR
#--------
COUNT=10
#--------
# BEGIN
#
vlc --play-and-exit $NAUTILUS_SCRIPT_SELECTED_URIS
(
while [ $COUNT? != 110 ]
do
echo $COUNT
COUNT=`expr $COUNT + 5`
sleep 1
done
) |
zenity --auto-close --progress --title "Завершение работы после просмотра" --text "Воспроизведение окончено.Питание будет отключено..."
if [ $? = 0 ];
then
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
fi
#
# END
В этом случае после окончания плей-листа(выхода из VLC) на экран будет выведено предупреджение с возможностью отмены или подтверждения. По истечении 20 секунд компьютер будет выключен автоматически.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники