Commit 992143c4 authored by Fabian Vogt's avatar Fabian Vogt

Session file parser: Support sections and respect the Hidden property

Some desktop files have multiple sections, but for now we're only
interested in [Desktop Entry]. Without this patch, every entry was seen
as part of the [Desktop Entry] session, resulting in values getting

Additionally, the Hidden=true property specifies that the desktop file
needs to be treated like it was non-existant.

Same as for sddm.

BUG: 381982

Test Plan:
Installed the KCM, now there are no duplicate sessions and the right
Name is shown for icewm-session.desktop.

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: davidedmundson, plasma-devel

Tags: #plasma

Differential Revision:
parent 229212f0
......@@ -53,18 +53,36 @@ SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new
if (!
SessionPtr si { new Session { session, "", "", "" } };
bool isHidden = false;
QString current_section;
QTextStream in(&inputFile);
while (!in.atEnd()) {
QString line = in.readLine();
if (line.startsWith(QLatin1String("["))) {
// The section name ends before the last ] before the start of a comment
int end = line.lastIndexOf(QLatin1Char(']'), line.indexOf(QLatin1Char('#')));
if (end != -1)
current_section = line.mid(1, end - 1);
if (current_section != QLatin1String("Desktop Entry"))
continue; // We are only interested in the "Desktop Entry" section
if (line.startsWith("Name="))
si->name = line.mid(5);
if (line.startsWith("Exec="))
si->exec = line.mid(5);
if (line.startsWith("Comment="))
si->comment = line.mid(8);
if (line.startsWith(QLatin1String("Hidden=")))
isHidden = line.mid(7).toLower() == QLatin1String("true");
// add to sessions list
if (!isHidden) {
// add to sessions list
// close file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment