diff options
author | github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | 2021-11-06 18:01:01 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-06 18:01:01 +0000 |
commit | eeb7e66e975d623aacfb95a450237192fd200e30 (patch) | |
tree | b6905b92ac4a4e49e703721cbadeac2ce8da9a23 /pkgs/applications/display-managers | |
parent | 89ec09c85893fa1c9169aa14509e19e697871f20 (diff) | |
parent | d63d3250f4ead4753181d00b5c8a6f4a5e3c6f07 (diff) | |
download | nixpkgs-eeb7e66e975d623aacfb95a450237192fd200e30.tar nixpkgs-eeb7e66e975d623aacfb95a450237192fd200e30.tar.gz nixpkgs-eeb7e66e975d623aacfb95a450237192fd200e30.tar.bz2 nixpkgs-eeb7e66e975d623aacfb95a450237192fd200e30.tar.lz nixpkgs-eeb7e66e975d623aacfb95a450237192fd200e30.tar.xz nixpkgs-eeb7e66e975d623aacfb95a450237192fd200e30.tar.zst nixpkgs-eeb7e66e975d623aacfb95a450237192fd200e30.zip |
Merge master into staging-next
Diffstat (limited to 'pkgs/applications/display-managers')
-rw-r--r-- | pkgs/applications/display-managers/sddm/default.nix | 1 | ||||
-rw-r--r-- | pkgs/applications/display-managers/sddm/sddm-default-session.patch | 71 |
2 files changed, 72 insertions, 0 deletions
diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix index 091498fae00..c75aba9d261 100644 --- a/pkgs/applications/display-managers/sddm/default.nix +++ b/pkgs/applications/display-managers/sddm/default.nix @@ -19,6 +19,7 @@ in mkDerivation { patches = [ ./sddm-ignore-config-mtime.patch + ./sddm-default-session.patch # Load `/etc/profile` for `environment.variables` with zsh default shell. # See: https://github.com/sddm/sddm/pull/1382 (fetchpatch { diff --git a/pkgs/applications/display-managers/sddm/sddm-default-session.patch b/pkgs/applications/display-managers/sddm/sddm-default-session.patch new file mode 100644 index 00000000000..455ebbd4157 --- /dev/null +++ b/pkgs/applications/display-managers/sddm/sddm-default-session.patch @@ -0,0 +1,71 @@ +diff --git a/src/common/Configuration.h b/src/common/Configuration.h +index cf44a62..7bb9c03 100644 +--- a/src/common/Configuration.h ++++ b/src/common/Configuration.h +@@ -44,6 +44,7 @@ namespace SDDM { + "NOTE: Currently ignored if autologin is enabled.")); + Entry(InputMethod, QString, QStringLiteral("qtvirtualkeyboard"), _S("Input method module")); + Entry(Namespaces, QStringList, QStringList(), _S("Comma-separated list of Linux namespaces for user session to enter")); ++ Entry(DefaultSession, QString, QString(), _S("System-wide default session")); + // Name Entries (but it's a regular class again) + Section(Theme, + Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path")); +diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp +index 1953c76..54fe2f2 100644 +--- a/src/greeter/SessionModel.cpp ++++ b/src/greeter/SessionModel.cpp +@@ -43,6 +43,7 @@ namespace SDDM { + beginResetModel(); + populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); + populate(Session::X11Session, mainConfig.X11.SessionDir.get()); ++ selectDefaultSession(); + endResetModel(); + + // refresh everytime a file is changed, added or removed +@@ -52,6 +53,7 @@ namespace SDDM { + d->sessions.clear(); + populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); + populate(Session::X11Session, mainConfig.X11.SessionDir.get()); ++ selectDefaultSession(); + endResetModel(); + }); + watcher->addPath(mainConfig.Wayland.SessionDir.get()); +@@ -149,11 +151,25 @@ namespace SDDM { + else + delete si; + } ++ } ++ ++ void SessionModel::selectDefaultSession() { ++ d->lastIndex = 0; ++ + // find out index of the last session + for (int i = 0; i < d->sessions.size(); ++i) { + if (d->sessions.at(i)->fileName() == stateConfig.Last.Session.get()) { + d->lastIndex = i; +- break; ++ return; ++ } ++ } ++ ++ // Otherwise, fallback to system-wide default session. ++ auto defaultSession = mainConfig.DefaultSession.get(); ++ for (int i = 0; i < d->sessions.size(); ++i) { ++ if (QFileInfo(d->sessions.at(i)->fileName()).fileName() == defaultSession) { ++ d->lastIndex = i; ++ return; + } + } + } +diff --git a/src/greeter/SessionModel.h b/src/greeter/SessionModel.h +index 2e2efa9..a93315c 100644 +--- a/src/greeter/SessionModel.h ++++ b/src/greeter/SessionModel.h +@@ -58,6 +58,7 @@ namespace SDDM { + SessionModelPrivate *d { nullptr }; + + void populate(Session::Type type, const QString &path); ++ void selectDefaultSession(); + }; + } + |