【问题标题】:How can I detect when I'm on a system running Unity?如何检测我何时在运行 Unity 的系统上?
【发布时间】:2012-02-03 07:00:33
【问题描述】:

为了选择用于程序的应用程序指示器类型,我需要检测我是否在 Unity 桌面中。这可能吗?当我无法访问环境时是否有可能?

【问题讨论】:

  • 我已经编辑了我的问题,我可能无法访问环境,所以这不是一个完整的解决方案。
  • 另一种方法是检查名为“unity”的进程是否正在运行。我认为没有跨平台的方法可以做到这一点。对于 Linux,您可能需要查看:stackoverflow.com/questions/939778/…

标签: c++ ubuntu-unity


【解决方案1】:

通过运行以下命令行查看统一的环境变量列表:

env | grep -i unity

如果您看到in this answer XDG_CURRENT_DESKTOP=Unity,那么您知道它正在使用中。或者,您当然可以检查 desktop 而不是 unity

【讨论】:

    【解决方案2】:

    好像还有XDG_CURRENT_DESKTOP:

    rubiojr@rubiojr-VirtualBox:~$ echo $XDG_CURRENT_DESKTOP 
    Unity
    

    https://askubuntu.com/questions/70296/is-there-an-environment-variable-that-is-set-for-unity

    【讨论】:

    • 是的,这在env的输出中。
    【解决方案3】:

    在 Ubuntu 中,您可以使用以下命令:

    • echo $DESKTOP_SESSION:此命令在您使用 Unity 时返回 ubuntu,在使用 Unity 2D 时返回 ubuntu-2d 和 ...
    • sudo grep "Starting session" /var/log/lightdm/lightdm.log:由于上一个版本的 Ubuntu 使用 lightdm 作为显示管理器,您可以看到 lightdm 的最后一行 .log 文件。

    【讨论】:

      【解决方案4】:

      只需 shell 执行ps aux | grep unity,这是 linux 的跨平台。甚至适用于 ARM 内核。

      在我运行 unity 的 11.04 Ubuntu 上,它返回 unity-2d-panel、unity-2d-launcher 和更多进程。无法确认这是否适用于每个 linux 平台。

      【讨论】:

      • 可能有其他会话(属于当前用户或其他用户)在运行 Unity,而您的当前会话可能不是它。我建议不要依赖 Unity 进程的存在。
      猜你喜欢
      • 2018-12-07
      • 1970-01-01
      • 2023-01-30
      • 2011-03-19
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多