Protokół subl:// - obsługa przekierowania z przeglądarki do edytora Sublime Text 3 1

Protokół subl:// – obsługa przekierowania z przeglądarki do edytora Sublime Text 3

W erze coraz to większej popularności przeglądarek spora część aplikacji jest tworzona w technologiach webowych. Jedną z gałęzi takich rozwiązań są programy do zarządzania projektami (np. Phabricator) lub kontrolą wersji (Github czy Gitlab). Pozwalają one w zgrabny i prosty sposób zarządzać oraz pracować z tworzonym kodem oprogramowania.

Zauważyłem, że coraz to większa część tego typu aplikacji pozwala na bezpośrednie przejście do fragmentów kodu (do którego ktoś na przykład zgłosił dyskusję) na lokalnym urządzeniu. Rozwiązania te zakładają, że urządzenie potrafi rozpoznać wywoływane adresy zawierające specyficzne protokoły. Niestety Sublime Text 3 domyślnie nie instaluje obsługi swojego protokołu.

Instalacja obsługi protokołu subl:// na Ubuntu

Proces instalacji podzielony jest na 3 etapy:

Wykonanie tych kroków jest niezbędne aby móc cieszyć się szybkimi odnośnikami do konkretnych fragmentu kodu.

Utworzenie wpisu w menu wywołującego skrypt parsujący

Na początek należy utworzyć wpis menu zgodny ze specyfikacją Desktop Entry Specification. Będzie on obsługiwać protokół subl:// i przekierowywał wywoływany adres do skryptu parsującego. Dodatkowo należy odświeżyć bazę typów MIME, aby system wiedział, że nowy wpis będzie obsługiwać dodawany protokół.

Krok 1. Utwórz plik /usr/share/applications/subl-protocol-handler.desktop z następującą zawartością:

[Desktop Entry]
Name=Sublime Text 3 URL Handler
GenericName=Text Editor
Comment=Handle URL Scheme subl://
Exec=/usr/share/handlers/subl-protocol-handler %u
Terminal=false
Type=Application
MimeType=x-scheme-handler/subl;
Icon=sublime-text-3
Categories=TextEditor;Development;Utility;
Name[en_US]=Sublime Text 3 URL Handler

Krok 2. Zaktualizuj bazę typów MIME

sudo update-desktop-database

Utworzenie skryptu parsującego dany adres URL na polecenie sh

Adres zawierający ścieżkę do pliku należy odpowiednio przetworzyć. W tym celu należy utworzyć skrypt, który będzie wywoływany przez nowo utworzony wpis w menu. Będzie do niego przekazywany wyłącznie jeden argument i będzie nim kliknięty adres.

Krok 1. Utwórz plik /usr/share/handlers/subl-protocol-handler z następującą zawartością:

#!/usr/bin/env bash

request="${1#*://}"             # Remove schema from url (subl://)
request="${request#*?url=}"     # Remove open?url=
request="${request#file://}"    # Remove file://
request="${request//%2F//}"     # Replace %2F with /
request="${request/&line=/:}"   # Replace &line= with :
request="${request/&column=/:}" # Replace &column= with :

subl "$request"                 # Launch sublime

Krok 2. Nadaj odpowiednie uprawnienia

sudo chmod +x /usr/share/handlers/subl-protocol-handler

Powiązanie protokołu subl:// z wpisem w menu

Ostatnim krokiem jest powiązanie protokołu subl:// z dodanym wpisem w menu oraz typem MIME.

xdg-mime default /usr/share/applications/subl-protocol-handler.desktop x-scheme-handler/subl

Test działania

Skorzystaj z poniższego formularza aby przetestować działanie handlera.


Wpis utworzony na podstawie odpowiedzi z AskUbuntu: https://askubuntu.com/a/919825

Autor

Krzysztof Grabania

Programista z zawodu oraz z zamiłowania. Na co dzień pracuje z Laravelem, WordPressem i Vue.js. Nie boi się poznawać nowych technologii i narzędzi. W wolnych chwilach tłumaczy WordPressa i jego wtyczki na język polski. Amator elektroniki oraz Raspberry Pi.