Bagaimana cara menetapkan pengaturan xdg-open baru?

Jawaban:

17

xdg-open pada dasarnya hanya melihat untuk melihat lingkungan desktop mana yang Anda miliki dan kemudian menjalankan gnome-open, gvfs-open, xfce-open, dll. Lihat di bawah untuk petunjuk spesifik lingkungan desktop ...

Gnome

Gnome menggunakan program gnome-open yang menggunakan gconf untuk menyimpan semuanya. Sebagai contoh pada mesin saya dengan Ubuntu 10.10 menjalankan gnome-open irc: // bla membuka xchat karena xchat menyertakan tambalan gconf untuk menambahkan irc: // handler.

gconf-editor menampilkan irc dengan konfigurasi xchat

Ini menunjukkan bagaimana gnome melakukan ini, dengan pengaturan gconf di /desktop/gnome/url-handlers/. Lihat xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemassebagai contoh.

KDE

Untuk KDE Anda harus melihat file .protocol di / usr / share / kde4 / services /, buat yang baru untuk protokol baru Anda dan masukkan ke ~ / .kde / share / kde4 / services /, jika itu super berguna maka pertimbangkan untuk menambahkannya ke paket sebagai perbaikan untuk pengguna lain.

KDE menggunakan kde-open atau kfmclient tergantung pada apa yang tersedia dan versi KDE yang Anda miliki.

XFCE

XFCE menggunakan program yang disebut exo-open, program ini tidak memiliki cara untuk mengkonfigurasinya atau menambah uri handler. Melihat melalui kode sumber menunjukkan bahwa menggunakan file desktop untuk menentukan hanya tiga jenis program. TerminalEmulator, WebBrowser dan EmailClient.

Dengan XFCE4 (dan mungkin juga yang lain) dimungkinkan untuk mengkonfigurasi xdg-open untuk mendefinisikan handler protokol kustom. Dalam beberapa Anda harus membuat / mengedit file-file berikut:

~ / .local / share / application / protocolhandler.desktop ~ / .local / share / Applications / mimeapps.list

Contoh menambahkan handler untuk protokol ed2k disediakan di stackexchange.com 2 .

Martin Owens -doctormo-
sumber
Bisakah Anda menyebutkan cara melakukan itu untuk semua DE resmi?
Oxwivi
Tidak persis terkait dengan pertanyaan, tetapi dapatkah Anda mengutip direktori lengkap di bagian bawah tangkapan layar? Terima kasih.
Oxwivi
4
xdg-open pada dasarnya hanya melihat untuk melihat lingkungan desktop mana yang Anda miliki dan kemudian menjalankan gnome-open, gvfs-open, xfce-open, dll --- Saya rasa tidak. Pertama, halaman manual tidak mengatakan itu, dan kedua, xdg-open berfungsi dengan sempurna tanpa lingkungan desktop. Misalnya saya menggunakannya dengan window manager i3.
Alois Mahdal
Apakah ada cara umum untuk membuat asosiasi URL / aplikasi baru saat pemasangan aplikasi?
jayarjo
14

Saya akan menjelaskan ini dengan magnet:tipe URI dan Transmisi (yaitu kasus bittorent), tetapi metode yang sama dapat diterapkan pada skema atau tipe file apa pun.

Saya juga memeriksa ini dengan Debian Jessie, dan saya tidak benar-benar memiliki mesin Ubuntu, tetapi saya percaya itu harus bekerja sama (setidaknya untuk xdg-open , perhatikan bahwa manajer file dapat memilih untuk menggunakan logika yang berbeda).

  1. Cari tahu tipe string MIME. Untuk jenis file MIME, Anda dapat menemukannya dengan perintah file :

    $ file -i Broken_Blossoms.webm 
    Broken_Blossoms.webm: video/webm; charset=binary
    $
    

    Untuk file di atas, tipe MIME adalah video/webm.

    Untuk penangan URI, tipenya adalah x-scheme-handler/<scheme>, di mana <scheme>bagian URI sebelum titik dua, misalnya "http", "mailto" "irc" atau "magnet". Berikut ini adalah contoh jenis MIME yang valid:

    x-scheme-handler/http
    x-scheme-handler/irc
    x-scheme-handler/magnet
    x-scheme-handler/mailto
    
  2. Cari tahu nama file aplikasi .desktop.

    Seringkali itu tidak sama dengan nama "resmi" tetapi versi lebih kecil dari itu, atau nama yang sama sekali berbeda. File .desktop yang terinstal langsung di / usr / share / aplikasi. Karena mereka adalah file teks normal dan berisi nama "resmi", perintah berikut dapat membantu Anda:

    $ grep "Transmission" -l -r /usr/share/applications
    /usr/share/applications/transmission-gtk.desktop
    $
    

    Perintah ini secara efektif berarti "daftar file di bawah direktori ini yang berisi kata 'Transmisi'". Beberapa aplikasi mungkin diinstal hanya untuk pengguna, dalam hal ini jalurnya ~/.local/share/applications.

    Jika Anda memiliki aplikasi "aneh" yang mungkin tidak memiliki file sama sekali, Anda selalu dapat membuatnya (dan mungkin mengirimkannya ke pengembang aplikasi). Cara mudah adalah menyalin yang sudah ada, menulis ulang bidang yang Anda pahami, dan menghapus bidang yang tidak Anda miliki. Lihat spesifikasi untuk detailnya.

  3. Buat tugas menggunakan perintah xdg-mime :

    $ xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet
    $
    

    Perhatikan bahwa di mana pun file itu berada (/ usr / share / aplikasi, ~ / .local / share / aplikasi ...), Anda selalu menggunakan hanya nama , bukan path lengkap.

    Biasanya perintah tidak akan menghasilkan apa pun - tidak apa-apa. Jika Anda ingin memverifikasi apa yang baru saja Anda lakukan atau melihat apa yang saat ini ditetapkan untuk jenis MIME apa pun tanpa membukanya:

    $ xdg-mime query default x-scheme-handler/magnet
    transmission-gtk.desktop
    $
    

Catatan 1: Jika Anda ingin memeriksa tipe MIME lainnya, Anda dapat melihat /etc/mime.types. Itu tidak mengandung semua tipe di dunia; misalnya penangan URI, tetapi dapat digunakan untuk bentuk "agresif" penanganan asosiasi. Sebagai contoh:

grep ^video/ | cut -d\t -f1 | xargs xdg-mime default vlc.desktop

akan mengaitkan semua format video yang dikenal ke VLC.

Catatan 2: File .desktop sering berisi daftar tipe MIME yang mereka klaim dapat tangani menggunakan MimeTypebidang. Halaman manual xdg-mime mengatakan bahwa file .desktop harus mengklaim tipe MIME sebelum perintah yang disebutkan di atas akan berfungsi, tetapi bagi saya sepertinya berfungsi bahkan jika bidangnya tidak ada. (Maksud saya, asosiasi akan diterapkan dan aplikasi akan diluncurkan - jika benar-benar dapat menangani jenisnya adalah pertanyaan yang berbeda). Saya tidak yakin apa kekurangannya (mungkin di masa depan xdg-mime akan lebih ketat).

Alois Mahdal
sumber
wiki.archlinux.org/index.php/xdg-open memberi kurang lebih sama. masih bagus di sana.
shirish
Jawaban ini adalah cara terbaik. Kiat: 1) xdg-mime query filetype FILEadalah cara XDG untuk menemukan tipe mime. 2) Anda juga dapat mengedit sendiri default untuk menjaga hal-hal lebih teratur dan mendukungnya nanti: .config/mimeapps.listadalah file.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
memutar kembali 2 suntingan: @ jujur, ingin menjelaskan bagaimana xdg-mime "bekerja lebih baik"? File IMO adalah alat autoritatif untuk tipe MIME, xdg-mime query filetype xyz.wbemOTOH memberikan lebih sedikit info dan jauh lebih banyak mengetik.
Alois Mahdal
1
Penjelasan hebat dan tip untuk menggunakan satu-satunya nama file desktop adalah solusi yang saya cari terima kasih!
Andrea Richiardi
1
saran ini akhirnya membantu saya menyelesaikan masalah karena tidak bisa masuk menggunakan aplikasi desktop slack di linux. slack redirect ke browser, tetapi kemudian browser menggunakan skema URI untuk mengarahkan kembali ke slack. tips Anda membantu saya melihat bahwa pemetaan xri-mime URI kendur telah hilang. sangat senang saya menemukan ini setelah satu jam mencari! Terima kasih!
pestophagous
2

Saya ingin mengaitkan postmantautan dengan aplikasi tukang pos yang saya instal secara manual (bukan ekstensi chrome) sehingga saya dapat membuka dokumen tukang pos dari browser seperti ini:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Tautan yang ingin saya kaitkan terlihat seperti ini:

postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...

Untuk melakukan asosiasi saya melakukan langkah-langkah berikut:

  1. Instal aplikasi secara manual (unduh dan buka paket tar.gz) di /home/andrzej.rehmann/software/postman/
  2. Buat file desktop di /usr/share/applications/Postman.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Postman
Icon=/home/andrzej.rehmann/software/postman/app/resources/app/assets/icon.png
Exec="/home/andrzej.rehmann/software/postman/Postman" %u
Comment=Develop with pleasure!
Categories=Development;
Terminal=false
StartupWMClass=Postman
  1. Kaitkan postmantautan xdg dengan aplikasi dengan menjalankan:

xdg-mime default Postman.desktop x-scheme-handler/postman


Saya telah melakukan kesalahan konfigurasi ini jika ada yang tertarik: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml

Andrzej Rehmann
sumber