From e0b85670cf29899edb0c23477301e10bb43831ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= Date: Sun, 8 Mar 2015 20:57:53 +0800 Subject: [PATCH] services: slim: Allow non-absolute path to be used as session command. * gnu/services/xorg.scm (xinitrc)[builder]: Don't check the existence of COMMAND. Only run ~/.xsession when it exists. --- gnu/services/xorg.scm | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 912cbd3885..14edf8cc04 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -158,26 +158,26 @@ which should be passed to this script as the first argument. If not, the ;; environment variables that one gets when logging in on a tty, for ;; instance. (let* ((pw (getpw (getuid))) - (shell (passwd:shell pw)) - (st (stat command #f))) - (when (and st (not (zero? (logand (stat:mode st) #o100)))) - ;; Close any open file descriptors. This is all the more - ;; important that SLiM itself exec's us directly without closing - ;; its own file descriptors! - (close-all-fdes) + (shell (passwd:shell pw))) + ;; Close any open file descriptors. This is all the more + ;; important that SLiM itself exec's us directly without closing + ;; its own file descriptors! + (close-all-fdes) - ;; The '--login' option is supported at least by Bash and zsh. - (execl shell shell "--login" "-c" - (string-join (cons command args)))))) + ;; The '--login' option is supported at least by Bash and zsh. + (execl shell shell "--login" "-c" + (string-join (cons command args))))) - (let ((home (getenv "HOME")) - (session (match (command-line) - ((_ x) x) - (_ #$fallback-session)))) - ;; First, try to run ~/.xsession. - (exec-from-login-shell (string-append home "/.xsession")) - ;; Then try to start the specified session. - (exec-from-login-shell session)))) + (let* ((home (getenv "HOME")) + (xsession-file (string-append home "/.xsession")) + (session (match (command-line) + ((_ x) x) + (_ #$fallback-session)))) + (if (file-exists? xsession-file) + ;; Run ~/.xsession when it exists. + (exec-from-login-shell xsession-file) + ;; Otherwise, start the specified session. + (exec-from-login-shell session))))) (gexp->script "xinitrc" builder))