about summary refs log tree commit diff
path: root/pkgs/desktops
diff options
context:
space:
mode:
authorMaciej Krüger <mkg20001@gmail.com>2023-12-23 22:09:26 +0100
committerMaciej Krüger <mkg20001@gmail.com>2023-12-24 14:52:08 +0100
commitf82870a99b420b772707d190c835742f0b8550b4 (patch)
tree5426ef22ebdf974127b38584a7daa58c25cdc82e /pkgs/desktops
parentb141712299da1e5b5a91b5d738e8cd36f2a9edcf (diff)
cinnamon.cinnamon-session: add patch for using login shell w/ wayland
This adds the patch from https://github.com/linuxmint/cinnamon-session/pull/161
to fix an issue with services.xserver.cinnamon.sessionPath not being correctly applied
when using gdm + wayland and possibly other combinations
Diffstat (limited to 'pkgs/desktops')
-rw-r--r--pkgs/desktops/cinnamon/cinnamon-session/0002-Use-login-shell-for-wayland-session.patch76
-rw-r--r--pkgs/desktops/cinnamon/cinnamon-session/default.nix1
2 files changed, 77 insertions, 0 deletions
diff --git a/pkgs/desktops/cinnamon/cinnamon-session/0002-Use-login-shell-for-wayland-session.patch b/pkgs/desktops/cinnamon/cinnamon-session/0002-Use-login-shell-for-wayland-session.patch
new file mode 100644
index 0000000000000..6c44f93d8f3c2
--- /dev/null
+++ b/pkgs/desktops/cinnamon/cinnamon-session/0002-Use-login-shell-for-wayland-session.patch
@@ -0,0 +1,76 @@
+From 174d14edcbb401aa2bfb77932b214512befb486c Mon Sep 17 00:00:00 2001
+From: Bobby Rong <rjl931189261@126.com>
+Date: Sat, 23 Dec 2023 23:24:59 +0800
+Subject: [PATCH] cinnamon-session: make sure wayland sessions get a login
+ shell
+
+Users expect their shell profiles to get sourced at startup, which
+doesn't happen with wayland sessions.
+
+This commit brings back that feature, by making the cinnamon-session
+wrapper script run a login shell.
+
+ref: https://gitlab.gnome.org/GNOME/gnome-session/-/commit/7e307f8ddb91db5d4051c4c792519a660ba67f35
+---
+ cinnamon-session/cinnamon-session.in | 16 ++++++++++++++++
+ cinnamon-session/meson.build         | 14 +++++++++++++-
+ 2 files changed, 29 insertions(+), 1 deletion(-)
+ create mode 100755 cinnamon-session/cinnamon-session.in
+
+diff --git a/cinnamon-session/cinnamon-session.in b/cinnamon-session/cinnamon-session.in
+new file mode 100755
+index 0000000..d9d7cb2
+--- /dev/null
++++ b/cinnamon-session/cinnamon-session.in
+@@ -0,0 +1,16 @@
++#!/bin/sh
++
++if [ "x$XDG_SESSION_TYPE" = "xwayland" ] &&
++   [ "x$XDG_SESSION_CLASS" != "xgreeter" ] &&
++   [  -n "$SHELL" ] &&
++   grep -q "$SHELL" /etc/shells &&
++   ! (echo "$SHELL" | grep -q "false") &&
++   ! (echo "$SHELL" | grep -q "nologin"); then
++  if [ "$1" != '-l' ]; then
++    exec bash -c "exec -l '$SHELL' -c '$0 -l $*'"
++  else
++    shift
++  fi
++fi
++
++exec @libexecdir@/cinnamon-session-binary "$@"
+diff --git a/cinnamon-session/meson.build b/cinnamon-session/meson.build
+index 10092ee..3d32fdc 100644
+--- a/cinnamon-session/meson.build
++++ b/cinnamon-session/meson.build
+@@ -54,7 +54,7 @@ cinnamon_session_sources = [
+ ]
+ 
+ dbus_glib = dependency('dbus-glib-1')
+-executable('cinnamon-session',
++executable('cinnamon-session-binary',
+   cinnamon_session_sources,
+   dependencies: [
+     cinnamon_desktop,
+@@ -76,6 +76,18 @@ executable('cinnamon-session',
+   ],
+   include_directories: [ rootInclude ],
+   install: true,
++  install_dir: get_option('libexecdir'),
++)
++
++script_conf = configuration_data()
++script_conf.set('libexecdir', get_option('prefix') / get_option('libexecdir'))
++
++configure_file(
++  input: 'cinnamon-session.in',
++  output: 'cinnamon-session',
++  install: true,
++  install_dir: get_option('bindir'),
++  configuration: script_conf
+ )
+ 
+ units = [
+-- 
+2.42.0
+
diff --git a/pkgs/desktops/cinnamon/cinnamon-session/default.nix b/pkgs/desktops/cinnamon/cinnamon-session/default.nix
index a6800f94737d5..a0dfab6503c2b 100644
--- a/pkgs/desktops/cinnamon/cinnamon-session/default.nix
+++ b/pkgs/desktops/cinnamon/cinnamon-session/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
 
   patches = [
     ./0001-Use-dbus_glib-instead-of-elogind.patch
+    ./0002-Use-login-shell-for-wayland-session.patch
   ];
 
   buildInputs = [