services: slim: Use /run/current-system/profile/share/xsessions as sessiondir.
* gnu/services/xorg.scm (<session-type>, %windowmaker-session-type) (%ratposion-session-type, %sawfish-session-type, %default-xsessions) (xsessions-directory): Remove. (slim-service): Remove #:sessions parameter. [slim.cfg]: Use /run/current-system/profile/share/xsessions as sessiondir. * doc/guix.texi <X Window>: Adjust accordingly.
This commit is contained in:
		
							parent
							
								
									4e2f5b8f8f
								
							
						
					
					
						commit
						4bd43bbe73
					
				
					 2 changed files with 5 additions and 96 deletions
				
			
		|  | @ -4619,8 +4619,7 @@ started by the @dfn{login manager}, currently SLiM. | |||
| @deffn {Monadic Procedure} slim-service [#:allow-empty-passwords? #f] @ | ||||
|   [#:auto-login? #f] [#:default-user ""] [#:startx] @ | ||||
|   [#:theme @var{%default-slim-theme}] @ | ||||
|   [#:theme-name @var{%default-slim-theme-name}] @ | ||||
|   [#:sessions @var{%default-sessions}] | ||||
|   [#:theme-name @var{%default-slim-theme-name}] | ||||
| Return a service that spawns the SLiM graphical login manager, which in | ||||
| turn starts the X display server with @var{startx}, a command as returned by | ||||
| @code{xorg-start-command}. | ||||
|  | @ -4633,28 +4632,8 @@ If @var{theme} is @code{#f}, the use the default log-in theme; otherwise | |||
| @var{theme} must be a gexp denoting the name of a directory containing the | ||||
| theme to use.  In that case, @var{theme-name} specifies the name of the | ||||
| theme. | ||||
| 
 | ||||
| Last, @var{session} is a list of @code{<session-type>} objects denoting the | ||||
| available session types that can be chosen from the log-in screen.  The first | ||||
| one is chosen by default. | ||||
| @end deffn | ||||
| 
 | ||||
| @defvr {Scheme Variable} %default-sessions | ||||
| The list of default session types used by SLiM. | ||||
| @end defvr | ||||
| 
 | ||||
| @defvr {Scheme Variable} %ratpoison-session-type | ||||
| Session type using the Ratpoison window manager. | ||||
| @end defvr | ||||
| 
 | ||||
| @defvr {Scheme Variable} %windowmaker-session-type | ||||
| Session type using the WindowMaker window manager. | ||||
| @end defvr | ||||
| 
 | ||||
| @defvr {Scheme Variable} %sawfish-session-type | ||||
| Session type using the Sawfish window manager. | ||||
| @end defvr | ||||
| 
 | ||||
| @defvr {Scheme Variable} %default-theme | ||||
| @defvrx {Scheme Variable} %default-theme-name | ||||
| The G-Expression denoting the default SLiM theme and its name. | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| ;;; GNU Guix --- Functional package management for GNU | ||||
| ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> | ||||
| ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> | ||||
| ;;; | ||||
| ;;; This file is part of GNU Guix. | ||||
| ;;; | ||||
|  | @ -25,9 +26,7 @@ | |||
|   #:use-module (gnu packages xorg) | ||||
|   #:use-module (gnu packages gl) | ||||
|   #:use-module (gnu packages slim) | ||||
|   #:use-module (gnu packages ratpoison) | ||||
|   #:use-module (gnu packages gnustep) | ||||
|   #:use-module (gnu packages sawfish) | ||||
|   #:use-module (gnu packages admin) | ||||
|   #:use-module (gnu packages bash) | ||||
|   #:use-module (guix gexp) | ||||
|  | @ -39,14 +38,6 @@ | |||
|   #:use-module (srfi srfi-26) | ||||
|   #:use-module (ice-9 match) | ||||
|   #:export (xorg-start-command | ||||
|             %default-xsessions | ||||
|             %ratpoison-session-type | ||||
|             %windowmaker-session-type | ||||
|             %sawfish-session-type | ||||
| 
 | ||||
|             session-type? | ||||
|             session-type-name | ||||
| 
 | ||||
|             %default-slim-theme | ||||
|             %default-slim-theme-name | ||||
|             slim-service)) | ||||
|  | @ -194,61 +185,6 @@ which should be passed to this script as the first argument.  If not, the | |||
| ;;; SLiM log-in manager. | ||||
| ;;; | ||||
| 
 | ||||
| (define-record-type* <session-type> session-type make-session-type | ||||
|   session-type? | ||||
|   (name         session-type-name)                ;string | ||||
|   (executable   session-type-executable))         ;string-valued gexp | ||||
| 
 | ||||
| (define %windowmaker-session-type | ||||
|   (session-type | ||||
|    (name "WindowMaker") | ||||
|    (executable #~(string-append #$windowmaker "/bin/wmaker")))) | ||||
| 
 | ||||
| (define %ratpoison-session-type | ||||
|   (session-type | ||||
|    (name "Ratpoison") | ||||
|    (executable #~(string-append #$ratpoison "/bin/ratpoison")))) | ||||
| 
 | ||||
| (define %sawfish-session-type | ||||
|   (session-type | ||||
|    (name "Sawfish") | ||||
|    (executable #~(string-append #$sawfish "/bin/sawfish")))) | ||||
| 
 | ||||
| (define %default-xsessions | ||||
|   ;; Default session types available to the log-in manager. | ||||
|   (list %windowmaker-session-type %ratpoison-session-type)) | ||||
| 
 | ||||
| (define (xsessions-directory sessions) | ||||
|   "Return a directory containing SESSIONS, a list of <session-type> objects. | ||||
| The alphabetical order of the files in that directory match the order of the | ||||
| elements in SESSIONS." | ||||
|   (define builder | ||||
|     #~(begin | ||||
|         (use-modules (srfi srfi-1) | ||||
|                      (ice-9 format)) | ||||
| 
 | ||||
|         (mkdir #$output) | ||||
|         (chdir #$output) | ||||
|         (fold (lambda (name executable number) | ||||
|                 ;; Create file names such that the order of the items in | ||||
|                 ;; SESSION is respected.  SLiM gets them in lexicographic | ||||
|                 ;; order and uses the first one as the default session. | ||||
|                 (let ((file (format #f "~2,'0d-~a.desktop" | ||||
|                                     number (string-downcase name)))) | ||||
|                   (call-with-output-file file | ||||
|                     (lambda (port) | ||||
|                       (format port "[Desktop Entry] | ||||
| Name=~a | ||||
| Exec=~a | ||||
| Type=Application~%" | ||||
|                               name executable))) | ||||
|                   (+ 1 number))) | ||||
|               1 | ||||
|               '#$(map session-type-name sessions) | ||||
|               (list #$@(map session-type-executable sessions))))) | ||||
| 
 | ||||
|   (gexp->derivation "xsessions-dir" builder)) | ||||
| 
 | ||||
| (define %default-slim-theme | ||||
|   ;; Theme based on work by Felipe López. | ||||
|   #~(string-append #$%artwork-repository "/slim")) | ||||
|  | @ -264,7 +200,6 @@ Type=Application~%" | |||
|                        (theme %default-slim-theme) | ||||
|                        (theme-name %default-slim-theme-name) | ||||
|                        (xauth xauth) (dmd dmd) (bash bash) | ||||
|                        (sessions %default-xsessions) | ||||
|                        (auto-login-session #~(string-append #$windowmaker | ||||
|                                                             "/bin/wmaker")) | ||||
|                        startx) | ||||
|  | @ -279,17 +214,12 @@ password.  When @var{auto-login?} is true, log in automatically as | |||
| If @var{theme} is @code{#f}, the use the default log-in theme; otherwise | ||||
| @var{theme} must be a gexp denoting the name of a directory containing the | ||||
| theme to use.  In that case, @var{theme-name} specifies the name of the | ||||
| theme. | ||||
| 
 | ||||
| Last, @var{session} is a list of @code{<session-type>} objects denoting the | ||||
| available session types that can be chosen from the log-in screen.  The first | ||||
| one is chosen by default." | ||||
| theme." | ||||
| 
 | ||||
|   (define (slim.cfg) | ||||
|     (mlet %store-monad ((startx  (or startx (xorg-start-command))) | ||||
|                         (xinitrc (xinitrc #:fallback-session | ||||
|                                           auto-login-session)) | ||||
|                         (sessiondir (xsessions-directory sessions))) | ||||
|                                           auto-login-session))) | ||||
|       (text-file* "slim.cfg"  " | ||||
| default_path /run/current-system/profile/bin | ||||
| default_xserver " startx " | ||||
|  | @ -300,7 +230,7 @@ authfile /var/run/slim.auth | |||
| # The login command.  '%session' is replaced by the chosen session name, one | ||||
| # of the names specified in the 'sessions' setting: 'wmaker', 'xfce', etc. | ||||
| login_cmd  exec " xinitrc " %session | ||||
| sessiondir " sessiondir " | ||||
| sessiondir /run/current-system/profile/share/xsessions | ||||
| session_msg session (F1 to change): | ||||
| 
 | ||||
| halt_cmd " dmd "/sbin/halt | ||||
|  |  | |||
		Reference in a new issue