me
/
guix
Archived
1
0
Fork 0

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.
master
宋文武 2015-03-08 20:57:53 +08:00
parent 4bd43bbe73
commit e0b85670cf
1 changed files with 18 additions and 18 deletions

View File

@ -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 ;; environment variables that one gets when logging in on a tty, for
;; instance. ;; instance.
(let* ((pw (getpw (getuid))) (let* ((pw (getpw (getuid)))
(shell (passwd:shell pw)) (shell (passwd:shell pw)))
(st (stat command #f))) ;; Close any open file descriptors. This is all the more
(when (and st (not (zero? (logand (stat:mode st) #o100)))) ;; important that SLiM itself exec's us directly without closing
;; Close any open file descriptors. This is all the more ;; its own file descriptors!
;; important that SLiM itself exec's us directly without closing (close-all-fdes)
;; its own file descriptors!
(close-all-fdes)
;; The '--login' option is supported at least by Bash and zsh. ;; The '--login' option is supported at least by Bash and zsh.
(execl shell shell "--login" "-c" (execl shell shell "--login" "-c"
(string-join (cons command args)))))) (string-join (cons command args)))))
(let ((home (getenv "HOME")) (let* ((home (getenv "HOME"))
(session (match (command-line) (xsession-file (string-append home "/.xsession"))
((_ x) x) (session (match (command-line)
(_ #$fallback-session)))) ((_ x) x)
;; First, try to run ~/.xsession. (_ #$fallback-session))))
(exec-from-login-shell (string-append home "/.xsession")) (if (file-exists? xsession-file)
;; Then try to start the specified session. ;; Run ~/.xsession when it exists.
(exec-from-login-shell session)))) (exec-from-login-shell xsession-file)
;; Otherwise, start the specified session.
(exec-from-login-shell session)))))
(gexp->script "xinitrc" builder)) (gexp->script "xinitrc" builder))