Chcę używać xdg-open
do otwierania irc://
łączy, jak mogę ustawić wymagany parametr?
Chcę używać xdg-open
do otwierania irc://
łączy, jak mogę ustawić wymagany parametr?
Odpowiedzi:
xdg-open w zasadzie sprawdza, jakie masz środowisko pulpitu, a następnie uruchamia gnome-open, gvfs-open, xfce-open itp. Poniżej znajdują się instrukcje specyficzne dla środowiska pulpitu ...
Gnome używa programu otwartego na gnome, który używa gconf do przechowywania wszystkiego. Na przykład na mojej maszynie z Ubuntu 10.10 z uruchomionym gnome-open irc: // blah otwiera xchat, ponieważ xchat zawiera łatkę ustawień gconf, aby dodać moduł obsługi irc: //.
To pokazuje, jak robi to gnome, z ustawieniami gconf w /desktop/gnome/url-handlers/
. Zobacz xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas
jako przykład.
W przypadku KDE powinieneś przejrzeć pliki .protocol w / usr / share / kde4 / services /, utworzyć nowy dla swojego nowego protokołu i umieścić go w ~ / .kde / share / kde4 / services /, jeśli jest to bardzo przydatne rozważ dodanie go do pakietu jako poprawki dla innych użytkowników.
KDE używa kde-open lub kfmclient w zależności od tego, co jest dostępne i jaką wersję KDE posiadasz.
XFCE używa programu o nazwie exo-open, ten program nie ma żadnego sposobu, aby go skonfigurować lub dodać programy obsługi URI. Przeglądając kod źródłowy pokazuje, że używa plików pulpitu, aby określić tylko trzy typy programów. TerminalEmulator, WebBrowser i EmailClient.
Za pomocą XFCE4 (i prawdopodobnie także innych) można skonfigurować xdg-open, aby zdefiniować niestandardową procedurę obsługi protokołu. W niektórych musisz utworzyć / edytować następujące pliki:
~ / .local / share / applications / protocolhandler.desktop ~ / .local / share / applications / mimeapps.list
Przykład dodania modułu obsługi protokołu ed2k znajduje się na stackexchange.com 2 .
Opiszę to magnet:
typem URI i transmisją (tj. Przypadkiem bittorenta), ale tę samą metodę można zastosować do dowolnego schematu lub typu pliku.
Sprawdziłem to również w Debian Jessie i tak naprawdę nie mam maszyny Ubuntu, ale uważam, że powinna działać tak samo (przynajmniej w przypadku xdg-open , zauważ, że menedżerowie plików mogą wybrać inną logikę).
Znajdź ciąg typu MIME. W przypadku typów plików MIME możesz to sprawdzić za pomocą polecenia file :
$ file -i Broken_Blossoms.webm Broken_Blossoms.webm: video/webm; charset=binary $
Dla powyższego pliku typ MIME to video/webm
.
W przypadku programów obsługi URI typ to x-scheme-handler/<scheme>
, gdzie
<scheme>
jest część URI przed dwukropkiem, np. „Http”, „mailto” „irc” lub „magnes”. Oto przykłady prawidłowych typów MIME:
x-scheme-handler/http
x-scheme-handler/irc
x-scheme-handler/magnet
x-scheme-handler/mailto
Znajdź nazwę pliku .desktop aplikacji.
Często nie jest to ta sama nazwa, co „oficjalna” nazwa, ale jej mała wersja lub zupełnie inna nazwa. Zainstalowane pliki .desktop są dostępne w katalogu / usr / share / applications. Ponieważ są to zwykłe pliki tekstowe i zawierają „oficjalną” nazwę, pomocne może być następujące polecenie:
$ grep "Transmission" -l -r /usr/share/applications /usr/share/applications/transmission-gtk.desktop $
Polecenie to oznacza „listę plików w tym katalogu, które zawierają słowo„ Transmisja ””. Niektóre aplikacje mogą być instalowane tylko dla użytkownika, w takim przypadku będzie to ścieżka
~/.local/share/applications
.
Jeśli masz „dziwną” aplikację, która może w ogóle nie mieć pliku, zawsze możesz go utworzyć (i być może wysłać go twórcom aplikacji). Prostym sposobem byłoby skopiowanie istniejącego, przepisanie pól, które rozumiesz, i usunięcie tych, których nie znasz. Szczegółowe informacje można znaleźć w specyfikacji .
Wykonaj przypisanie za pomocą polecenia xdg-mime :
$ xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet $
Pamiętaj, że bez względu na to, gdzie faktycznie znajduje się plik (/ usr / share / applications, ~ / .local / share / applications ...), zawsze używasz tylko nazwy , a nie pełnej ścieżki.
Zwykle polecenie nic nie wyświetli - to jest OK. Jeśli chcesz sprawdzić, co właśnie zrobiłeś, lub zobaczyć, co jest aktualnie przypisane do dowolnego typu MIME bez otwierania:
$ xdg-mime query default x-scheme-handler/magnet transmission-gtk.desktop $
Uwaga 1: Jeśli chcesz sprawdzić inne typy MIME, możesz spojrzeć na /etc/mime.types. Nie zawiera wszystkich typów na świecie; na przykład programy obsługi identyfikatorów URI, ale można go użyć do „agresywnej” formy obsługi powiązań. Na przykład:
grep ^video/ | cut -d\t -f1 | xargs xdg-mime default vlc.desktop
powiąże wszystkie znane formaty wideo z VLC.
Uwaga 2: Pliki .desktop często zawierają listę typów MIME, które według nich są w stanie obsłużyć za pomocą MimeType
pola. Strona podręcznika xdg-mime
mówi, że plik .desktop musi zawierać typ MIME, zanim powyższe polecenie będzie działać, ale dla mnie wydaje się, że działa, nawet jeśli brakuje pola. (Mam na myśli, że skojarzenie zostanie zastosowane, a aplikacja uruchomi się - jeśli naprawdę może obsłużyć ten typ, to inne pytanie). Nie jestem pewien, co jest wadą (być może w przyszłości xdg-mime będzie bardziej restrykcyjny).
xdg-mime query filetype FILE
jest sposobem XDG znajdowania typów MIME. 2) Możesz również samodzielnie edytować ustawienia domyślne, aby lepiej zorganizować swoje rzeczy i utworzyć ich kopię zapasową później: .config/mimeapps.list
to plik.
xdg-mime query filetype xyz.wbem
OTOH daje mniej informacji i jest o wiele więcej do pisania.
Chciałem powiązać postman
linki z ręcznie zainstalowaną aplikacją Postman (nie z rozszerzeniem chrome), aby móc otwierać dokumenty listonosza w przeglądarce w następujący sposób:
Link, który chciałbym powiązać, wygląda następująco:
postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...
Aby wykonać skojarzenie, wykonałem następujące kroki:
/home/andrzej.rehmann/software/postman/
/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
postman
odnośnik xdg z aplikacją za pomocą polecenia:xdg-mime default Postman.desktop x-scheme-handler/postman
Odpowiedziałem na tę konfigurację, jeśli ktoś jest zainteresowany: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml