Многие операции вроде “замаунтить флешку”, “скопировать файл” и т.п. ежедневно-рутинные действия я не задумываясь совершаю в консоли (благодаря yakuake она всегда под рукой). Но перед людьми бывает “неудобно” – они видя все эти “магические” манипуляции ещё больше укрепляются в мысли, что “эти ваши линуксы” не для “наших широт”.
Для того чтобы немного размазать негативные впечатления добавил некоторые действия в контекстное меню “проводников”.
Первое что надо сделать: понять ГДЕ необходимо приложить руки.
$ kde4-config --path services /home/miracle/.kde/share/kde4/services/:/usr/share/kde4/services/
В одной из этих директорий создаём файл my-super-actions.desktop подобного содержания:
[Desktop Entry] Type=Service ServiceTypes=KonqPopupMenu/Plugin MimeType=video/*; Actions=CompressMovie4Nokia;CompressMovie4HTC;GetSubtitles; Encoding=UTF-8 [Desktop Action CompressMovie4Nokia] Name=Compress for Nokia Icon=phone Exec=/bin/sh -c 'cd "`dirname "%f"`" \ && ffmpeg -y -i "`basename "%f"`" -ac 1 -ar 22050 -vcodec mpeg4 -s 176x144 -r 24 \ -b 118k -ab 32k -aspect 11:9 "nokia-`basename "%f" .avi`.mp4" \ && kdialog --title "Compress Movie" --passivepopup "Movie `basename "%f"` compressed"' [Desktop Action CompressMovie4HTC] Name=Compress for HTC Icon=pda Exec=/bin/sh -c 'cd "`dirname "%f"`" \ && ffmpeg -y -i "`basename "%f"`" -s 320x240 -r 22.5 -ac 2 "htc-`basename "%f" .avi`.avi" \ && kdialog --title "Compress Movie" --passivepopup "Movie `basename "%f"` compressed"' [Desktop Action GetSubtitles] Name=Download subtitles Icon=draw-text Exec=/bin/sh -c 'cd "`dirname "%f"`" \ && subtitles `basename "%f"` -l en \ && kdialog --title "Subtitles" --passivepopup "Subtitles for movie `basename "%f"` downloaded"'
Затем выполняем:
$ kbuildsycoca4
И наблюдаем свежедобавленные пункты в меню “Actions”.
В коде всё наглядно, отдельного упоминания наверное стоит только тот факт, что /bin/sh нужен лишь для того, чтобы запустить более одной команды, как в моём случае – если команда одна, то запуск шелла будет лишним.
Ссылка по теме: Desktop Entry Specification