Это тривиально, если мы предполагаем, что "приложения можно работать", синонимично с "исполняемыми файлами в пути":
#!/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
Можно использовать perl-file-mimeinfo в extra
репозиторий для управления mimetypes.
Пример для открытия всех .pdf
файлы в apvlv
:
/usr/bin/vendor_perl/mimeopen -d $file.pdf
и затем, при подсказке, вводят приложение: apvlv
.
На Debian Вы могли использовать команду как корень
update-mime-database /usr/share/mime
наличие shared-mime-info
пакет установлен.
Почему не использовать утилиты от самого 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 теперь.
defaults.list
таким образом, это может просто быть отредактировано вручную в случае необходимости.
– mVChr
25.05.2016, 00:08
xdg-mime
не изменил defaults.list
, но редактирование его вручную (благодаря подсказкам в этом ответе) добилось цели.
– Skippy le Grand Gourou
28.06.2016, 15:45
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
Это похоже на ответ @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
Добавляя к тому, что все говорили,Убедитесь, что у вас нет перекрывающихся приложений.
Например, предположим, что вы хотите изменить магнитную ссылку по умолчанию, чтобы использовать 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, будет применен.
Для тех, кто, как и я, не знает, как получить правильный 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
xdg-open
оставленный ненастроенный и использование приложенийxdg-open
не откроет право файлов. – kravemir 15.04.2012, 11:53-d
переключитесь устанавливает значение по умолчанию. Таким образом, если Вы используете его для открытияfileA.pdf
- необходимо затем смочь открытьсяfileB.pdf
с Вашим предпочтительным приложением. – jasonwryan 15.04.2012, 12:34mimeopen -d a.pdf
значение по умолчанию наборов для*.pdf
, но это устанавливает значение по умолчанию для себя -mimeopen b.pdf
работы. Ноxdg-open
конфигурация оставила без изменений, и она все еще открывает все сfirefox
:/ – kravemir 19.04.2012, 15:40mimeopen
,xdg-open
ведет себя как ожидалось - в случае.pdf
s, это открывает их сapvlv
. – jasonwryan 20.04.2012, 10:50sudo 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