Linux Way
В этом блоге я делюсь советами по настройке\использованию Linux и больше ничем не делюсь. Не от жадности, а от желания мира на всей Земле. Я стараюсь следовать принципу KISS, когда это возможно и не понижает удобство работы. По возможности это отражено в моих советах. Удачи, друзья мои.
пятница, 16 марта 2012 г.
Ассоциации файлов в Linux
Достаточно часто возникает ситуация, когда у вас есть какой-то тип файлов и программа, которая эти файлы открывает. И хотелось бы, чтобы при попытке, запуска этого файла открывалась эта программа. У многих программ(например mc, nautilus), есть своя база ассоциаций, но это не совсем удобно, так как такой список имеют далеко не все программы, а вот системным пользуются все.
Есть два списка ассоциаций(На самом деле их больше, но лучше редактировать эти два), системный:
[Default Applications]
application/pdf=AdobeReader.desktop
video/mp4=mplayer.desktop
image/jpeg=gpicview.desktop
В правой части программа, которая должна запускать этот тип файлов. Список программ вы можете найти в папке:
Кроме того, вы можете использовать консольную ультиту xdg-mime, добавить новую ассоциации можно например так:
И пропишет для всех ваших программ MIME типы автоматически. Но это не сработает если у вас например две программы для открытия pdf файлов. В этом случае лучше инструкцию вручную, как сказано в начале руководства.
Default applications (Русский)
Состояние перевода: На этой странице представлен перевод статьи Default applications. Дата последней синхронизации: 9 апреля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Программы реализуют ассоциации приложений по умолчанию разными способами. В то время как программы командной строки традиционно используют переменные окружения, графические приложения обычно используют XDG MIME Applications через GIO API, Qt API или путём запуска /usr/bin/xdg-open , который является частью xdg-utils. Поскольку xdg-open и XDG MIME Applications довольно сложны, были разработаны различные альтернативные инструменты открытия ресурсов. В следующей таблице приведены примеры приложений для каждого метода.
Метод | Использует XDG | Примеры приложений |
---|---|---|
GIO GAppInfo | Да | Firefox, GNOME Files, PCManFM, Thunar, Thunderbird, Telegram |
/usr/bin/xdg-open | По умолчанию | Chromium (Открытие загруженного файла) |
свой | Обычно нет | mc, ranger |
переменные окружения | Нет | man, sudoedit, systemctl |
D-Bus FileManager1 | org.freedesktop.FileManager1 | Firefox (Показать в папке), Zotero (Отображение файла), Telegram (Показать в папке) |
Общая информация
Иногда программам нужно открыть файл или URI в приложении, которое предпочитает пользователь. Для этого необходимо определить тип файла (обычно с помощью расширения или сигнатуры, сопоставленной с MIME-типом) и приложение, ассоциированное с этим типом.
Программы Heirloom UNIX использовали mime.types для определения типов MIME и mailcap для ассоциации приложений.
Инструменты открытия ресурсов
xdg-open
xdg-open (часть xdg-utils) реализует XDG MIME Applications и используется многими программами.
Из-за его сложности бывает сложно отлаживать ситуации, когда открывается неправильное приложение по умолчанию. Из-за этого существует множество альтернатив, которые пытаются улучшить его. Некоторые из этих альтернатив заменяют двоичный файл /usr/bin/xdg-open , тем самым изменяя поведение приложений по умолчанию для большинства приложений. Другие просто предоставляют альтернативный метод выбора приложений по умолчанию.
perl-file-mimeinfo
perl-file-mimeinfo предоставляет инструменты mimeopen и mimetype . Они имеют немного более приятный интерфейс, чем их эквиваленты xdg-utils :
# определение типа MIME файла $ mimetype photo.jpeg photo.jpeg: image/jpeg # выбор приложения по умолчанию для этого файла $ mimeopen -d photo.jpeg Please choose an application 1) Feh (feh) 2) GNU Image Manipulation Program (gimp) 3) Pinta (pinta) use application # # открытие файла со своим стандартным приложением $ mimeopen -n photo.jpeg
Самое главное, что приложения xdg-utils на самом деле вызывают file вместо mimetype для обнаружения типа MIME, если они не смогли определить вашу среду рабочего стола. Это важно, потому что file соответствует стандарту XDG.
Примечание: perl-file-mimeinfo до версии 0.28-1 не полностью соответствует стандарту XDG. Например, он не считывает переопределения предоставляемые дистрибутивом по умолчанию и сохраняет конфигурацию в устаревших местах.
mimeo
mimeo AUR предоставляет инструмент mimeo который объединяет функции xdg-open и xdg-mime .
# определение типа MIME файла $ mimeo -m photo.jpeg photo.jpeg image/jpeg # выбор приложения по умолчанию для этого типа MIME $ mimeo --add image/jpeg feh.desktop # открытие файла со своим стандартным приложением $ mimeo photo.jpeg
Однако большая разница с xdg-utils заключается в том, что mimeo также поддерживает пользовательские «файлы ассоциаций», которые допускают более сложные ассоциации. Например, передача определенных аргументов командной строки на основе регулярного выражения соответствует:
# открытие ссылки на YouTube в VLC, не открывая новый экземпляр vlc --one-instance --playlist-enqueue %U ^https?://(www.)?youtube.com/watch\?.*v=
xdg-utils-mimeo AUR патчит xdg-utils так, что xdg-open использует mimeo в качестве fallback, если используемая среда рабочего стола не определилась.
handlr
handlr , написанный на Rust, предоставляет функциональность xdg-open и xdg-mime с упрощённым интерфейсом.
По сравнению с xdg-utils , он включает:
- установку ассоциаций по расширению, устраняя необходимость искать или запоминать MIME-типы
- проверку MIME-типов и расширений
- удаление недействительных записей из mimeapps.list
- интеллектуальное определение MIME-типов по содержимому файла в случае, если имя файла неоднозначно
- автодополнение MIME-типов, расширений и ярлыков приложений
xdg-utils-handlr AUR предоставляет версию xdg-open , которая использует handlr .
clifm
Lira, встроенный в clifm инструмент открытия ресурсов, может быть использован сам по себе с помощью опции командной строки —open . Файл настроек ( ~/.config/clifm/profiles/PROFILE_NAME/mimelist.cfm ) поддерживает регулярные выражения как для MIME-типов, так и для имён файлов (или расширений файлов). Несколько примеров:
# Открытие обычного файла clifm --open /etc/hosts # Открытие каталога clifm --open /media/data # Открытие URL (через приложение, ассоциированное с MIME-типов text/http в файле настроек) clifm --open www.archlinux.org
Минималистичные замены
Следующие пакеты конфликтуют с xdg-utils , поскольку предоставляют свой собственный скрипт /usr/bin/xdg-open .
Если вы хотите использовать один из них и при этом иметь возможность использовать xdg-utils , установите их вручную в каталог PATH перед /usr/bin .
- linopenAUR [ссылка недействительна: package not found] — Bash-скрипт в 170 строк, разрешает правила регулярного выражения, может указывать запасное приложение для открывания файлов
- mimi-gitAUR — Bash-скрипт в 130 строк, может изменять аргументы команды для каждого типа MIME
- busking-gitAUR — Perl-скрипт в 80 строк, аналогичен mimi, но при этом поддерживает правила регулярных выражений
run-mailcap
Важно: Если вы используете run-mailcap AUR , возможно, что xdg-open будет передавать выполнение ему. Это вызовет бесконечный цикл, если вы используете /etc/mailcap из пакета mailcap , потому что он тоже передаёт выполнение в xdg-open .
Настройка ассоциации файлов linux
Linux Twitter Интернет Windows Synaptic wine Asus A7u Ubuntu Asus virtualbox wordpress домен хостинг LAMP mySQL phpmyadmin Google Facebook Firefox 3G usb skype восстановление samba безопасность android Apple Ebay iPhone Samsung модем SQL
МЫ ВКОНТАКТЕ
Ассоциация файлов с приложениями в ubuntu
Ассоциация (ассоциирование) файла – это привязывание файла по расширению к программе, которая будет обрабатывать его при последующем запуске. К правило, для файлов существует множество альтернативных программ, которые могут отрывать данное расширение файла. К примеру аудио файлы формата mp3 можно прослушивать в различных аудио проигрывателях. При двойном нажатии мыши открывается программа обработки файла по умолчанию. У меня возникла необходимость изменения ассоциации файла в linux. Существует несколько способов ассоциации файлов с приложениями. Я разберу изменение ассоциации на системном уровне. Это означает, что при создании нового пользователя в системе будет применяться программа ассоциации, выбранная мною. Это очень удобно, когда на ПК есть несколько учётных записей и для каждой нужно настроить какими программами открывать выбранные файлы. Я буду всё описывать на примере привязки формата *.fb2 к читалке электронных книг Fbreader , а Вы уже подставьте для себя свой формат. Всё, что от нас требуется – так это добавить/изменить строку конфигурации, определяющую системную ассоциацию файлов. Данный файл в ОС Debian/Ubuntu находится в директории /usr/share/applications/ В ней нас интересую два файла: 1) defaults.list устанавливает программу по умолчанию для открытия определённого формата 2) mimeinfo.cache отвечает за опцию «рекомендуемые программы» (нажав правой кнопкой мышки на файле, в контекстом меню увидите «открыть с помощью»). Я добавил новую строку в файлы defaults.list и mimeinfo.cache, поскольку система не знала чем открывать формат fb2: application/x-fictionbook+xml=FBReader.desktop; FBReader.desktop — это ссылка на программу, ответственную за запуск fb2 формата. Все ссылки расположены в директории /usr/share/applications/ По-быстрому добавить эту строку через консоль можно следующими командами: sudo echo «application/x-fictionbook+xml=FBReader.desktop;» >> /usr/share/applications/defaults.list sudo echo «application/x-fictionbook+xml=FBReader.desktop;» >> /usr/share/applications/mimeinfo.cache В том случае, если не уверен какую строку нужно вписать для ассоциации файлов — я пишу в терминале: mimetype -aD файл.fb2 и в выводе будет указано что-то вроде: $ mimetype -aD .fb2 > Checking inode type > Checking globs for basename ‘.fb2’ > Checking for extension ‘.fb2’ .fb2: application/x-fictionbook+xml Выделенное жирным копируем и вписываем в упомянутые выше файлы конфигурации. Следующим этапом будет присвоение значка для всех .fb2 файлов. Читайте об этом в следующей статье. От спонсора: Устали от бесконечного поиска софта? Посетите наш сайт и найдите для себя необходимые программы для компьютера. К каждой программе имеется детальное описание и прилагается изображение интерфейса. Более того, все программы для компьютера от группированы в зависимости от их целевого назначения. У нас есть всё!
Войдите, чтобы оставить комментарий
Комментариев: 3
Олег, ты меня не правильно понял. В консоли производится только настройка. А все файлы, естественно, запускаются через Х-сервер. Просто если графическим способом установить ассоциацию зайдя в контекстное меню файла и выбрав через что открывать – это будет локальный конфиг для текущего пользователя. И если удалить системные папки юзера или войти под новым аккаунтом – ассоциация не сохранится, так что лучше через консольку сделать и потом не париться.