Как к правильно и легкий настраивают 'xdg-открытый' без какой-либо среды?

Это тривиально, если мы предполагаем, что "приложения можно работать", синонимично с "исполняемыми файлами в пути":

#!/bin/bash
IFS=: read -ra _dirs_in_path <<< "$PATH"

for _dir in "${_dirs_in_path[@]}"; do
    for _file in "${_dir}"/*; do
        [[ -x ${_file} && -f ${_file} ]] && printf '%s\n' "${_file##*/}"
    done
done
67
18.01.2018, 01:36
7 ответов

Можно использовать perl-file-mimeinfo в extra репозиторий для управления mimetypes.

Пример для открытия всех .pdf файлы в apvlv:

/usr/bin/vendor_perl/mimeopen -d $file.pdf

и затем, при подсказке, вводят приложение: apvlv.

25
27.01.2020, 19:31
  • 1
    Это работа. Но это только открывает файл. Так мой xdg-open оставленный ненастроенный и использование приложений xdg-open не откроет право файлов. –  kravemir 15.04.2012, 11:53
  • 2
    я не вполне следую Вашему комментарию. Что не работает? -d переключитесь устанавливает значение по умолчанию. Таким образом, если Вы используете его для открытия fileA.pdf - необходимо затем смочь открыться fileB.pdf с Вашим предпочтительным приложением. –  jasonwryan 15.04.2012, 12:34
  • 3
    Да. mimeopen -d a.pdf значение по умолчанию наборов для *.pdf, но это устанавливает значение по умолчанию для себя - mimeopen b.pdf работы. Но xdg-open конфигурация оставила без изменений, и она все еще открывает все с firefox :/ –  kravemir 19.04.2012, 15:40
  • 4
    После того как я установил значение по умолчанию с mimeopen, xdg-open ведет себя как ожидалось - в случае .pdfs, это открывает их с apvlv. –  jasonwryan 20.04.2012, 10:50
  • 5
    Это не работает на меня в Lubuntu 16.04. sudo xdg-mime default pluma.desktop text/plain дает touch: cannot touch "/home/user/.local/share/applications/mimeapps.list": No such file or directory /usr/bin/xdg-mime: 807: /usr/bin/xdg-mime: cannot create /home/user/.local/share/applications/mimeapps.list.new: Directory nonexistent; /usr/bin/vendor_perl/mimeopen -d $file.txt дает bash: /usr/bin/vendor_perl/mimeopen: No such file or directory. –  Nickolai Leschov 21.02.2017, 20:50

На Debian Вы могли использовать команду как корень

update-mime-database /usr/share/mime

наличие shared-mime-info пакет установлен.

7
27.01.2020, 19:31
  • 1
    , я попробовал его.Это не работает. Я выполняю Arch. –  kravemir 14.04.2012, 15:44

Почему не использовать утилиты от самого xdg?

Сделать Thunar файловым браузером по умолчанию, т.е. приложением по умолчанию для вводных папок.

$ xdg-mime default Thunar.desktop inode/directory

использовать xpdf в качестве средства просмотра PDF по умолчанию:

$ xdg-mime default xpdf.desktop application/pdf

Это должно создать запись в Вашей локальной базе данных MIME:

~/.local/share/applications/defaults.list
[Default Applications]
application/pdf=xpdf.desktop

Ваши файлы PDF должны быть открыты с xpdf теперь.

68
27.01.2020, 19:31
  • 1
    +1 и видит также мой связанный ответ на связанный вопрос, unix.stackexchange.com/questions/77136 / … –  michael 02.01.2014, 10:57
  • 2
    Самый полезный ответ, спасибо. Самый легкий знать о defaults.list таким образом, это может просто быть отредактировано вручную в случае необходимости. –  mVChr 25.05.2016, 00:08
  • 3
    По некоторым причинам xdg-mime не изменил defaults.list, но редактирование его вручную (благодаря подсказкам в этом ответе) добилось цели. –  Skippy le Grand Gourou 28.06.2016, 15:45
  • 4
    К вашему сведению немного зависимостей от Perl требуются для этого, удостоверьтесь, что Вам установили их. Дистрибутивы об/мин/DEB установят их для Вас обычно. –  lzap 13.07.2016, 09:56
  • 5
    Это кажется defaults.list теперь назван mimeapps.list. Посмотрите Дугу Wiki для списка допустимых местоположений для mimeapps.list. часть 5 –  Mateen Ulhaq 24.09.2017, 23:51

Вы могли использовать что-то вроде этого для генерации соответствующего xdg-mime команды для каждого из Вашего .desktop файлы и mimetypes, который они содержат, затем выполните тех, Вам нравится.Примечание: /usr/share/applications мог бы иметь подкаталоги.

for dd in /usr/share/applications ~/.local/share/applications; do
  for d in $(ls $dd 2>/dev/null | grep "\\.desktop$"); do
    for m in $(grep MimeType $dd/$d | cut -d= -f2 | tr ";" " "); do
      echo xdg-mime default $d $m;
    done;
  done;
done
7
27.01.2020, 19:31

Это похоже на ответ @aleb , но работает с файлами рабочего стола с пробелами:

find /usr/share/applications ~/.local/share/applications -iname '*.desktop' -print0 | while IFS= read -r -d $'\0' d; do
  for m in $(grep MimeType "$d" | cut -d= -f2 | tr ";" " "); do
    echo xdg-mime default "'$d'" "'$m'"
  done
done
4
27.01.2020, 19:31

Добавляя к тому, что все говорили,Убедитесь, что у вас нет перекрывающихся приложений.

Например, предположим, что вы хотите изменить магнитную ссылку по умолчанию, чтобы использовать qbittorrent, поэтому вы вводите

xdg-mime default org.qbittorrent.qBittorrent.desktop x-scheme-handler/magnet

Но когда вы вводите это и проверяете свой текущий магнит по умолчанию

xdg-mime query default x-scheme-handler/magnet

Оно показывает какое-то другое приложение, например popcorntime.desktop, которое вам не нужно.

Чтобы это исправить:

Используя файловый менеджер, перейдите в /usr/share/applications и найдите popcorntime.desktop

Щелкните правой кнопкой мыши и выберите свойства.

Перейдите на вкладку Приложения.

В области Поддерживаемые типы файлов:удалите Mimetype application/x -bittorrent

Затем нажмите «ОК»

Обратите внимание, когда вы снова открываете свойства и проверяете, вы обнаруживаете, что ничего не изменилось, и все вернулось к тому, что было.

Но на самом деле он был удален на секунду и перенастроен, поэтому теперь команда

xdg-mime default org.qbittorrent.qBittorrent.desktop x-scheme-handler/magnet

, который уже был установлен в mimeapps.list, будет применен.

1
27.01.2020, 19:31

Для тех, кто, как и я, не знает, как получить правильный MIME-тип для использования сxdg-mime:

1 -Исходная ситуация:

$ xdg-open.открывает vscodium (кто запрограммировал эту дурацкую ассоциацию файлов? ):[

2 -Задача :какой мим-тип у "."?

$ mimetype..: inode/directory

3 -Решение:

$ xdg-mime default thunar.desktop inode/directory

ПРИМЕЧАНИЕ. :Следующая строка не работает, но об ошибке не сообщается :{$ xdg-mime default Thunar.desktop inode/directory

2
16.04.2021, 11:48

Теги

Похожие вопросы