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.


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.


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.


+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.


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.