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

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

如何使用的伪代码:

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

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

【问题讨论】:

标签: java linux desktop-application gnome kde


【解决方案1】:
System.getenv("XDG_CURRENT_DESKTOP")

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

另见

【讨论】:

  • 一个用户可以同时安装两个,但只运行一个,在这种情况下两个环境变量都会存在。您必须检查正在运行的进程。
  • 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
猜你喜欢
  • 2011-04-23
  • 2011-03-23
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 2020-12-21
  • 2013-01-03
  • 2011-01-29
相关资源
最近更新 更多