在 Chrome 中注册自定义协议处理程序

在 Chrome 中注册自定义协议处理程序

发生错误时,我的 Web 应用程序会生成如下可点击的 URL:

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

当我单击它时,我收到以下提示:

单击“启动应用程序”没有任何反应。我希望它按预期打开 Sublime Text。我该如何配置?

答案1

在 Chrome 中注册自定义协议处理程序

1.创建桌面文件

创建文件/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

3. 创建处理程序文件

创建文件/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

4. 注册 mime-type 处理程序

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

5.利润

现在您可以通过自定义应用程序从 chrome 打开具有自定义协议的链接,例如:

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

6.修改

它可以移植到不同的 IDE 中使用,例如phpstorm

答案2

我几乎总结了这一点并使其更易于复制粘贴......

创建 Sublime URL 解析器文件'/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 ”以通过“subl-url-handler”使用新的 URL 解析器:

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

注意::这假设你sublime的 中有一个$PATH,而不仅仅是subl,就像我一样。如果没有,你可以像这样创建一个:

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

答案3

我在使用 Sublime Text 3 (又名 ST3) 时也遇到了同样的问题,Andrey 的上述回答对我有用。我为处理程序使用了不同的目录,将标签中的一些“2”替换为“3”,然后更改为,request="${request#*?url=}"request="${request#*?url=file://}"其他方面都一样。

相关内容