为什么 KDE Accessible / 屏幕阅读器会自动启动以及如何防止它?

为什么 KDE Accessible / 屏幕阅读器会自动启动以及如何防止它?

我正在运行带有 KDE 和 KDE Accessible 的 Debian 9.1 / 由于某种原因屏幕阅读器时不时地出现。我想知道为什么这就是以及如何防止它启动。
它既没有列在后台服务的自动启动条目中,也没有列在启动管理器 (bum) 中。在辅助功能选项中,未选中“屏幕阅读器已启用”。


ps -ef | grep access给我:

/usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
/usr/lib/kde4/libexec/kaccessibleapp

可以找到/usr/share/defaults/at-spi2/accessibility.conf的内容这里

现在禁用它的 Debian 问题是这里

答案1

它是一个会话 D-Bus 服务,在文件中定义/usr/share/dbus-1/services/org.kde.kaccessible.service。它由systemd的用户会话管理器间接启动。

systemctl --user status

当 GUI 桌面会话开始时,当时启动的用户级服务之一是无障碍巴士服务: at-spi-dbus-bus.service。它启动at-spi-bus-launcher,进而启动dbus-daemon可访问总线的实例,以及可访问总线的实际 D-Bus 服务,包括kaccessibleapp

kaccessibleapp据我所知,为了仅禁用该服务,该文件/usr/share/dbus-1/services/org.kde.kaccessible.service需要停止存在于该目录中;似乎没有任何其他方法可以专门控制该服务的启动。

如果您想禁用整个辅助总线,请systemctl --user stop at-spi-dbus-bus.service以常规用户帐户运行,然后验证对您来说重要的任何内容都没有被破坏。如果出现问题,只需注销并重新登录即可再次重新启动辅助总线。要永久禁用辅助总线启动,请运行systemctl --user disable at-spi-dbus-bus.service。要撤消,请替换disableenable

如果某些其他会话级服务在其systemd配置中需要可访问性总线,则可访问性总线服务仍可以启动以满足该要求。要显式禁止辅助总线的启动(即使其他情况需要),请运行systemctl --user mask at-spi-dbus-bus.service。要撤消,请替换maskunmask

答案2

我遇到了同样的问题,所以经过一番挖掘后,我找到了一个对我有用的解决方案,方法是编辑文件/etc/xdg/autostart/kaccess.desktop和注释Exec=kaccess行,或者删除整个文件,与/org.kde.kdeconnect.daemon.desktop文件的 kdeconnect 相同。

答案3

前言

正如人们对 Plasma 4 天的一款遗留软件所期望的那样,KAccess 也早于 systemd 的存在,并且仍然没有得到足够彻底的移植工作来将其与所有当前的桌面基础设施集成。事实上,当我看到你的问题并想“哦!我想我知道这个问题的答案是什么!”时,我有点惊讶。然后拉下 Yakuake 窗口,我的第一个ls命令就是进入正确的目录,尽管距离我自己成为这个问题的受害者可能已有 6-8 年了。这是我调用的确切命令及其输出:

$ ls -lFAhkp /etc/xdg/autostart/kaccess.desktop

  rw-r--r--   1   root   root      2 KiB   Thu Jan 21 13:01:43 2021    kaccess.desktop

肇事者已找到

我很遗憾地向您报告,该文件是您所有挫败感的根源。据我所知,rm -f通往地狱之门的那件事会让人很满意,但我将不得不在一个完全不同的方向上为你提供建议。原因是这样的...

该文件最近的 mtime 提醒我这样一个事实:它并不粗糙,但很可能仍然是 KDE 框架内当前包的组成部分。事实上我很快就发现这不仅仅是任何包,但不是别人,正是plasma-desktop它本身!这意味着,如果您删除了它,那么下次您在plasma-*发布一组新的软件包后使用软件包管理器更新系统时,该文件将回到原来的位置。幸运的是,“根据霍伊尔的说法”的合法解决方案至少是一个快速的解决方案。

在尝试杀死龙之前一定要查阅古代卷轴

整个autostart文件夹的事情是另一个 Freedesktop.org XDG(跨桌面组)规范,恰当地命名桌面应用程序自动启动,这个小金块就藏在里面实施说明段落:

如果应用程序通过在系统范围的自动启动目录中安装 .desktop 文件来自动启动,则单个用户可以通过在其个人自动启动目录中放置同名的 .desktop 文件来禁用该应用程序的自动启动,该目录包含键 Hidden=真的。

在本规范的前面部分,有关自启动目录状态:

如果$XDG_CONFIG_HOME未设置,则用户帐户的自动启动目录为~/.config/autostart

如果$XDG_CONFIG_DIRS未设置,则系统范围的自动启动目录为/etc/xdg/autostart.

征服英雄归来

所有这些都清楚了,这将是我处理这种情况的方法,在足够复杂的 shell(例如 Bash 或 Z Shell)中执行,以适应所示的条件变量扩展。

  1. 确保您的用户帐户的自动启动目录确实存在。

    mkdir -pv "${XDG_CONFIG_HOME:-~/.config}/autostart"

  2. 删除有问题的等离子桌面文件的副本,使其永远腐烂。

    cp -iv /etc/xdg/autostart/kaccess.desktop "${XDG_CONFIG_HOME:-~/.config}/autostart"

  3. 从文件中删除为隐藏键设置值的任何现有行后,使用卷轴中的咒语诅咒它终身无能。

    grep -Eq 'Hidden\s*?=' "${XDG_CONFIG_HOME:-~/.config}/autostart/kaccess.desktop" &&
      sed -Ei '/Hidden[[:blank:]]*?=/d' "${XDG_CONFIG_HOME:-~/.config}/autostart/kaccess.desktop";
    echo "Hidden=true" >>"${XDG_CONFIG_HOME:-~/.config}/autostart/kaccess.desktop"
    

相关内容