From cf2abac8ec07ca421393df755211779b60739ae6 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 7 May 2015 23:07:54 +0200 Subject: artwork: Update to latest version. * gnu/artwork.scm (%artwork-repository): Update. * gnu/services/xorg.scm (%default-slim-theme-name): Change to "0.x". * gnu/system/grub.scm (%background-image): Change to GuixSD-fully-black-4-3.svg. --- gnu/services/xorg.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gnu/services/xorg.scm') diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index c687b46bc2..8fd003f96a 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -192,7 +192,7 @@ which should be passed to this script as the first argument. If not, the (define %default-slim-theme-name ;; This must be the name of the sub-directory in %DEFAULT-SLIM-THEME that ;; contains the actual theme files. - "0.8") + "0.x") (define* (slim-service #:key (slim slim) (allow-empty-passwords? #t) auto-login? -- cgit 1.4.1 From 04e4e6ab51f271298f9a001ba5c8c6ae6426fd64 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 8 May 2015 16:26:53 +0200 Subject: doc: Document sessions and ~/.xsession for SLiM. * gnu/services/xorg.scm (slim-service): Document session types and ~/.xsession. * doc/guix.texi (X Window): Adjust accordingly. --- doc/guix.texi | 13 +++++++++++++ gnu/services/xorg.scm | 13 +++++++++++++ 2 files changed, 26 insertions(+) (limited to 'gnu/services/xorg.scm') diff --git a/doc/guix.texi b/doc/guix.texi index 7504deab4e..b44811f3cb 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4968,6 +4968,19 @@ 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}. +@cindex X session + +SLiM automatically looks for session types described by the @file{.desktop} +files in @file{/run/current-system/profile/share/xsessions} and allows users +to choose a session from the log-in screen using @kbd{F1}. Packages such as +@var{xfce}, @var{sawfish}, and @var{ratpoison} provide @file{.desktop} files; +adding them to the system-wide set of packages automatically makes them +available at the log-in screen. + +In addition, @file{~/.xsession} files are honored. When available, +@file{~/.xsession} must be an executable that starts a window manager +and/or other X clients. + When @var{allow-empty-passwords?} is true, allow logins with an empty password. When @var{auto-login?} is true, log in automatically as @var{default-user}. diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 8fd003f96a..4821614ba2 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -207,6 +207,19 @@ which should be passed to this script as the first argument. If not, the turn starts the X display server with @var{startx}, a command as returned by @code{xorg-start-command}. +@cindex X session + +SLiM automatically looks for session types described by the @file{.desktop} +files in @file{/run/current-system/profile/share/xsessions} and allows users +to choose a session from the log-in screen using @kbd{F1}. Packages such as +@var{xfce}, @var{sawfish}, and @var{ratpoison} provide @file{.desktop} files; +adding them to the system-wide set of packages automatically makes them +available at the log-in screen. + +In addition, @file{~/.xsession} files are honored. When available, +@file{~/.xsession} must be an executable that starts a window manager +and/or other X clients. + When @var{allow-empty-passwords?} is true, allow logins with an empty password. When @var{auto-login?} is true, log in automatically as @var{default-user} with @var{auto-login-session}. -- cgit 1.4.1 From d1cdd7ba7a7bf6d0ea2ea5466d4bc978586f1f2f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 18:02:01 +0200 Subject: services: xorg: Make 'xorg-configuration-file' public. * gnu/services/xorg.scm (xorg-configuration-file): New procedure, with code formerly in 'xorg-start-command'. (xorg-start-command): Remove #:drivers and #:resolutions; add #:configuration-file; use it as well as 'xorg-configuration-file'. --- doc/guix.texi | 16 +++++++++++++--- gnu/services/xorg.scm | 36 ++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 17 deletions(-) (limited to 'gnu/services/xorg.scm') diff --git a/doc/guix.texi b/doc/guix.texi index 2e245bfcf9..36e68bbe9a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5250,13 +5250,23 @@ The G-Expression denoting the default SLiM theme and its name. @end defvr @deffn {Monadic Procedure} xorg-start-command [#:guile] @ - [#:drivers '()] [#:resolutions '()] [#:xorg-server @var{xorg-server}] + [#:configuration-file #f] [#:xorg-server @var{xorg-server}] Return a derivation that builds a @var{guile} script to start the X server -from @var{xorg-server}. Usually the X server is started by a login manager. +from @var{xorg-server}. @var{configuration-file} is the server configuration +file or a derivation that builds it; when omitted, the result of +@code{xorg-configuration-file} is used. + +Usually the X server is started by a login manager. +@end deffn + +@deffn {Monadic Procedure} xorg-configuration-file @ + [#:drivers '()] [#:resolutions '()] +Return a configuration file for the Xorg server containing search paths for +all the common drivers. @var{drivers} must be either the empty list, in which case Xorg chooses a graphics driver automatically, or a list of driver names that will be tried in -this order---e.g., @code{("modesetting" "vesa")}. +this order---e.g., @code{(\"modesetting\" \"vesa\")}. Likewise, when @var{resolutions} is the empty list, Xorg chooses an appropriate screen resolution; otherwise, it must be a list of diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 4821614ba2..a9afa2fef5 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -37,7 +37,8 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (ice-9 match) - #:export (xorg-start-command + #:export (xorg-configuration-file + xorg-start-command %default-slim-theme %default-slim-theme-name slim-service)) @@ -48,12 +49,9 @@ ;;; ;;; Code: -(define* (xorg-start-command #:key - (guile (canonical-package guile-2.0)) - (xorg-server xorg-server) - (drivers '()) (resolutions '())) - "Return a derivation that builds a @var{guile} script to start the X server -from @var{xorg-server}. Usually the X server is started by a login manager. +(define* (xorg-configuration-file #:key (drivers '()) (resolutions '())) + "Return a configuration file for the Xorg server containing search paths for +all the common drivers. @var{drivers} must be either the empty list, in which case Xorg chooses a graphics driver automatically, or a list of driver names that will be tried in @@ -62,7 +60,6 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}. Likewise, when @var{resolutions} is the empty list, Xorg chooses an appropriate screen resolution; otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}." - (define (device-section driver) (string-append " Section \"Device\" @@ -78,15 +75,14 @@ Section \"Screen\" SubSection \"Display\" Modes " (string-join (map (match-lambda - ((x y) - (string-append "\"" (number->string x) - "x" (number->string y) "\""))) + ((x y) + (string-append "\"" (number->string x) + "x" (number->string y) "\""))) resolutions)) " EndSubSection EndSection")) - (define (xserver.conf) - (text-file* "xserver.conf" " + (text-file* "xserver.conf" " Section \"Files\" FontPath \"" font-adobe75dpi "/share/fonts/X11/75dpi\" ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\" @@ -116,7 +112,19 @@ EndSection drivers) "\n"))) - (mlet %store-monad ((config (xserver.conf))) +(define* (xorg-start-command #:key + (guile (canonical-package guile-2.0)) + configuration-file + (xorg-server xorg-server)) + "Return a derivation that builds a @var{guile} script to start the X server +from @var{xorg-server}. @var{configuration-file} is the server configuration +file or a derivation that builds it; when omitted, the result of +@code{xorg-configuration-file} is used. + +Usually the X server is started by a login manager." + (mlet %store-monad ((config (if configuration-file + (return configuration-file) + (xorg-configuration-file)))) (define script ;; Write a small wrapper around the X server. #~(begin -- cgit 1.4.1 From 12422c9d3872f66c4eac5eb65824238c3e09be1a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 18:12:28 +0200 Subject: services: xorg: Allow extra config text to be added verbatim. * gnu/services/xorg.scm (xorg-configuration-file): Add #:extra-config and honor it. * doc/guix.texi (X Window): Adjust accordingly. --- doc/guix.texi | 6 +++++- gnu/services/xorg.scm | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) (limited to 'gnu/services/xorg.scm') diff --git a/doc/guix.texi b/doc/guix.texi index 36e68bbe9a..fd0d29cb8f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5260,7 +5260,7 @@ Usually the X server is started by a login manager. @end deffn @deffn {Monadic Procedure} xorg-configuration-file @ - [#:drivers '()] [#:resolutions '()] + [#:drivers '()] [#:resolutions '()] [#:extra-config '()] Return a configuration file for the Xorg server containing search paths for all the common drivers. @@ -5271,6 +5271,10 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}. Likewise, when @var{resolutions} is the empty list, Xorg chooses an appropriate screen resolution; otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}. + +Last, @var{extra-config} is a list of strings or objects appended to the +@code{text-file*} argument list. It is used to pass extra text to be added +verbatim to the configuration file. @end deffn @node Desktop Services diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index a9afa2fef5..e43bfcffe0 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -49,7 +49,8 @@ ;;; ;;; Code: -(define* (xorg-configuration-file #:key (drivers '()) (resolutions '())) +(define* (xorg-configuration-file #:key (drivers '()) (resolutions '()) + (extra-config '())) "Return a configuration file for the Xorg server containing search paths for all the common drivers. @@ -59,7 +60,11 @@ this order---e.g., @code{(\"modesetting\" \"vesa\")}. Likewise, when @var{resolutions} is the empty list, Xorg chooses an appropriate screen resolution; otherwise, it must be a list of -resolutions---e.g., @code{((1024 768) (640 480))}." +resolutions---e.g., @code{((1024 768) (640 480))}. + +Last, @var{extra-config} is a list of strings or objects appended to the +@code{text-file*} argument list. It is used to pass extra text to be added +verbatim to the configuration file." (define (device-section driver) (string-append " Section \"Device\" @@ -82,7 +87,7 @@ Section \"Screen\" EndSubSection EndSection")) - (text-file* "xserver.conf" " + (apply text-file* "xserver.conf" " Section \"Files\" FontPath \"" font-adobe75dpi "/share/fonts/X11/75dpi\" ModulePath \"" xf86-video-vesa "/lib/xorg/modules/drivers\" @@ -107,10 +112,13 @@ Section \"ServerFlags\" Option \"AllowMouseOpenFail\" \"on\" EndSection " - (string-join (map device-section drivers) "\n") + (string-join (map device-section drivers) "\n") "\n" (string-join (map (cut screen-section <> resolutions) drivers) - "\n"))) + "\n") + + "\n" + extra-config)) (define* (xorg-start-command #:key (guile (canonical-package guile-2.0)) -- cgit 1.4.1 From 1eca6c36adc00d88e6f29744aa2402f2a006be04 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 22:22:12 +0200 Subject: services: xorg: Assume STARTX is a regular value. * gnu/services/xorg.scm (slim-service): Expect STARTX to be a regular value, not a monadic value. --- gnu/services/xorg.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gnu/services/xorg.scm') diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index e43bfcffe0..7c875a1ae1 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -246,7 +246,9 @@ theme to use. In that case, @var{theme-name} specifies the name of the theme." (define (slim.cfg) - (mlet %store-monad ((startx (or startx (xorg-start-command))) + (mlet %store-monad ((startx (if startx + (return startx) + (xorg-start-command))) (xinitrc (xinitrc #:fallback-session auto-login-session))) (text-file* "slim.cfg" " -- cgit 1.4.1 From c2ee19e6850960ee613c43af3937b1ce11d663f3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 21 May 2015 22:32:34 +0200 Subject: services: xorg: Add xf86-input-libinput to the server's module path. * gnu/services/xorg.scm (xorg-configuration-file): Add XF86-INPUT-LIBINPUT. --- gnu/services/xorg.scm | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gnu/services/xorg.scm') diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 7c875a1ae1..9ee88170e4 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -99,6 +99,12 @@ Section \"Files\" ModulePath \"" xf86-video-nouveau "/lib/xorg/modules/drivers\" ModulePath \"" xf86-video-nv "/lib/xorg/modules/drivers\" ModulePath \"" xf86-video-sis "/lib/xorg/modules/drivers\" + + # Libinput is the new thing and is recommended over evdev/synaptics + # by those who know: + # . + ModulePath \"" xf86-input-libinput "/lib/xorg/modules/input\" + ModulePath \"" xf86-input-evdev "/lib/xorg/modules/input\" ModulePath \"" xf86-input-keyboard "/lib/xorg/modules/input\" ModulePath \"" xf86-input-mouse "/lib/xorg/modules/input\" -- cgit 1.4.1