5

In order to choose between what type of app indicators to use for a program, I need to detect whether I'm in a Unity desktop or not. Is this possible? Is it possible when I don't have access to the environment?

Lex Li
  • 60,503
  • 9
  • 116
  • 147
fredley
  • 32,953
  • 42
  • 145
  • 236
  • 2
    Found this: http://askubuntu.com/questions/70296/is-there-an-environment-variable-that-is-set-for-unity – wormsparty Jan 05 '12 at 12:53
  • I've edited my question, I may not have access to the environment, so that is not a complete solution. – fredley Jan 05 '12 at 13:28
  • Another way would be to check if a process named 'unity' is running. I don't think there's a cross-platform way to do this. For Linux, you may want to look at: http://stackoverflow.com/questions/939778/linux-api-to-list-running-processes – wormsparty Jan 05 '12 at 13:47

4 Answers4

4

It looks like there's also XDG_CURRENT_DESKTOP:

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

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

Community
  • 1
  • 1
rubiojr
  • 716
  • 5
  • 3
3

In Ubuntu you can use following commands:

  • echo $DESKTOP_SESSION: This command return ubuntu when you are using Unity and ubuntu-2d when you are using Unity 2D and ...
  • sudo grep "Starting session" /var/log/lightdm/lightdm.log: Because of last version of Ubuntu use lightdm as display manager you can see last line of the lightdm.log file.
Saeed Zarinfam
  • 9,818
  • 7
  • 59
  • 72
2

Just shell execute ps aux | grep unity, this is cross-plattform for linux. Even works on ARM cores.

On my 11.04 Ubuntu running unity it returns unity-2d-panel, unity-2d-launcher and more processes. Can't confirm if this is true on every linux platform.

  • 1
    There can be other sessions (belonging to the current user or a different user) running Unity when your current session may not be it. I would advise against relying on existence of a Unity process. – Manki Sep 08 '12 at 02:03
1

Look in the list of environment variables for unity by running this command line:

env | grep -i unity

If as in this answer you see XDG_CURRENT_DESKTOP=Unity then you know it is in use. Alternatively, you could of course check for desktop rather than unity.

Community
  • 1
  • 1
icedwater
  • 4,701
  • 3
  • 35
  • 50