Я думаю, не нужно никому рассказывать о том, что Emacs — замечательная среда, которая умеет если не все, то почти все. Лучше продемонстрировать это на простом примере: рассказать, как из Emacs управлять плеером
mpd.
MPD (Music player daemon) — очень необычный, но в то же время популярный в мире nix плеер. Необычность его заключается в том, что он представляет собой демон операционной системы. Т.е, когда mpd стартует — он начинает слушать определенный порт в системе (по умолчанию — 6600) по которому ему отправляются команды. Конечно, эти команды можно посылать и обычным telnet'ом, но гораздо удобнее использовать для этого какой-нибудь клиент, тем более, что таких клиентов существует великое множество. Клиенты mpd бывают консольные (например
ncmpc), графические (например
Sonata) и всякого рода экзотические (существует даже плагин для Firefox). Поэтому ничего удивительного в том, что Emacs может выступать в качестве клиента к mpd нет. Главное — правильно Emacs настроить, чем мы сейчас и займемся.
Сначала скачаем библиотеку
libmpdee.el и файлы клиента:
mingus.el и
mingus-stays-home.el. Строго говоря, можно обойтись одним только
mingus.el,
mingus-stays-home.el содержит лишь функции для работы с mp3-тегами, но весит файл не много, поэтому все дальнейшие рассуждения будут строиться исходя из того, что мы используем оба файла.
Прежде всего, необходимо настроить среду для
mingus. Ему необходим файл ~/.mpdconf примерно следующего содержания:
port "6600"
music_directory "/usr/stuff/music"
playlist_directory "~/playlists"
log_file "~/mpd.log"
message_file "~/mpd.err"
Затем нужные .el фалы нужно подключить к
.emacs, для этого используем команды:
(load-file "/home/pavel/emacs/modes/libmpdee.el")
(load-file "/home/pavel/emacs/modes/mingus.el")
(load-file "/home/pavel/emacs/modes/mingus-stays-home.el")
Естественно, что каталог, в котором хранятся .el-файлы, у вас может быть другим. Теперь можно указать Emacs, что необходимо грузить
mingus при старте. Для этого существует команда
autoload:
(autoload 'mingus "mingus-stays-home")
Все, собственно, можно пользоваться. Для того, чтобы вызвать
mingus, служит команда
mingus. Ее можно забиндить, например на F9:
(global-set-key [f9] 'mingus)
После вызова
mingus мы попадем в текущий плейлист mpd. По нему можно перемещаться клавишами управления курсором и выбирать нужную композицию. После нажатия
RET — выбранная композиция заиграет. Чтобы заиграла предыдущая/следующая композиция используются клавиши
< и
>. Удалить композицию из плейлиста можно клавишей d. Плейлисты так-же можно загружать/сохранять/удалять. Если нажать
1,
H или
? — появится буфер со справкой по
mingus, в которой описаны все используемые горячие клавиши. Клавиша
2 возвращает нас в плейлист, а клавиша
3 открывает браузер — содержимое каталога, указанного, как
music_directory в файле
.mpdconf, по которому можно перемещаться и добавлять композиции в текущий плейлист клавишами
SPACE и
P. Клавишами «лево» и «право» можно уменьшать и увеличивать громкость соответственно.
Вообще рекомендую ознакомиться со списком горячих клавиш, он составлен довольно удобно, поэтому управлять музыкальной коллекцией из
mingus очень легко.
Еще интересной возможностью являются хуки, которые можно навешивать на переход в режим плейлиста и режим браузера. Давайте расширим режим плейлиста таким образом, чтобы клавиши
( и
) уменьшали и увеличивали громкость звучания соответственно:
(add-hook 'mingus-playlist-hook
'(lambda()
(local-set-key ")" 'mingus-vol-up)
(local-set-key "(" 'mingus-vol-down)))
И, чтобы стало совсем приятно, сделаем так, чтобы клавиша «a» добавляла выбранный файл в плейлист, а клавиша «А» добавляла и сразу же играла файл:
(add-hook 'mingus-browse-hook
'(lambda()
(local-set-key "a" 'mingus-insert)
(local-set-key "A" 'mingus-insert-and-play)))
Ну вот собственно и все, что я хотел рассказать о
mingus.
Пользуясь случаем, хочу поблагодарить хабрапользователя
alexott за его мануалы по Emacs.
комментарии (12)