aboutsummaryrefslogtreecommitdiff
path: root/gnu/services/xorg.scm
diff options
context:
space:
mode:
author宋文武 <iyzsong@gmail.com>2015-03-08 20:57:53 +0800
committer宋文武 <iyzsong@gmail.com>2015-03-13 22:56:40 +0800
commite0b85670cf29899edb0c23477301e10bb43831ef (patch)
tree3fa0491b66b918b056c8dbbe64a52d16437245ec /gnu/services/xorg.scm
parent4bd43bbe73cfa5b6082078b9849fc09877e604df (diff)
downloadgnu-guix-e0b85670cf29899edb0c23477301e10bb43831ef.tar
gnu-guix-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.scm36
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))