Эта статья прежде всего о возможностях систем linux, хотя
практическая ценность приведенных примеров тоже имеет место.
Статья предназначена для новичков в Линукс.
Чтобы творчески переработать скрипты под свою систему нужно
минимальное представление о программировании.
Используемые программы:
mpv # Плеер, переработанный и дополненый mplayer
i3blocks-1.4 # Панель для i3
xfce4-terminal # Быстрый эмулятор терминала.
утилиты:
xsel # Работа с буфером обмена из командной строки
socat # Работа с сокетами из командной строки
notify-send # Простые уведомления из bash. Удобно использовать для отладки
в тех местах, где скрипт выполняется не в терминале.
Итак, есть рабочий компьютер, на котором переодически играет музыка. Это либо
mp3 - файлы, либо youtube-ролики. Задача -- управление проигрыванием с панели.
С нее и начну. Панель i3blocks применяется с тайловым менеджером окон i3.
Принцип ее работы очень прост. С определенным интервалом она выполняет скрипты
или программы и результат их работы выводит на панель. Кроме того, программа
выполняет скрипт по нажатию клавиш мыши и передает эти нажатия скрипту.
Воспроизведение. Для него я использовал плеер mpv, переработанную версию
mplayer'а. Его достоинства -- умеет воспроизводить ролики youtube (с помощью
youtube-dl) и управляется через socket, то, что мне нужно.
Чтобы mpv принимал команды через socket, ему нужно задать опцию при запуске
или записать её в конфигурации.
--input-ipc-server=~/.config/mpv/socket - для командной строки
input-ipc-server=~/.config/mpv/socket - для файла конфигурации mpv.conf
Для добавления youtube-роликов я использую буфер обмена. С определенным
интервалом скрипт будет просматривать буфер обмена и если в нем будет
ссылка на ролик youtube, он будет добавлять его в плейлист плейера.
Итак, нужно 4 скрипта. Проигрывание/пауза, вперед, назад и скрипт для работы с буфером обмена.
Все скрипты должны выводить свои "кнопки", если mpv запущен.
Скрипты должны иметь разрешение на запуск, кто забыл: chmod +x scriptname
Скрипты prev и next отличаются лишь строкой вывода и командой mpv. Привожу
prev:
Для i3blocks config
[prev] # Имя скрипта (нужно сделать его запускаемым, chmod +x prev)
interval=10 # Интервал не может быть нулевым, ставим не слишком малый, с потолка.
[play_pause]
interval=5# Запускается раз в 5 секунд.
[next]
interval=10
Итак, теперь, если запустить mpv ~/mymusic/*mp3 или
mpv --input-ipc-server=~/.config/mpv/socket ~/mymusic/*mp3
то воспроизведением можно будет управлять с панели.
Теперь приступим к видео с youtube. i3blocks будет запускать скрипт раз в
секунду, а тот будет проверять буфер на предмет соответствия ссылке на
youtube. Проверять будем sed'ом.
Если кому-то нужно расписать команду sed - спрашивайте в комментариях.
Нужно добавить в ~/.config/i3blocks/config:
[mappendlst]
interval=3
Перезапуск i3 mod+shift+r и можно пользоваться.
PS. Ну и для тех, кто пользуется i3 и i3blocks, но еще не освоился там, добавлю.
i3blocks позволяет запускать скрипт по сигналам unix. Это удобно использовать
для индикатора раскладки клавиатуры.
В i3blocks config пишем
[lang]
signal=10
Сам lang:
s = $(xset -q |sed -n '8 s/12\: Group 2\: \+\(on\|off\?\).\+/\1/p')
if [ $s == "on" ]; then
echo "RU"
else
echo "EN"
fi
В i3/config
bindcode 105 exec pkill -SIGRTMIN+10 i3blocks # 105 - Код правого Control'a.
# pkill - отправить сигнал процессу
Узнать код своего переключателя - xev
Вопросы, замечания и предложения приветствуются.
К сожалению, pikabu не умеет в форматирование, пришлось делать скриншоты, а сами файлы тут:
https://disk.yandex.ru/d/vpEy-S1J_9aUzQ
Полезные вещи:
Advanced Bash Scripting Guide pdf - Почти все для bash scripting.
https://mpv.io/manual/stable/#command-interface Другие полезные команды для mpv.