如何检测 Linux 操作系统是使用 KDE 还是 Gnome 环境

Posted

技术标签:

【中文标题】如何检测 Linux 操作系统是使用 KDE 还是 Gnome 环境【英文标题】:How to detect if Linux OS uses KDE or Gnome environment 【发布时间】:2012-05-01 09:11:45 【问题描述】:

我需要以编程方式确定在 Linux 上运行的是哪个窗口管理器。

如何使用的伪代码:

if(WindowManagerOfOS.isKDE())
      do.anyThing();

我该怎么做?有没有可能?

【问题讨论】:

我无法在我的计算机上进行测试,但请尝试查看 UIManager.getSystemLookAndFeelClassName() 在任一计算机上返回的内容 相关:***.com/questions/3376679/… 【参考方案1】:
System.getenv("XDG_CURRENT_DESKTOP")

在我的机器上返回 "GNOME"。在基于 KDE 的机器上试一试。

另见

Determine what window manager is running?

【讨论】:

一个用户可以同时安装两个,但只运行一个,在这种情况下两个环境变量都会存在。您必须检查正在运行的进程。 Tomaz,我将使用“KDE_SESSION_VERSION”来检查这一点。问题是 KDE 没有桌面... 我忘记评论了...System.getenv("XDG_CURRENT_DESKTOP") 在带有 KDE 本机的 Linux Mint 12 中为我打印 null。 不,这已被弃用,不要使用它。它在 Gnome3/Fedora16 上也未设置。【参考方案2】:

官方的回答是你不应该关心。两款台式机均符合现有标准。两者都可以运行彼此的软件。你想做什么?如果您正在寻找一项特定服务,默认情况下只有一个发行版提供,那么您应该寻找它。

【讨论】:

-1 这不是问题的答案,应该是评论。 我将投票认为这是一个不错的答案。也许不是最好的,但它确实有效,因为当人们想知道如何“那样做”时,有时我们需要说“不要那样做”。 人们关心和应该知道的地方有很多,第一个例子在xdg-utils内cgit.freedesktop.org/xdg/xdg-utils/tree/scripts/…见detectDE(),它被xdg-su/xdg-terminal等用来工作应该使用我们的图形 sudo 包装器的外壳。还有一些东西,比如设置壁纸等,是任何固定的 api 或标准都没有涵盖的。各种壁纸应用程序在以下脚本中执行此操作 bazaar.launchpad.net/~peterlevi/variety/trunk/view/head:/data/… @Andy 错误!基于该假设构建的脚本将失败。例如,您必须能够检测 KDE 才能正确调用 konsole 而不是 gnome-terminal

以上是关于如何检测 Linux 操作系统是使用 KDE 还是 Gnome 环境的主要内容,如果未能解决你的问题,请参考以下文章

XWindow - KDE & Gnome

面向GNU/Linux桌面环境的KDE Plasma 5.11正式发布

修改 KDE 为中文语言环境

在kali linux下安装了kde上网本的桌面全都是英文如何汉化

linux下怎么在fedora9中gnome与kde的转换?

linux中字体如何变大