Как установить обработчик протокола subl:// с помощью Unity?

Мое веб-приложение генерирует кликабельные URL-адреса, как показано ниже, в случае ошибки:

subl://open?url=file://%2Fusr%2Flocal%2Fwebenginex%2Fclass%2Fmodels%2Fwxclient.php&line=123

Когда я нажимаю на нее, я получаю эту подсказку:

Нажатие "Запустить приложение" ничего не делает. Я хочу, чтобы он открыл Sublime Text, как задумано. Как я могу настроить это?

3 ответа

Решение

Step 1: Create the desktop file

Создать файл /usr/share/applications/sublime-handler.desktop

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

Шаг 2: Обновите базу данных MIME-типов

$ sudo update-desktop-database

Step 3: Create the handler file

Создать файл /usr/share/handlers/sublime-handler

#!/usr/bin/env bash

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

subl "$request"                 # Launch sublime

Сделайте его исполняемым:

$sudo chmod +x /usr/share/handlers/sublime-handler

Step 4: Register mime-type handler

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

Step 5: Profit

Now you can use the links like:

subl:///home/path/to/file.php:123
subl://open?url=/home/path/to/file.php:123
subl://open?url=/home/path/to/file.php&line=123
subl://open?url=/home/path/to/file.php&column=123
subl://open?url=%2Fhome%2Fpath%2Fto%2Ffile.php&line=123
subl://open?url=%2Fhome%2Fpath%2Fto%2Ffile.php&column=123

Step 6: Modify

It can be ported for using with the different IDE, for example phpstorm

Я в значительной степени суммирую это и делаю его более копируемым...

Создайте файл Sublime URL Parser '/ usr / local / bin / subl-url-parser':

sudo tee /usr/local/bin/subl-url-parser > /dev/null <<"EOF"
#!/usr/bin/env bash

request=${1:23}               # Delete the first 23 characters "subl://open?url=file://"
request=${request//%2F//}     # Replace %2F with /
request=${request/&line=/:}   # Replace &line= with :
request=${request/&column=/:} # Replace &column= with :
sublime $request              # Launch Sublime
EOF

Сделайте его исполняемым и вставьте ссылку на "subl-url-handler":

sudo chmod +x /usr/local/bin/subl-url-parser
sudo ln -s subl-url-parser /usr/local/bin/subl-url-handler

Создайте (или обновите) файл рабочего стола '/usr/share/applications/sublime-handler.desktop', чтобы использовать новый анализатор URL через 'subl-url-handler':

sudo tee /usr/share/applications/sublime-handler.desktop > /dev/null <<EOF
[Desktop Entry]
Name=Sublime Text URL Handler
GenericName=Text Editor
Comment=Handle URL Scheme subl://
Exec=subl-url-handler %u
Terminal=false
Type=Application
MimeType=x-scheme-handler/subl;
Icon=sublime-text
Categories=TextEditor;Development;Utility;
Name[en_US]=Sublime Text URL Handler
EOF

Обновите базу данных:

sudo update-desktop-database

NB: Это предполагает, что у вас есть sublime в вашем $PATH и не только subl, как я. Если нет, вы можете сделать так:

sudo ln -s `which subl` $(dirname `which subl`)/sublime

У меня была такая же проблема с Sublime Text 3 (AKA ST3), и ответ Андрея выше сработал для меня. Я использовал другой каталог для обработчика, поменял некоторые «2» на «3» в метках, и я изменилrequest="${request#*?url=}"кrequest="${request#*?url=file://}"а в остальном все равно.

Другие вопросы по тегам