Özel bir protokolü xdg ile nasıl kaydedebilirim?


22

Bu sabah, bir uygulamayı özel bir protokolle (yani açık ve org-protokolü) ilişkilendirmek için uğraşıyorum .

Bu protokolü bir web tarayıcısı bookmarklet'inden arıyorum ve aşağıdaki davranışları alıyorum:

Chromium'da
"Uygulamayı Başlat" iletişim kutusu açılır ve yeni bir krom çerçeve oluşturmakla sonuçlanan xdg-open org-protokol: // ... adını verir.

Firefox'ta
network.protocol-handler.app.org-protokolünü boş bir dizeye veya emacsclient yoluma ayarlamayı denedim, her nasılsa şu hata mesajını alıyorum:
"Firefox bu adresi nasıl açacağını bilmiyor, çünkü protokolü (org-protokolü) herhangi bir programla ilişkili değildir "bile herhangi bir harici uygulama seçim diyalogu göstermeden.

Herhangi bir masaüstü ortamı kullanmıyorum, bu nedenle kesinlikle xdg ile çalışmam gerekiyor, ancak paylaşılan mime bilgisi özelliklerini okuduğum halde, yine de çalışan bir yapılandırmayı öğrenemiyorum.


Yanıtlar:


18

XDG yöntemi: MIME türünü emacsclient.desktopişleyen bir dosya oluşturun x-scheme-handler/org-protocol:

[Desktop Entry]
Name=Emacs Client
Exec=emacsclient %u
Icon=emacs-icon
Type=Application
Terminal=false
MimeType=x-scheme-handler/org-protocol;

( URI'ler MimeType=için yukarıdaki satırı not edin org-protocol:.)

Dosyayı ~/.local/share/applicationsveya içine yerleştirin /usr/local/share/applications.

Dosyayı açmanız ~/.local/share/applications/mimeapps.listve şöyle bir satır eklemeniz gerekebilir :

x-scheme-handler/org-protocol=emacsclient.desktop

Bunu [Default Applications]bölümün altına ekle .


hala benim için bir krom penceresi açıyor; başka herhangi bir şey? (Ben masaüstü yazarım benzer masaüstü w / out fluxbox kullanıyor olurum)
assem

8
Ayrıca xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol, muhtemelen bunu yapmanın en resmi yolu olan son adımı da başarabilirsiniz .
Adam Spiers

Yanında başka yararlı değişkenler var %umı? Örneğin, URI'nin yalnızca etki alanını veya yol bölümünü ifade eden bir değişken mi?
Jonathan Neufeld

11

@grawity neredeyse doğru, ancak iki ayrıntıyı gözden kaçırdı:

  1. Dosyayı yükledikten sonra .desktop, manuel olarak çalıştırmanız gerekebilir sudo update-desktop-database. ( .desktopDosyayı kullanarak yüklediyseniz, bu sizin için yapılabilir xdg-desktop-menu install emacsclient.desktop)

    Firefox'umu "Bu protokol neyle başa çıkmalı?" Bir hata sayfasını görüntülemek yerine sadece iletişim kutusunu aç.

  2. Bu soru sorulmuştur zamanda, bir hata içinde olduğunu xdg-openhangi körlemesine üzerinde el URL'ler neden $BROWSER"genel" (KDE-dışı olmayan GNOME olmayan Xfce, vb) üzerinde masaüstü ve bu tam olarak davranış üretir @ julien yaşıyordu .

    Xdg-open'in modern sürümlerinde düzeltilmelidir, ancak eğer masaüstünüz herhangi bir sebepten dolayı modern bir sürüm kullanmıyorsa , sorunu çözmek için içine sürdüğüm xdg-open sürümü/usr/local/bin .


1
xdg-open güncellemesi benim için çalıştı, teşekkürler!
George Marques

0

En azından Fedora 13 ve çeşitli Debian tabanlı dağıtımlar xdg-open , desteklenen bir masaüstü ortamında çalışmazsa, bir tarayıcıda : // şemasını içermeyen tüm URL'leri açar . Hangi tarayıcının kullanılacağını belirlemeye çalışma şekli dağılıma bağlıdır.

As xdg açık sadece bir kabuk kolayca ihtiyaçlarınıza adapte edebilir.


Gerçekten de, xdg-open ve xdg-mime arasında, dokümanlar okuduğum halde bana çok opak olan gerekli yapılandırma ...
julien

Bir dosyayı açıyorsanız: // URI Ubuntu, xdg-mime öğesini hiç çağırmaz, ancak desteklenen bir DE altında çalışmazsa run-mailcap kullanır, Fedora 13 ilk önce xdg-mime kullanarak varsayılan uygulamayı bulmaya çalışır; iş mimeopen'e geri döndü. xdg-mime, Paylaşılan MIME Bilgi veritabanını kullanır freedesktop.org/wiki/Software/shared-mime-info
Florian Diesch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.