Qt - 如何检测应用程序是在 GNOME 还是 KDE 上运行?

2024-01-04

我想知道我怎么能做这样的事情()使用 Qt。我查看了文档,但找不到任何方法来检查外部进程是否正在运行。

if [ "$(pidof ksmserver)" ]; then
   echo "KDE running."
   # KDE-specific stuff here
elif [ "$(pidof gnome-session)" ]; then
   echo "GNOME running."
   # GNOME-specific stuff here
elif [ "$(pidof xfce-mcs-manage)" ]; then
   echo "Xfce running."
   # Xfce-specific stuff here
fi

通常你不应该这样做。一般来说,如果您的应用程序根据桌面环境的不同而表现不同,那么对于在它们之间切换的任何用户来说,这将是一个令人讨厌的意外。

另一种选择

使用与 DE 无关的命令,例如xdg-open https://wiki.archlinux.org/index.php/Xdg-open。优点:

  • 你不必自己编写逻辑(xdg-utils 已经做到了这一点)
  • 更加人性化。遵循用户的实际喜好;许多用户使用一种 DE,但更喜欢来自不同 DE 的某些应用程序。
  • 支持其他 DE,如 XFCE、LXDE、Unity 等。

例如,不要根据当前运行的 DE 在 Firefox 或 Konqueror 中打开 URL,而是将 URL 传递给xdg-open在用户首选的应用程序中打开它。 (用户可能是 Chromium 用户。)不要硬编码nautilus or dolphin适用于 GNOME 和 KDE;而是使用打开路径xdg-open.

同样,对于与 DE 的其他形式的交互,请尝试使用自由桌面规格 http://www.freedesktop.org/wiki/Specifications,而不是试图猜测 DE 正在运行什么。标准存在于将文件移至垃圾箱 http://www.freedesktop.org/wiki/Specifications/trash-spec、添加系统托盘小程序以及将文件添加到“最近使用的文件”列表等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt - 如何检测应用程序是在 GNOME 还是 KDE 上运行? 的相关文章

随机推荐