-
Notifications
You must be signed in to change notification settings - Fork 4
/
linuxdesktopprovider.cpp
108 lines (98 loc) · 3.77 KB
/
linuxdesktopprovider.cpp
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "linuxdesktopprovider.h"
#include <QProcessEnvironment>
#include <QStringList>
#include <QDebug>
#include <QFile>
#include <QFileDevice>
LinuxDesktopProvider::LinuxDesktopProvider()
{
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
// KDE-Session if KDE_FULL_SESSION=true
// or XDG_CURRENT_DESKTOP=KDE
if (env.contains("XDG_CURRENT_DESKTOP"))
{
QString desktop = env.value("XDG_CURRENT_DESKTOP").toUpper();
if (desktop == "KDE")
m_desktop = DesktopEnvironment::DESK_KDE;
}
else
if (env.contains("XDG_SESSION_DESKTOP"))
{
QString desktop = env.value("XDG_SESSION_DESKTOP").toUpper();
if (desktop == "KDE")
m_desktop = DesktopEnvironment::DESK_KDE;
}
}
QString LinuxDesktopProvider::getProperty(QString key)
{
QStringList args;
QProcess process;
args << "-root" << key;
process.setProgram("/usr/bin/xprop");
process.setArguments(args);
process.start(QIODevice::ReadOnly);
process.waitForFinished(1000);
QString result = process.readAllStandardOutput();
process.close();
// Only the part right of "="
int pos = result.indexOf("=");
if (pos < 0)
return "";
result = result.mid(pos+1).trimmed();