Як правильно і просто налаштувати `xdg-open` без будь-якого середовища?


63

Я використовую менеджер вікон OpenBox без будь-якого середовища робочого столу .

xdg-openповодиться дивно. Це відкриває все з firefox.

$ xdg-settings --list
Known properties:
  default-web-browser           Default web browser

Я шукаю просту програму; щось на кшталт читання кожного *.desktopфайлу в /usr/share/applications/папці та автоматичного встановлення параметрів xdg.


використання xdg-mime(частина xdg-utils) - найкраща відповідь для роботи з (запит, налаштування) xdg-open. Дивіться також unix.stackexchange.com/questions/8793/…
michael

Відповіді:


24

Ви можете використовувати perl-file-mimeinfo у extraсховищі для управління міметиками.

Приклад для відкриття всіх .pdfфайлів у apvlv:

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

а потім, в командному рядку введіть додаток: apvlv.


Це працює. Але це лише відкриває файл. Тож мій xdg-openлівий неконфігурований і програми, що використовують xdg-open, не відкриють файли праворуч.
kravemir

Я не дуже стежу за вашим коментарем. Що не працює? -dПеремикач встановлює значення за замовчуванням. Тож якщо ви використовуєте його для відкриття fileA.pdf- тоді ви маєте змогу відкриватись fileB.pdfіз бажаним додатком.
Jasonwryan

1
Так. mimeopen -d a.pdfвстановлює за замовчуванням *.pdf, але він встановлює за замовчуванням для себе - mimeopen b.pdfпрацює. Але xdg-openконфігурація залишилася незмінною, і вона все ще відкриває все firefox: /
kravemir

3
Після того, як я встановив за замовчуванням mimeopen, xdg-openповодиться так, як очікувалося - у випадку .pdfs, він відкриває їх apvlv.
Jasonwryan

1
Це не працює для мене в 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.
Микола Лещів

62

Чому б не використовувати утиліти від самого 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.


+1 і подивіться також мою відповідь на відповідне запитання, unix.stackexchange.com/questions/77136/…
michael

2
Найкорисніша відповідь, дякую. Найпростіше знати про defaults.listце, тому його можна буде просто відредагувати вручну за потреби.
mVChr

Чомусь xdg-mimeне змінювали defaults.list, але редагуючи його вручну (завдяки підказкам у цій відповіді) зробили трюк.
Skippy le Grand Gourou

Для цього потрібно декілька залежностей Perl, переконайтеся, що вони встановлені. RPM / DEB дистрибутиви встановлять їх для вас нормально.
lzap

2
Здається defaults.list, зараз називається mimeapps.list. Перегляньте архів Wiki для переліку дійсних місць для mimeapps.list.
Mateen Ulhaq

7

На Debian ви могли використовувати команду як root

update-mime-database /usr/share/mime

має shared-mime-infoвстановлений пакет.


2
Я спробував це. Це не працює. Я керую аркою.
kravemir

-1 Це характерно для середовищ робочого столу, які залежать від загальної інформації про mime, наприклад, GNOME
craymichael

7

Ви можете використовувати щось подібне для створення відповідних xdg-mimeкоманд для кожного з ваших .desktopфайлів та міметипів, які вони містять, а потім виконувати ті, які вам подобаються. Примітка /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

3

Це як відповідь @ 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.