Dziś rano walczę o powiązanie aplikacji z niestandardowym protokołem, a mianowicie emacsclient i protokołem org .
Dzwonię do tego protokołu z bookmarkletu przeglądarki internetowej i otrzymuję następujące zachowanie:
W chromie
pojawia się okno dialogowe „Uruchom aplikację” i wywołuje xdg-open org-protocol: // ... co kończy się odpaleniem nowej ramki chromu.
W
Firefoksie próbowałem ustawić protokół network.protocol-handler.app.org na pusty ciąg lub ścieżkę emacsclient, w każdym razie pojawia się następujący komunikat o błędzie:
„Firefox nie wie, jak otworzyć ten adres, ponieważ protokół (org-protokół) nie jest powiązany z żadnym programem ”, nawet bez pokazywania okna dialogowego wyboru aplikacji zewnętrznej.
Nie używam żadnego środowiska graficznego, więc muszę sprawić, by działało to ściśle z xdg, jednak pomimo przeczytania specyfikacji wspólnych informacji o mime itp. Nadal nie mogę pojąć działającej konfiguracji.
źródło
Odpowiedzi:
Metoda XDG: Utwórz
emacsclient.desktop
plik, który obsługujex-scheme-handler/org-protocol
typ MIME:(Zwróć uwagę na
MimeType=
powyższą linię, która dotyczyorg-protocol:
URI).Umieść plik w
~/.local/share/applications
lub/usr/local/share/applications
.Być może będziesz musiał otworzyć plik
~/.local/share/applications/mimeapps.list
i dodać taki wiersz:Dodaj to w
[Default Applications]
sekcji.źródło
xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol
, co jest prawdopodobnie bardziej oficjalnym sposobem na zrobienie tego.%u
? Na przykład zmienna, która wyraża tylko domenę lub część ścieżki identyfikatora URI?@grawity jest prawie poprawny, ale przeoczył dwa szczegóły:
Po zainstalowaniu
.desktop
pliku może być konieczne ręczne uruchomieniesudo update-desktop-database
. (Można to zrobić, jeśli.desktop
plik został zainstalowany za pomocąxdg-desktop-menu install emacsclient.desktop
)To było wymagane, aby mój Firefox wyświetlał „Co powinien obsługiwać ten protokół?” dialog zamiast wyświetlać stronę błędu.
W chwili, gdy pytanie zostało zadane, wystąpił błąd,
xdg-open
który powodował, że ślepo przekazywał adresy URL na$BROWSER
pulpitach „ogólnych” (nie KDE, non-GNOME, nie Xfce itp.), Co powoduje dokładnie zachowanie @ Julien przeżywał.Powinien on być ustalony w nowoczesnych wersjach xdg otwarte, ale jeśli na pulpicie nie jest za pomocą nowoczesnej wersji z jakiegoś powodu, oto wersja xdg otwarte wpadnę w
/usr/local/bin
celu rozwiązania problemu.źródło
Przynajmniej w Fedorze 13 i różnych dystrybucjach opartych na Debianie xdg-open otwiera wszystkie adresy URL, które nie mają schematu file: // w przeglądarce, jeśli nie działa w obsługiwanym środowisku pulpitu. Sposób, w jaki próbuje wykryć używaną przeglądarkę, zależy od dystrybucji.
Ponieważ xdg-open jest tylko skryptem powłoki, możesz go łatwo dostosować do swoich potrzeb.
źródło