From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:47454) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h7zlU-0001R3-BV for guix-patches@gnu.org; Sun, 24 Mar 2019 05:50:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h7zlS-0007Yu-HN for guix-patches@gnu.org; Sun, 24 Mar 2019 05:50:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:42474) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h7zlS-0007Ym-CU for guix-patches@gnu.org; Sun, 24 Mar 2019 05:50:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1h7zlS-0008S3-06 for guix-patches@gnu.org; Sun, 24 Mar 2019 05:50:02 -0400 Subject: [bug#34929] [PATCH 06/12] services: xorg: Define and record type. Resent-Message-ID: Received: from eggs.gnu.org ([209.51.188.92]:46956) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h7zka-0000Zb-CU for guix-patches@gnu.org; Sun, 24 Mar 2019 05:49:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h7zhk-00066T-0Z for guix-patches@gnu.org; Sun, 24 Mar 2019 05:46:13 -0400 Received: from lepiller.eu ([2a00:5884:8208::1]:42768) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h7zhj-00065Q-M3 for guix-patches@gnu.org; Sun, 24 Mar 2019 05:46:11 -0400 Received: from localhost (89-92-10-229.hfc.dyn.abo.bbox.fr [89.92.10.229]) by lepiller.eu (OpenSMTPD) with ESMTPSA id b3577651 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO) for ; Sun, 24 Mar 2019 09:46:09 +0000 (UTC) Date: Sun, 24 Mar 2019 10:46:02 +0100 From: Julien Lepiller Message-ID: <20190324104602.3a4a7131@lepiller.eu> In-Reply-To: <20190320230435.25458-6-ludo@gnu.org> References: <20190320230435.25458-1-ludo@gnu.org> <20190320230435.25458-6-ludo@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 34929@debbugs.gnu.org Le Thu, 21 Mar 2019 00:04:29 +0100, Ludovic Court=C3=A8s a =C3=A9crit : I think there's a typo in the subject. My email client did something weird with your patch :/ > * gnu/services/xorg.scm (): New record type. > (xorg-configuration-file): Remove. > (xorg-wrapper): Remove #:modules, #:configuration-file, and > #:xorg-server; add optional 'config' parameter instead. Adjust > accordingly. > (xorg-start-command): Likewise. > * doc/guix.texi (X Window): Document 'xorg-configuration'. Update > 'xorg-start-command' documentation. Remove 'xorg-configuration-file' > documentation. > --- > doc/guix.texi | 134 > ++++++++++++++---------------------------- gnu/services/xorg.scm | > 115 ++++++++++++++++++------------------ 2 files changed, 101 > insertions(+), 148 deletions(-) >=20 > diff --git a/doc/guix.texi b/doc/guix.texi > index 622740b11c..2363874cf9 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -13310,99 +13310,53 @@ type @code{}. > @end example > @end deffn > =20 > -@deffn {Scheme Procedure} xorg-start-command @ > - [#:modules %default-xorg-modules] @ > - [#:fonts %default-xorg-fonts] @ > - [#:configuration-file (xorg-configuration-file @dots{})] @ > - [#:xorg-server @var{xorg-server}] > - [#:xserver-arguments '("-nolisten" "tcp")] > -Return a @code{startx} script in which @var{modules}, a list of X > module -packages, and @var{fonts}, a list of X font directories, are > available. See -@code{xorg-wrapper} for more details on the > arguments. The result should be -used in place of @code{startx}. > - > -Usually the X server is started by a login manager. > -@end deffn > - > -@cindex @code{-listen tcp}, for X11. > -This procedure is useful to override command line options for the X > server, -such as having it listen to over TCP: > - > -@example > -(operating-system > - ... > - (services > - (modify-services %desktop-services > - (slim-service-type config =3D> > - (slim-configuration > - (inherit config) > - (startx (xorg-start-command > - #:xserver-arguments '("-listen" "tcp")))))))) > -@end example > - > -@deffn {Scheme Procedure} xorg-configuration-file @ > - [#:modules %default-xorg-modules] @ > - [#:fonts %default-xorg-fonts] @ > - [#:drivers '()] [#:resolutions '()] [#:extra-config '()] > -Return a configuration file for the Xorg server containing search > paths for -all the common drivers. > - > -@var{modules} must be a list of @dfn{module packages} loaded by the > Xorg +@cindex Xorg, configuration > +@deftp {Data Type} xorg-configuration > +This data type represents the configuration of the Xorg graphical > display +server. Note that there is not Xorg service; instead, the X ^ typo > server is started +by a ``display manager'' such as GDM, SDDM, and > SLiM. Thus, the configuration +of these display managers aggregates > an @code{xorg-configuration} record. + > +@table @asis > +@item @code{modules} (default: @code{%default-xorg-modules}) > +This is a list of @dfn{module packages} loaded by the Xorg > server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, > and so on. -@var{fonts} must be a list of font directories to add to > the server's -@dfn{font path}. > - > -@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")}. - > -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 -configuration file. It is used to pass extra text to be > -added verbatim to the configuration file. > - > -@cindex keymap > -@cindex keyboard layout > -This procedure is especially useful to configure a different > keyboard layout -than the default US keymap. For instance, to use > the ``b=C3=A9po'' keymap by -default on the display manager: > - > -@example > -(define bepo-evdev > - "Section \"InputClass\" > - Identifier \"evdev keyboard catchall\" > - Driver \"evdev\" > - MatchIsKeyboard \"on\" > - Option \"xkb_layout\" \"fr\" > - Option \"xkb_variant\" \"bepo\" > -EndSection") > - > -(operating-system > - ... > - (services > - (modify-services %desktop-services > - (slim-service-type config =3D> > - (slim-configuration > - (inherit config) > - (startx (xorg-start-command > - #:configuration-file > - (xorg-configuration-file > - #:extra-config > - (list bepo-evdev))))))))) > -@end example > - > -The @code{MatchIsKeyboard} line specifies that we only apply the > configuration -to keyboards. Without this line, other devices such > as touchpad may not work -correctly because they will be attached to > the wrong driver. In this example, -the user typically used > @code{setxkbmap fr bepo} to set their favorite keymap -once logged > in. The first argument corresponds to the layout, while the second > -argument corresponds to the variant. The @code{xkb_variant} line > can be omitted -to select the default variant. + > +@item @code{fonts} (default: @code{%default-xorg-fonts}) > +This is a list of font directories to add to the server's @dfn{font > path}. + > +@item @code{drivers} (default: @code{'()}) > +This 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")}. > + > +@item @code{resolutions} (default: @code{'()}) > +When @code{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))}. > + > +@item @code{extra-config} (default: @code{'()}) > +This is a list of strings or objects appended to the configuration > file. It +is used to pass extra text to be added verbatim to the > configuration file. + > +@item @code{server} (default: @code{xorg-server}) > +This is the package providing the Xorg server. > + > +@item @code{server-arguments} (default: > @code{%default-xorg-server-arguments}) +This is the list of > command-line arguments to pass to the X server. The +default is > @code{-nolisten tcp}. +@end table > +@end deftp > + > +@deffn {Scheme Procedure} xorg-start-command [@var{config}] > +Return a @code{startx} script in which the modules, fonts, etc. > specified +in @var{config}, are available. The result should be used > in place of +@code{startx}. > + > +Usually the X server is started by a login manager. > @end deffn > =20 > + > @deffn {Scheme Procedure} screen-locker-service @var{package} > [@var{program}] Add @var{package}, a package for a screen locker or > screen saver whose command is @var{program}, to the set of setuid > programs and add a PAM entry diff --git a/gnu/services/xorg.scm > b/gnu/services/xorg.scm index 8381a7ed04..3c547c1303 100644 > --- a/gnu/services/xorg.scm > +++ b/gnu/services/xorg.scm > @@ -48,7 +48,16 @@ > #:use-module (srfi srfi-9) > #:use-module (srfi srfi-26) > #:use-module (ice-9 match) > - #:export (xorg-configuration-file > + #:export (xorg-configuration > + xorg-configuration? > + xorg-configuration-modules > + xorg-configuration-fonts > + xorg-configuration-drivers > + xorg-configuration-resolutions > + xorg-configuration-extra-config > + xorg-configuration-server > + xorg-configuration-server-arguments > + > %default-xorg-modules > %default-xorg-fonts > xorg-wrapper > @@ -122,33 +131,36 @@ > "/share/fonts/X11/misc") > (file-append font-adobe75dpi "/share/fonts/X11/75dpi"))) > =20 > -(define* (xorg-configuration-file #:key > - (modules %default-xorg-modules) > - (fonts %default-xorg-fonts) > - (drivers '()) (resolutions '()) > - (extra-config '())) > - "Return a configuration file for the Xorg server containing search > paths for -all the common drivers. > +(define %default-xorg-server-arguments > + ;; Default command-line arguments for X. > + '("-nolisten" "tcp")) > =20 > -@var{modules} must be a list of @dfn{module packages} loaded by the > Xorg -server---e.g., @code{xf86-video-vesa}, > @code{xf86-input-keyboard}, and so on. -@var{fonts} must be a list of > font directories to add to the server's -@dfn{font path}. > +;; Configuration of an Xorg server. > +(define-record-type* > + xorg-configuration make-xorg-configuration > + xorg-configuration? > + (modules xorg-configuration-modules ;list of packages > + (default %default-xorg-modules)) > + (fonts xorg-configuration-fonts ;list of packges ^ typo > + (default %default-xorg-fonts)) > + (drivers xorg-configuration-drivers ;list of strings > + (default '())) > + (resolutions xorg-configuration-resolutions ;list of tuples > + (default '())) > + (extra-config xorg-configuration-extra-config ;list of strings > + (default '())) > + (server xorg-configuration-server ;package > + (default xorg-server)) > + (server-arguments xorg-configuration-server-arguments ;list of > strings > + (default %default-xorg-server-arguments))) The rest lgtm :)