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:
- Utworzenie wpisu w menu wywołującego skrypt parsujący
- Utworzenie skryptu parsującego dany adres URL na polecenie sh
- Powiązanie wpisu w menu z protokołem subl://
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