forked from boramalper/himawaripy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.py
82 lines (75 loc) · 3.36 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# http://stackoverflow.com/a/21213358/4466589
import os
import sys
import subprocess
import re
def get_desktop_environment():
# From http://stackoverflow.com/questions/2035657/what-is-my-current-desktop-environment
# and http://ubuntuforums.org/showthread.php?t=652320
# and http://ubuntuforums.org/showthread.php?t=652320
# and http://ubuntuforums.org/showthread.php?t=1139057
if sys.platform in ["win32", "cygwin"]:
return "windows"
elif sys.platform == "darwin":
return "mac"
else: # Most likely either a POSIX system or something not much common
desktop_session = os.environ.get("DESKTOP_SESSION")
if desktop_session is not None: # Easier to match if we don't have to deal with caracter cases
desktop_session = desktop_session.lower()
if desktop_session in ["gnome", "unity", "cinnamon", "mate", "xfce4", "lxde", "fluxbox",
"blackbox", "openbox", "icewm", "jwm", "afterstep","trinity", "kde", "pantheon",
"gnome-classic"]:
return desktop_session
## Special cases ##
# Canonical sets $DESKTOP_SESSION to Lubuntu rather than LXDE if using LXDE.
# There is no guarantee that they will not do the same with the other desktop environments.
elif "xfce" in desktop_session or desktop_session.startswith("xubuntu"):
return "xfce4"
elif desktop_session.startswith("ubuntu"):
return "unity"
elif desktop_session.startswith("lubuntu"):
return "lxde"
elif desktop_session.startswith("kubuntu"):
return "kde"
elif desktop_session.startswith("razor"): # e.g. razorkwin
return "razor-qt"
elif desktop_session.startswith("wmaker"): # e.g. wmaker-common
return "windowmaker"
if os.environ.get('KDE_FULL_SESSION') == 'true':
return "kde"
elif os.environ.get('GNOME_DESKTOP_SESSION_ID'):
if not "deprecated" in os.environ.get('GNOME_DESKTOP_SESSION_ID'):
return "gnome2"
# From http://ubuntuforums.org/showthread.php?t=652320
elif is_running("xfce-mcs-manage"):
return "xfce4"
elif is_running("ksmserver"):
return "kde"
# We couldn't detect it so far, so let's try one last time
current_desktop = os.environ.get("XDG_CURRENT_DESKTOP")
if current_desktop:
current_desktop = current_desktop.lower()
if current_desktop in ["gnome", "unity", "kde", "gnome-classic"]:
return current_desktop
# Special Cases
elif current_desktop == "xfce":
return "xfce4"
elif current_desktop == "x-cinnamon":
return "cinnamon"
# We seem to be running linux without a DM. Chances we are running
# a tiling WM. Let's use feh to set the background.
elif has_program("feh"):
return "use_feh"
return "unknown"
def is_running(process):
try:
subprocess.check_output (["pidof", "--", process])
return True
except subprocess.CalledProcessError:
return False
def has_program(program):
try:
subprocess.check_output(["which", "--", program])
return True
except subprocess.CalledProcessError:
return False