简介

最近我的debian从10更新到了11,对应的kde也进行了更新。但后来发生了应用内打开链接表现为kioexec下载该链接之后再浏览器打开本地页面,与之前直接调用浏览器打开链接不同。本文记录了这个情况解决的详情。

这个问题相关的提问在网上:kde open link kioexec copy

情况复现

本文使用firefox进行测试。由于firefox默认下载压缩包,而后直接运行目录下的firefox启动。

设置-应用程序-默认程序-网页浏览器中选择其他,选择上述文件,确定并应用。

然后在应用内打开,此处使用命令行。在命令行中输入echo 'https://baidu.com'回车后,将显示该网址。如果你使用的是Konsole时,你可以使用ctrl+左键打开此链接。

此时会弹出通知,显示kioexec正在拷贝此网页到~/.cache/kioexec/...中,当它拷贝完成后,将会调用firefox打开本文件。此时浏览器显示地址为file://开头的文件。

详细分析

找到设置默认程序的配置文件目录/home/qydysky/.local/share/applications,此处用户名为qydysky。找到对应的desltop文件。

[Desktop Entry]
Exec=/home/qydysky/程序/filefox/firefox/firefox
MimeType=x-scheme-handler/http;
Name=firefox
NoDisplay=true
Type=Application

问题解决

后来发现,当设置为chrome时,可以顺利的调用打开。于是,改变思路,在kde程序列表中添加firefox。

注意:如果如何怎么更改都无法起效,考虑重启kde,即重启电脑

在应用列表中空白处右键,编辑应用列表,这将打开kde菜单编辑器kmenuedit

查看网络中chrome中的配置,将看到命令项为/usr/bin/google-chrome-stable %U

在里面的网络中添加firefox。模仿chrome,将命令设置为/home/qydysky/程序/filefox/firefox/firefox %U,然后即可在上述选择默认程序时找到firefox。应用后发现有效,之后应用内打开链接将直接调用firefox。

差异分析

再次在/home/qydysky/.local/share/applications中查看配置文件。可以发现,新的配置文件如下:

[Desktop Entry]
Comment=访问互联网
Exec=/home/qydysky/程序/filefox/firefox/firefox %U
GenericName=网页浏览器
Icon=/home/qydysky/程序/filefox/firefox/browser/chrome/icons/default/default128.png
Name=Firfox
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=0
TerminalOptions=
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=

由此,即可得到结论,当命令后没有%U时,将调用kioexec。通过更改详细分析一节中的配置文件,并启用它后,发现结论得到验证。

更多文件关联

在设置默认程序时,可以看到x-scheme-handler/https的字样。这在文件关联中可以找到,如果找不到,则可以添加。添加组编辑为x-scheme-handler,类型名为https。然后即可找到程序优先顺序。