Jak ustawić nowe ustawienie xdg-open?

Odpowiedzi:

17

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 ...

Gnom

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: //.

gconf-editor pokazujący irc z konfiguracją xchat

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.schemasjako przykład.

KDE

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

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 .

Martin Owens -doctormo-
źródło
Czy możesz wspomnieć, jak to zrobić dla wszystkich oficjalnych DE?
Oxwivi
Nie do końca związane z pytaniem, ale czy możesz podać pełny katalog na dole zrzutu ekranu? Dziękuję Ci.
Oxwivi,
4
xdg-open w zasadzie sprawdza, jakie masz środowisko pulpitu, a następnie uruchamia gnome-open, gvfs-open, xfce-open itp. --- Nie sądzę. Po pierwsze, strona podręcznika tego nie mówi, a po drugie, xdg-open działa idealnie bez środowiska graficznego. Na przykład używam go z menedżerem okien i3.
Alois Mahdal
Czy istnieje ogólny sposób utworzenia nowego powiązania adresu URL / aplikacji podczas instalacji aplikacji?
jayarjo
14

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ę).

  1. 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
    
  2. 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 .

  3. 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ą MimeTypepola. 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).

Alois Mahdal
źródło
wiki.archlinux.org/index.php/xdg-open daje mniej więcej tyle samo. nadal jest dobry.
shirish,
Ta odpowiedź jest najlepszym sposobem. Wskazówka: 1) xdg-mime query filetype FILEjest 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.listto plik.
Ciro Santilli 事件 改造 中心 法轮功 六四 事件
wycofałem 2 zmiany: @frank, czy chcesz wyjaśnić, jak xdg-mime „działa lepiej”? Plik IMO jest autorytatywnym narzędziem dla typów MIME, xdg-mime query filetype xyz.wbemOTOH daje mniej informacji i jest o wiele więcej do pisania.
Alois Mahdal
1
Świetne wyjaśnienie i wskazówka dotycząca używania jedynej nazwy pliku na pulpicie było rozwiązaniem, którego szukałem dzięki!
Andrea Richiardi,
1
ta rada w końcu pomogła mi rozwiązać problem braku możliwości zalogowania się przy użyciu luźnej aplikacji na Linuksa. slack przekierowuje do przeglądarki, ale następnie przeglądarka używa schematu URI do przekierowania z powrotem do luzu. twoje wskazówki pomogły mi zobaczyć, że luźne mapowanie xdg-mime URI zniknęło. tak się cieszę, że znalazłem to po godzinie poszukiwań! Dziękuję Ci!
pestofagiczny
2

Chciałem powiązać postmanlinki 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:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

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:

  1. Zainstaluj aplikację ręcznie (pobierz i rozpakuj plik tar.gz) w /home/andrzej.rehmann/software/postman/
  2. Utwórz plik na pulpicie w /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. Skojarzyć postmanodnoś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

Andrzej Rehmann
źródło