KDE 下调用 xdg-open 打开文件会先打开 dolphin

rt,这个问题困扰了很久。在调用 xdg-open 去打开文件的地方,比如 qq 或者 chrome,会优先打开 dolphin 然后由 dolphin 处理文件的打开,打开对应程序处理文件。然后 dolphin 在打开文件后扔在那里也并不会自动关闭什么的。有什么办法可以直接打开对应应用(不经过 dolphin 处理)或者经过 dolphin 处理但是打开后自动关闭 dolphin 吗

我也有遇到类似问题,很多年前就有了

在调用 xdg-open 去打开文件的地方,会优先打开 dolphin 然后由 dolphin 处理文件的打开

我怀疑有些 app 是直接调用了系统的文件管理器去打开,而不是调用 xdg-open 来打开(因为终端里我试了xdg-open xxxxx是没有那种现象的)

于是暂时我自己弄了个叫dolphin的 shell 来抢占,判断一下打开的是文件还是目录

附:我所用的

P=$1

if [ -d "${P}" ] ; then
    echo "$P is a directory";
    bash -c " /usr/bin/dolphin \"$@\" "  &
else
    if [ -f "${P}" ]; then
        echo "${P} is a file";
        xdg-open "$@" &
    else
        echo "${P} is not a file or a directory";
        bash -c " /usr/bin/dolphin \"$@\" "  &
    fi
fi

这个 shell 不完整。比如,多参数时的情况没处理

1赞

不过,这个回答仍然非正解

也希望有人能出来帮彻底弄清解决一下

这个问题我还是今年才遇到,之前并没有类似情况。推测是处理 mime type 是 inode/directory 默认是 dolphin ,打开文件时是使用 类似 file://类似的方法打开也被认为是 url 或者 directory 了。但是没啥解决思路,直接用脚本替代感觉不是上策

❯ xdg-open ~/2023-02-13-23-01.png
+ check_common_commands /home/ddqi/2023-02-13-23-01.png
+ '[' 1 -gt 0 ']'
+ parm=/home/ddqi/2023-02-13-23-01.png
+ shift
+ case "$parm" in
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ unset XDG_UTILS_DEBUG_LEVEL
+ '[' 0 -lt 1 ']'
+ xdg_redirect_output=' > /dev/null 2> /dev/null'
+ '[' x/home/ddqi/2023-02-13-23-01.png '!=' x ']'
+ url=
+ '[' 1 -gt 0 ']'
+ parm=/home/ddqi/2023-02-13-23-01.png
+ shift
+ case "$parm" in
+ '[' -n '' ']'
+ url=/home/ddqi/2023-02-13-23-01.png
+ '[' 0 -gt 0 ']'
+ '[' -z /home/ddqi/2023-02-13-23-01.png ']'
+ detectDE
+ unset GREP_OPTIONS
+ '[' -n KDE ']'
+ case "${XDG_CURRENT_DESKTOP}" in
+ DE=kde
+ '[' xkde = x ']'
+ '[' xkde = x ']'
+ '[' xkde = x ']'
+ '[' xkde = xgnome ']'
+ '[' -f /run/user/1000/flatpak-info ']'
+ '[' xkde = x ']'
+ DEBUG 2 'Selected DE kde'
+ '[' -z '' ']'
+ return 0
+ case "${BROWSER}" in
+ case "$DE" in
+ open_kde /home/ddqi/2023-02-13-23-01.png
+ '[' -n 5 ']'
+ case "${KDE_SESSION_VERSION}" in
+ kde-open5 /home/ddqi/2023-02-13-23-01.png
+ '[' 0 -eq 0 ']'
+ exit_success
+ '[' 0 -gt 0 ']'
+ exit 0

看了一下似乎是最终调用了 kde-open 处理这个动作,那这么看这个动作甚至还是合理的…

这个问题我已经解决了,解决放在在下一层

首先还是尝试新建用户尝试复现。然后在新用户下调用kde-open会有如下报错:

kf.service.services: KApplicationTrader: mimeType "x-scheme-handler/file" not found

那看来还是 mime 的问题,然后在 ~/.config/mimeapps.list中看到确实有 x-scheme-handler/file 的设置,把对应行移除就可以了。(但是并不知道是哪个程序给设置的,此问题至少三个月前是没有的,推测是期间更换了总计两次发行版但是共用 home 导致了一些不可预测的问题,总之解决了)

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。