- Ассоциации файлов в WINE.
- Linux Way
- пятница, 16 марта 2012 г.
- Ассоциации файлов в Linux
- Специфичные для Astra Linux решения задач. Часть 1.
- Что такое Astra Linux?
- Ассоциации файлов для отдельного пользователя
- Поднятие привилегий
- Вложенная сессия
- Программы на Delphi внутри WINE
- Некорректное отображение шрифтов в pdf
- Где хранятся ассоциации файлов?
- 9 ответов
- Как поменять ассоциации для множества файлов в Linux?
- 2 ответа 2
Ассоциации файлов в WINE.
Часто требуется, чтобы при работе в WINE файлы по ассоциациям открывались родными Linux программами в системе. К примеру, щелчок по файлу doc/docx/odt и вот уже запускается LibreOffice и т.д. К сожалению, пример от разработчиков в вики WINE уводит людей в такие сложности, хотя есть вариант попроще.
В чём недостаток примера из вики WINE? В ней рекомендуется создать исполняемый скрипт-обработчик run_linux_program внутри $HOME/bin, который если существует, то заносится для удобства в переменную $PATH.
#!/bin/sh
$1 «`wine winepath -u «$2″`»
А потом предлагается начать тяжкий труд по ручному созданию reg файлов на каждое интересующее вас расширение на примере pdf.
[HKEY_CLASSES_ROOT\.pdf] @="PDFfile" "Content Type"="application/pdf" [HKEY_CLASSES_ROOT\PDFfile\Shell\Open\command] @="/bin/sh run_linux_program acroread \"%1\""
Здесь мне уже не понравилось упоминание программы (в примере это acroread), который пойдёт первым параметром в скрипт ~/bin/run_linux_program. Если вы завтра захотите сменить дефолтный вьювер PDF файлов? А что если удалите Acrobat Reader?
Решил написать bash скрипт wine-file-associations (архив wine-file-associations), который «сделает всё красиво». До его использования желательно открыть его вашим любимым редактором и изменить переменные WINEPRFX и NEED_EXT под ваши нужды. В переменной WINEPRFX по умолчанию значение «.wine», если вы используете другой префикс, то укажите его. В переменной NEED_EXT по умолчанию значение «bmp gif png jpg jpeg svg pdf tif tiff rtf doc docx xls xlsx odt ods vsd zip rar 7z eml». В нижнем регистре через одиночный пробел сформируйте свой список расширений, обработка которых будет осуществляться НЕ внутри WINE, а в вашей Linux системе.
От вашего лица (не root) сделайте скрипт wine-file-associations исполняемым через chmod a+x wine-file-associations или запускайте sh ./wine-file-associations . Что делает скрипт?
1) Создаёт папку ~/bin/ и там скрипт-обёртку run_linux_app с содержимым
#!/bin/bash xdg-open "$(winepath --unix "$1")"
2) Делает копию реестра в вашем префиксе WINE.
3) Начинает формировать файл реестра, выставляя для указанных вами расширений использование обработчика UniversalHandlerW2L, который будет вызывать ~/bin/run_linux_app, но уже в Windows стиле аля Z:\home\ваш_аккаунт\bin\run_linux_app
Как работает эта магия? Внутри WINE если вы будете щёлкать по файлам с расширением из списка NEED_EXT, то в реестре будет указано использовать скрипт-обработчик run_linux_app, который благодаря xdg-open сможет открыть данный файл в той программе, которую вы используете в вашей Linux системе.
Отсюда приятные выводы. Если вы меняете дефолтную программу для данного расширения, то лишних телодвижений делать не нужно. Если вам в будущем потребуется обработка новых расширений, то просто модифицируйте NEED_EXT и снова запускайте скрипт wine-file-associations.
В данном месте совет! Сначала в вашей Linux машине пощёлкайте по нужному расширению и убедитесь что запускается нужная программа и вам нравится, как файл в ней открывается и выглядит.
Жду отзывов и предложений по улучшению.
Дата последней правки: 2022-08-03 17:42:13
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 файлов. В этом случае лучше инструкцию вручную, как сказано в начале руководства.
Специфичные для Astra Linux решения задач. Часть 1.
Внедряем в рамках импортозамещения Astra Linux (релиз Орёл). В данной статье будут собраны ответы на задачи, которые успешно были решены. Astra Linux базируется на Debian GNU/Linux и многие советы применимы как от Дебиан, в частности, так и от Linux, в целом. Если вам помогут найденные ответы, то welcome!
Что такое Astra Linux?
Это отечественная разработка на базе Debian GNU/Linux. Астра Линукс Общего Назначения (Astra Linux Common Edition) под названием Орёл трудится на классической X86_64 архитектуре без разработанной и верифицируемой системы мандатного доступа безопасности (конкурент AppArmor и SELinux). Орёл бесплатен для некоммерческого использования.
Астра Линукс Специального Назначения (Astra Linux Special Edition) идёт уже с системой мандатного доступа, позволяющей работать с информацией вплоть до «совершено секретно». Данные релизы трудятся на различных аппаратных архитектурах и так же названы в честь городов-героев.
Ассоциации файлов для отдельного пользователя
На примере связи файлов XML с LibreOffice Calc в большинстве Linux нужно использовать команду xdg-mime default /usr/share/applications/libreoffice-calc.desktop application/xml
Проверить связь — xdg-mime query default application/xml
В Астре Linux настоятельно рекомендуется fly-mimeapps —setassoc application/xml /usr/share/applications/libreoffice-calc.desktop
Проверить связь — fly-mimeapps —getassoc application/xml
В любом случае ваши изменения отражатся в файле ~/.config/mimeapps.list
Поднятие привилегий
Если в скриптах вызываете запрос на повышение привилегий, то, вероятнее всего хотите сделать запрос 1 раз на множество команд. Придётся использоваться что-то типа fly-su ‘sh -c «mkdir /mnt/test3; mkdir /mnt/test4″‘
Вложенная сессия
Если вам в скриптах необходимо вызвать создание отдельной (не вложенной) сессии, словно вы мышкой нажали пункт Звезда — Завершение работы — Сессия — Отдельная, нужно использовать команду fly-dmctl reserve
Программы на Delphi внутри WINE
Если вам требуется запустить windows программу, написанную на языке программирования Delphi, возможно, вы увидите отсутствие кнопки свернуть. Можете поиграть декорированием окон в winecfg, но если вас не устраивает результат, то можно исправить ситуацию через редактирование файла ~/.fly/theme/current.themerc
Найдите параметр:
TransientNotMinimizable=true
Измените его на
TransientNotMinimizable=false
Некорректное отображение шрифтов в pdf
К сожалению, в Astra Linux есть проблема с PDF файлами, созданные средствами КОМПАС-3D v18 (Haru Free PDF Library 2.3.0RC2). Из-за нерешённой проблемы в библиотеке libpoppler просмотрщики PDF, использующие её (в том числе и дефолтный Okular), неправильно отображают кириллицу в таких pdf файлах. Возможно, лучшим решением будет смена дефолтного просмотрщика PDF на программу «Просмотр PDF» (установите пакет fly-pdfview, если необходимо).
Дополнительные материалы:
Решение проблем в релизе 1.7 («Новый» Орёл) Специфичные для Astra Linux решения задач. Часть 2.
Дата последней правки: 2023-01-17 09:59:54
Где хранятся ассоциации файлов?
Как Ubuntu или любые другие системы Linux хранят ассоциации файлов?
Есть ли некоторые /etc/asscociations файл или что-то?
Я знаю, что могу щелкнуть правой кнопкой мыши файл и изменить его с помощью «открыть с помощью», но мне просто интересно узнать, как он хранится внутри.
9 ответов
Файловый менеджер (по умолчанию Nautilus) использует MIME-тип файла, чтобы определить, с какой программой открыть его. Когда приложение установлено, оно может указывать, какие типы MIME оно может открывать, и команду, используемую для открытия файлов в файле.desktop, который находится в /usr/share/applications , Этот файл используется для меню, ярлыков на рабочем столе и т. Д.
Например, GIMP имеет следующий файл.desktop:
[Desktop Entry] Version=1.0 Type=Application Name=GNU Image Manipulation Program GenericName=Image Editor Comment=Create images and edit photographs Exec=gimp-2.7 %U TryExec=gimp-2.7 Icon=gimp Terminal=false Categories=Graphics;2DGraphics;RasterGraphics;GTK; X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=GIMP X-GNOME-Bugzilla-Component=General X-GNOME-Bugzilla-Version=2.7.2 X-GNOME-Bugzilla-OtherBinaries=gimp-2.7 StartupNotify=true MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;
Увидеть MimeType поле — здесь перечислены поддерживаемые типы MIME. Exec поле указывает системе использовать команду gimp-2.7 %U , заменив «%U» файлами для открытия. (Обратите внимание, что GIMP 2.7 — это версия, которую я установил из PPA, поэтому она выше текущей версии в репозиториях Ubuntu).
Когда пакет приложения установлен, система извлекает эти данные MIME-типа в более легкодоступную базу данных, потому что поиск в каждом файле.desktop займет слишком много времени, если это будет выполняться при каждом открытии файла.
Это сообщает системе, какие приложения можно использовать для этого типа MIME, и предоставляет приложения в списке «Открыть с помощью». Значение по умолчанию определено в другом месте. Файл /usr/share/applications/defaults.list предоставляет информацию о системных значениях по умолчанию. Если вы не выберете иное, это те приложения, которые используются при открытии файла.
Как поменять ассоциации для множества файлов в Linux?
На данный момент у меня установлено 2 текстовых редактора, которыми я пользуюсь — Code и Sublime. Первый я использую как IDE — только для работы, потому что он относительно медленно запускается. А второй более быстрый, по этому используется именно как текстовый редактор, чтобы что-то по-быстрому открыть, поправить и закрыть. Собственно проблема в том, что сейчас для всех текстовых файлов назначен Code и я хочу поменять его на Sublime, но mime-типов очень много, через GUI менять замучаюсь, он к тому же глючный, постоянно мотает список вверх. Хотелось бы узнать, в каких файлах это можно поправить. Смотрел в ~/.local/share/applications , там никаких записей о Code нет.
2 ответа 2
например, с помощью программы xdg-mime (или любым другим подручным средством, способным записывать информацию в конф. файл ( ~/.local/share/applications/ )).
посмотреть текущую ассоциацию:
пара запросов (данные приведены из моей системы):
$ xdg-mime query default application/x-abiword libreoffice-writer.desktop $ xdg-mime query default application/rtf libreoffice-writer.desktop
чтобы назначить ассоциацию:
к примеру, на программу vim:
$ xdg-mime default vim.desktop application/x-abiword application/rtf
$ xdg-mime query default application/x-abiword vim.desktop $ xdg-mime query default application/rtf vim.desktop
а вот как это всё записалось в файл конфигурации:
$ cat ~/.local/share/applications/mimeapps.list [Default Applications] application/x-abiword=vim.desktop application/rtf=vim.desktop
посмотреть все текущие закешированные ассоциации можно в файле /usr/share/applications/mimeinfo.cache