Bagaimana mengkonfigurasi dengan benar dan mudah `xdg-open` tanpa lingkungan apa pun?

63

Saya menggunakan window manager OpenBox tanpa lingkungan desktop .

xdg-openberperilaku aneh. Ini membuka semuanya dengan firefox.

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

Saya mencari program sederhana; sesuatu seperti membaca setiap *.desktopfile di /usr/share/applications/folder dan secara otomatis mengatur pengaturan xdg.

kravemir
sumber
menggunakan xdg-mime(bagian dari xdg-utils) adalah jawaban terbaik untuk bekerja dengan (permintaan, konfigurasi) xdg-open. Lihat juga unix.stackexchange.com/questions/8793/…
michael

Jawaban:

24

Anda dapat menggunakan perl-file-mimeinfo di extrarepositori untuk mengelola mimetipe.

Contoh untuk membuka semua .pdffile di apvlv:

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

dan kemudian, pada prompt, masukkan aplikasi: apvlv.

jasonwryan
sumber
Berhasil. Tapi itu hanya membuka file. Jadi xdg-openkiriku yang belum dikonfigurasi dan penggunaan aplikasi xdg-opentidak akan membuka file dengan benar.
kravemir
Saya tidak cukup mengikuti komentar Anda. Apa yang tidak berfungsi? The -dberalih set default. Jadi, jika Anda menggunakannya untuk membuka fileA.pdf- Anda harus dapat membuka fileB.pdfdengan aplikasi pilihan Anda.
jasonwryan
1
Iya. mimeopen -d a.pdfset default untuk *.pdf, tetapi set default untuk dirinya sendiri - mimeopen b.pdfberfungsi. Tetapi xdg-openkonfigurasi dibiarkan tidak berubah dan masih membuka semuanya dengan firefox: /
kravemir
3
Setelah saya mengatur default dengan mimeopen, xdg-openberperilaku seperti yang diharapkan - dalam kasus .pdfs, itu akan membukanya apvlv.
jasonwryan
1
Ini tidak berfungsi untuk saya di Lubuntu 16.04. sudo xdg-mime default pluma.desktop text/plainmemberi 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.txtmemberi bash: /usr/bin/vendor_perl/mimeopen: No such file or directory.
Nickolai Leschov
62

Mengapa tidak menggunakan utilitas dari xdg sendiri?

Untuk menjadikan Thunar sebagai peramban file default, yaitu aplikasi default untuk membuka folder.

$ xdg-mime default Thunar.desktop inode/directory

untuk menggunakan xpdf sebagai penampil PDF default:

$ xdg-mime default xpdf.desktop application/pdf

Ini akan membuat entri di basis data MIME lokal Anda:

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

File PDF Anda harus dibuka dengan xpdf sekarang.

lzap
sumber
+1 dan lihat juga jawaban terkait saya untuk pertanyaan terkait, unix.stackexchange.com/questions/77136/…
michael
2
Jawaban yang paling berguna, terima kasih. Paling mudah untuk diketahui defaults.listsehingga hanya dapat diedit dengan tangan jika perlu.
mVChr
Untuk beberapa alasan xdg-mimetidak mengubah defaults.list, tetapi mengeditnya secara manual (terima kasih kepada petunjuk dalam jawaban ini) melakukan trik.
Skippy le Grand Gourou
FYI beberapa dependensi Perl diperlukan untuk ini, pastikan Anda menginstalnya. Distribusi RPM / DEB akan menginstal ini untuk Anda secara normal.
lzap
2
Tampaknya defaults.listsekarang disebut mimeapps.list. Lihat Wiki Lengkungan untuk daftar lokasi yang valid untuk mimeapps.list.
Mateen Ulhaq
7

Di Debian Anda bisa menggunakan perintah, sebagai root

update-mime-database /usr/share/mime

memiliki shared-mime-infopaket yang diinstal.

enzotib
sumber
2
Saya sudah mencobanya. Itu tidak bekerja. Saya menjalankan Arch.
kravemir
-1 Ini khusus untuk lingkungan desktop yang bergantung pada shared-mime-info, seperti GNOME
craymichael
7

Anda bisa menggunakan sesuatu seperti ini untuk menghasilkan xdg-mimeperintah yang sesuai untuk setiap .desktopfile Anda dan mimetipe yang dikandungnya, kemudian jalankan yang Anda suka. Catatan /usr/share/applicationsmungkin memiliki subdirektori.

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
sumber
3

Ini seperti jawaban @ aleb , tetapi berfungsi pada file desktop dengan spasi:

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
pengguna60561
sumber