diff options
author | 宋文武 <iyzsong@gmail.com> | 2015-03-08 20:57:53 +0800 |
---|---|---|
committer | 宋文武 <iyzsong@gmail.com> | 2015-03-13 22:56:40 +0800 |
commit | e0b85670cf29899edb0c23477301e10bb43831ef (patch) | |
tree | 3fa0491b66b918b056c8dbbe64a52d16437245ec /gnu/services/xorg.scm | |
parent | 4bd43bbe73cfa5b6082078b9849fc09877e604df (diff) | |
download | patches-e0b85670cf29899edb0c23477301e10bb43831ef.tar patches-e0b85670cf29899edb0c23477301e10bb43831ef.tar.gz |
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.
Diffstat (limited to 'gnu/services/xorg.scm')
-rw-r--r-- | gnu/services/xorg.scm | 36 |
1 files 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)) |