~ruther/guix-local

e0b85670cf29899edb0c23477301e10bb43831ef — 宋文武 11 years ago 4bd43bb
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.
1 files changed, 18 insertions(+), 18 deletions(-)

M gnu/services/xorg.scm
M gnu/services/xorg.scm => gnu/services/xorg.scm +18 -18
@@ 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))