有没有办法可以阻止 KDE 覆盖我的其他 WM 设置?

有没有办法可以阻止 KDE 覆盖我的其他 WM 设置?

问题是什么?

  • KDE 不尊重其他窗口管理器/DE 设置。

    有没有一种方法可以安全地与其他窗口管理器一起运行 KDE,而不必在每次完成 KDE 测试后都重新配置它们?

背景

我的用户的主要桌面主要是 xfce(4.6、4.8、4.10)和 Unity。

  • 我经常测试多个窗口管理器(fluxbox、enlightenment、unity、gnome 等)。只有 KDE 会在我测试完某些 KDE 功能后返回另一个窗口管理器时出现问题。

我该怎么做才能修复这个问题?

当返回到 KDE 以外的 WM 时,我发现我必须删除配置(特别是 *gtk 文件)文件才能将其他 WM 恢复为默认设置。

我在寻找什么答案?

  • 我可以设置任何文件权限来防止 KDE 破坏我的其他 WM 设置吗?
  • 有没有办法确定 KDE 接触和修改了我的主目录中的哪些文件?这可能有助于我缩小问题范围。
  • 我愿意编写一个登录脚本来纠正 KDE 出现的任何错误。对于 3 个用户来说,这是可以接受的。但对于 50 个用户来说,这无法扩展。

我该怎么做才能安全地测试 KDE 并返回到我的默认窗口管理器,而不必不断地恢复我的配置?

为什么这很重要?

这是一个给我带来问题的用例:

我有一个用户(可能是 C 级高管)喜欢在 KDE 和 xfce(以及其他窗口管理器)之间来回切换。我该如何配置他们的配置文件,以便当他们决定返回 xfce 时不会获得 KDE 窗口装饰?

就目前情况而言,我无法防止用户登录 KDE 会话后 xfce 会话被完全破坏。

答案1

这是我发现的缓解在 KDE 和 Xfce 之间切换时显示/窗口装饰问题的解决方案。

如何查找 KDE 修改了哪些文件?

查找在指定时间段内主目录中发生变化的文件相当简单。

find ~ -maxdepth 5 -mmin 10(搜索最近 10 分钟内的变更)

但是,结果中充斥着大量动态文件(例如各种应用程序缓存)。因此,我需要从结果中排除这些文件:

find ~/ -maxdepth 5 \( -path ~/.cache -o -path ~/.xchat2 -o -path ~/.local -o -path ~/Downloads -o -path ~/.config/deluge -o -path ~/.config/chromium -o -path ~/docs -o -path ~/.dropbox -o -path ~/Dropbox -o -path ~/.pulse -o -path ~/.dbus \) -prune -o -mmin -5

这样就会产生一个更易于管理的列表来识别 KDE 已修改的文件(我相信有更优雅的解决方案来获得相同的结果)。

需要更改哪些文件以及应该运行哪些命令?

退出 KDE 之前,进入终端(Ctrl- Alt- t),然后输入以下命令:

rm ~/.gtkrc-2.0

这将删除 KDE 窗口装饰设置,删除该设置将导致这些设置不应用于 Xfce。但是,一旦登录 Xfce,就需要使用以下命令重置 WM:

xfwm4 --replace

此外,如果在 KDE 中工作时对任何主题或字体进行了更改,则需要在登录 Xfce 之前删除另一个文件。否则,Web 浏览器中的字体将被修改。

再次,从命令行:

rm ~/.fonts.conf

我怎样才能(部分)实现自动化?

/etc/lightdm/lightdm.conf我通过编辑和放置以下行在文件中实现了部分自动化:

    [SeatDefaults]
    session-cleanup-script = home/<userdir>/clean_up_after_kde.sh 

rm该脚本包含上述两个命令。xfwm --replace只有在桌面环境启动后才能运行,因此仍需手动运行。

为了使更改生效,需要重新启动 lig​​htdm。运行以下命令:

sudo restart lightdm

执行此命令后,您的会话将立即重新启动并返回到登录屏幕,因此请确保在重新启动之前已保存所有工作。

这些命令现在将作为注销过程的一部分运行。请注意,此脚本仅运行用户已完全退出

尽管这仍然很笨拙,但这是一个较小的进步,可以使其变得更好。

答案2

设置单独的 /home 分区可能是可行的方法。基本上,您有 2 个 /home 分区(或文件夹,一个虚拟分区),并将虚拟分区用于 KDE。

相关内容