Saya telah berjuang keras pagi ini untuk mengaitkan aplikasi dengan protokol khusus, yaitu emacsclient dan org-protokol .
Saya memanggil protokol ini dari bookmarklet webbrowser, dan saya mendapatkan perilaku berikut:
Dalam chromium,
dialog "Launch Application" muncul, dan memanggil xdg-open org-protocol: // ... yang berakhir dengan menembakkan frame chromium baru.
Di firefox,
saya telah mencoba mengatur protokol network.protocol-handler.app.org ke string kosong atau jalur emacsclient saya, bagaimanapun saya mendapatkan pesan kesalahan berikut:
"Firefox tidak tahu cara membuka alamat ini, karena protokol (org-protokol) tidak terkait dengan program apa pun "tanpa menunjukkan dialog pemilihan aplikasi eksternal.
Saya tidak menggunakan lingkungan desktop apa pun, jadi saya harus membuat pekerjaan ini ketat dengan xdg, namun, meskipun membaca spec info mime bersama dll, saya masih tidak dapat memahami konfigurasi yang berfungsi.
sumber
Jawaban:
Metode XDG: Buat
emacsclient.desktop
file yang menanganix-scheme-handler/org-protocol
tipe MIME:(Perhatikan
MimeType=
baris di atas, yang untukorg-protocol:
URI.)Masukkan file ke dalam
~/.local/share/applications
atau/usr/local/share/applications
.Anda mungkin harus membuka file
~/.local/share/applications/mimeapps.list
dan menambahkan baris seperti ini:Tambahkan itu di bawah
[Default Applications]
bagian.sumber
xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol
, yang mungkin merupakan cara yang lebih resmi untuk melakukannya.%u
? Misalnya variabel yang hanya mengekspresikan domain atau jalur bagian dari URI?@grawity hampir benar, tetapi ia mengabaikan dua detail:
Setelah menginstal
.desktop
file, Anda mungkin perlu menjalankannya secara manualsudo update-desktop-database
. (Ini dapat dilakukan untuk Anda jika Anda menginstal.desktop
file menggunakanxdg-desktop-menu install emacsclient.desktop
)Itulah yang diperlukan agar Firefox saya menampilkan "Apa yang harus menangani protokol ini?" dialog daripada hanya menampilkan halaman kesalahan.
Pada saat pertanyaan ini ditanyakan, ada bug
xdg-open
yang menyebabkannya menyerahkan secara membuta URL ke$BROWSER
desktop "generik" (non-KDE, non-GNOME, non-Xfce, dll.) Dan yang menghasilkan perilaku persis @ julien mengalami.Itu harus diperbaiki dalam versi modern dari xdg-open tetapi, jika desktop Anda tidak menggunakan versi modern untuk beberapa alasan, inilah versi xdg-open yang saya masukkan
/usr/local/bin
untuk menyelesaikan masalah.sumber
Paling tidak di Fedora 13 dan berbagai distro berbasis Debian xdg-open membuka semua URL yang tidak memiliki file: // skema di browser jika tidak berjalan di lingkungan desktop yang didukung. Cara mencoba mendeteksi browser mana yang akan digunakan tergantung pada distribusinya.
Karena xdg-open hanyalah skrip shell, Anda dapat dengan mudah menyesuaikannya dengan kebutuhan Anda.
sumber