KDE Plasma 5 - 通过命令行重新加载 kdeglobals 或设置默认浏览器

KDE Plasma 5 - 通过命令行重新加载 kdeglobals 或设置默认浏览器

重新加载 KDE 全局桌面设置文件的正确命令是什么?或者更具体地说,如何通过命令行重置系统默认浏览器?

我使用的是最新的 Debian 10,带有 KDE Plasma 5.14.5。我有以下代码片段,它曾经可以工作并立即自动应用。

kwriteconfig5 --file ~/.config/kdeglobals --group General --key BrowserApplication "chromium.desktop"
# or "firefox-exr.desktop"

但最近不知为何它停止了自动应用。我尝试了以下解决方法来触发 KDE 配置的重新加载,但毫无效果。

$ dbus-send --type=signal --dest=org.kde.KWin /KWin reloadConfig                                                                                    
Must use org.mydomain.Interface.Signal notation, no dot in "reloadConfig"
FAIL: 1

$ qdbus org.kde.KWin /KWin reconfigure                                                                                                              
# (no error message returned but did not work)

附加系统信息:

KDE Plasma Version: 5.14.5
KDE Frameworks Version: 5.54.0
Qt Version: 5.11.3
Linux Kernel Version: 4.19.0-16-amd64

答案1

我还没有找到真正的解决方案对此,但我确实有一个可能有效的解决方法(取决于具体目标是什么):添加另一层间接层。

就我而言,我想根据我所处的活动切换默认浏览器,因此我曾经有一个服务可以监视活动变化并根据需要设置默认浏览器。相反,我现在有一个包装器脚本,它被设置为默认浏览器,并在运行时调用正确的真实浏览器,如下所示:

#!/bin/bash

function currentActivityName() {
    local service=org.kde.ActivityManager
    local path=/ActivityManager/Activities
    qdbus $service $path ActivityName "$(qdbus $service $path CurrentActivity)"
}

case "$(currentActivityName)" in
    Work)
        exec google-chrome --new-window "$@"
        ;;
    *)
        exec vivaldi-stable --new-window "$@"
        ;;
esac

因此,如果您的标准很容易像这样检查,那么类似的方法可能是最简单的途径。

(考虑到已经过去了多长时间,我想 OP 不再需要这个,但是当我试图找出是否有其他人解决了这个问题时,这个问题在 Google 上排名很高。)

答案2

我设法通过添加 mime 类型修改来使用命令行更改 kde plasma 中的默认浏览器:

      db="Firefox Developper Edition.desktop"
      kwriteconfig5 --file ~/.config/kdeglobals --group General --key BrowserApplication $db
      xdg-settings set default-web-browser $db
      xdg-mime default "$db" x-scheme-handler/https
      xdg-mime default "$db" x-scheme-handler/http

我个人的用例是:切换活动时更改默认浏览器。为此,我们必须创建~/.local/share/kactivitymanagerd/activities/与活动 ID 对应的文件夹:当活动发生变化时,这些文件夹中包含的脚本将自动运行。要了解活动的名称/ID:

qdbus --literal org.kde.ActivityManager /ActivityManager/Activities ListActivitiesWithInformation
# exemple output →
#[Argument: a(ssssi) {[Argument: (ssssi) "25414bcd-3e75-4b9e-93fd-d32702b1043d", "dev", "", "format-text-code", 2], [Argument: (ssssi) "958d1270-b221-4d5e-aed1-4f9f38260a7c", "Défaut", "", "", 2]}]

创建活动更改期间执行脚本的文件夹(适应 ID)→

mkdir -r ~/.local/share/kactivitymanagerd/activities/25414bcd-3e75-4b9e-93fd-d32702b1043d/activated/

我在这里放了此活动加载时应执行的脚本:

#!/bin/bash

function writeconf() {
      db="Firefox Developper Edition.desktop"
      kwriteconfig5 --file ~/.config/kdeglobals --group General --key BrowserApplication $db
      xdg-settings set default-web-browser $db
      xdg-mime default "$db" x-scheme-handler/https
      xdg-mime default "$db" x-scheme-handler/http
      # xdg-mime default "$db" text/html
}

writeconf 
kdialog --title "workspace: dev" --passivepopup "Browser is now to Firefox Developer Edition"

我对加载默认活动执行了相同的操作,将浏览器恢复为默认设置。有关管理活动更改期间启动的脚本的更多信息这里

相关内容