[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/06: services: slim: Allow SLiM to be started on multiple ttys.
From: |
guix-commits |
Subject: |
05/06: services: slim: Allow SLiM to be started on multiple ttys. |
Date: |
Tue, 7 May 2019 09:47:01 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 61569171d03146f41ba1b9aedf29fd8fa78d6102
Author: Diego Nicola Barbato <address@hidden>
Date: Sun Apr 28 15:52:50 2019 +0200
services: slim: Allow SLiM to be started on multiple ttys.
This change makes it possible to add multiple SLiM services to an operating
system configuration by setting the new 'display' and 'vt' fields in their
configurations to different values. Each SLiM service will get its own
authfile, logfile, lockfile, and shepherd service, which will start SLiM on
a
different tty.
* gnu/services/xorg.scm: Export slim-configuration-display and
slim-configuration-vt.
(<slim-configuration>)[display, vt]: New fields.
(slim-shepherd-service): Refactor let.
[slim.cfg]: Use new fields for setting display_name, xserver_arguments,
authfile, lockfile, and logfile.
[shepherd-service][provision]: Name the shepherd service according to the
value of 'vt'.
[shepherd-service][start]: Delete the right lockfile.
Signed-off-by: Ludovic Courtès <address@hidden>
---
gnu/services/xorg.scm | 85 +++++++++++++++++++++++++++++----------------------
1 file changed, 49 insertions(+), 36 deletions(-)
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 44dcec4..65e9d48 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -83,6 +83,8 @@
slim-configuration-shepherd
slim-configuration-auto-login-session
slim-configuration-xorg
+ slim-configuration-display
+ slim-configuration-vt
slim-configuration-sessreg
slim-service-type
@@ -488,6 +490,10 @@ desktop session from the system or user profile will be
used."
(default #f))
(xorg-configuration slim-configuration-xorg
(default (xorg-configuration)))
+ (display slim-configuration-display
+ (default ":0"))
+ (vt slim-configuration-vt
+ (default "vt7"))
(sessreg slim-configuration-sessreg
(default sessreg)))
@@ -499,20 +505,26 @@ desktop session from the system or user profile will be
used."
(slim-configuration-allow-empty-passwords? config))))
(define (slim-shepherd-service config)
- (define slim.cfg
- (let ((xinitrc (xinitrc #:fallback-session
- (slim-configuration-auto-login-session config)))
- (xauth (slim-configuration-xauth config))
- (startx (xorg-start-command (slim-configuration-xorg config)))
- (shepherd (slim-configuration-shepherd config))
- (theme-name (slim-configuration-theme-name config))
- (sessreg (slim-configuration-sessreg config)))
+ (let* ((xinitrc (xinitrc #:fallback-session
+ (slim-configuration-auto-login-session config)))
+ (xauth (slim-configuration-xauth config))
+ (startx (xorg-start-command (slim-configuration-xorg config)))
+ (display (slim-configuration-display config))
+ (vt (slim-configuration-vt config))
+ (shepherd (slim-configuration-shepherd config))
+ (theme-name (slim-configuration-theme-name config))
+ (sessreg (slim-configuration-sessreg config))
+ (lockfile (string-append "/var/run/slim-" vt ".lock")))
+ (define slim.cfg
(mixed-text-file "slim.cfg" "
default_path /run/current-system/profile/bin
default_xserver " startx "
-xserver_arguments :0 vt7
+display_name " display "
+xserver_arguments " vt "
xauth_path " xauth "/bin/xauth
-authfile /var/run/slim.auth
+authfile /var/run/slim-" vt ".auth
+lockfile " lockfile "
+logfile /var/log/slim-" vt ".log
# The login command. '%session' is replaced by the chosen session name, one
# of the names specified in the 'sessions' setting: 'wmaker', 'xfce', etc.
@@ -530,32 +542,33 @@ reboot_cmd " shepherd "/sbin/reboot\n"
"")
(if theme-name
(string-append "current_theme " theme-name "\n")
- ""))))
-
- (define theme
- (slim-configuration-theme config))
-
- (list (shepherd-service
- (documentation "Xorg display server")
- (provision '(xorg-server))
- (requirement '(user-processes host-name udev))
- (start
- #~(lambda ()
- ;; A stale lock file can prevent SLiM from starting, so remove
it to
- ;; be on the safe side.
- (false-if-exception (delete-file "/var/run/slim.lock"))
-
- (fork+exec-command
- (list (string-append #$(slim-configuration-slim config)
- "/bin/slim")
- "-nodaemon")
- #:environment-variables
- (list (string-append "SLIM_CFGFILE=" #$slim.cfg)
- #$@(if theme
- (list #~(string-append "SLIM_THEMESDIR=" #$theme))
- #~())))))
- (stop #~(make-kill-destructor))
- (respawn? #t))))
+ "")))
+
+ (define theme
+ (slim-configuration-theme config))
+
+ (list (shepherd-service
+ (documentation "Xorg display server")
+ (provision (list (symbol-append 'xorg-server-
+ (string->symbol vt))))
+ (requirement '(user-processes host-name udev))
+ (start
+ #~(lambda ()
+ ;; A stale lock file can prevent SLiM from starting, so remove
it to
+ ;; be on the safe side.
+ (false-if-exception (delete-file lockfile))
+
+ (fork+exec-command
+ (list (string-append #$(slim-configuration-slim config)
+ "/bin/slim")
+ "-nodaemon")
+ #:environment-variables
+ (list (string-append "SLIM_CFGFILE=" #$slim.cfg)
+ #$@(if theme
+ (list #~(string-append "SLIM_THEMESDIR="
#$theme))
+ #~())))))
+ (stop #~(make-kill-destructor))
+ (respawn? #t)))))
(define slim-service-type
(service-type (name 'slim)
- branch master updated (bdd30bf -> dbef901), guix-commits, 2019/05/07
- 03/06: gnu: gnome-control-center: Patch file name of 'nm-connection-editor'., guix-commits, 2019/05/07
- 01/06: environment: Non ad-hoc mode also honors transformation options., guix-commits, 2019/05/07
- 02/06: gnu: gnome-control-center: Patch file name of 'gkbd-keyboard-display'., guix-commits, 2019/05/07
- 04/06: gnu: slim: Allow customisation of Xorg display., guix-commits, 2019/05/07
- 06/06: doc: Document 'display' and 'vt' fields of 'slim-configuration'., guix-commits, 2019/05/07
- 05/06: services: slim: Allow SLiM to be started on multiple ttys.,
guix-commits <=