From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 18 04:49:56 2023 Received: (at submit) by debbugs.gnu.org; 18 Jun 2023 08:49:56 +0000 Received: from localhost ([127.0.0.1]:53162 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qAo6d-0005CP-Lt for submit@debbugs.gnu.org; Sun, 18 Jun 2023 04:49:56 -0400 Received: from lists.gnu.org ([209.51.188.17]:47542) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qAo6a-0005C5-LA for submit@debbugs.gnu.org; Sun, 18 Jun 2023 04:49:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qAo6a-0005Gz-Ez for guix-patches@gnu.org; Sun, 18 Jun 2023 04:49:52 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qAo6X-0001xl-QW; Sun, 18 Jun 2023 04:49:52 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-3f90b4ac529so5390815e9.0; Sun, 18 Jun 2023 01:49:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687078187; x=1689670187; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=cYUsGkRe2rKsTrlSLm9OKezfz3JDQcrXjsDwAiQi+9Q=; b=oRJylU7OlFndtjjiLf1bWFQ/zuyGXrb5kpwFprKWFBH1OlwOw1GNLwbUTfXlz0F6Y0 Bwcl4fUTeT3sfLjw3draeUozzaeIG9Vxa+CRyzWWg3lA0Q6sVmc05LfGmdBFAqXbC0h4 AMira2h4lVlEgWBCeWKlFv5kWISxBiOHENWeDjjfPDJb4VtFYrd2QSzvYYnskuiRkszL UO6jKh3n5bJsK6oNQqnf9tuEf6kfOLHS3z4jo3d21p9Sm7cYYBFUwR/8GJfF/GlLd2yM p1I5BmS2FrzUe6m4YH567cXnuut6lRLmEpL81ItbWUWZB1STFOpWdeX94wXDZ9Rk0t99 VBSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687078187; x=1689670187; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cYUsGkRe2rKsTrlSLm9OKezfz3JDQcrXjsDwAiQi+9Q=; b=GYAZcGKkRLHmunH1+1OELYD9u2dBbYcH2uqZdGrKx+EQNwG18ETNumND3pB2oGzI12 76jPvpRr5b/G5Lm3b6ImHQexq0NqbJaPUDpjKCXiaKGewh14jJKCKKiBzgquODi0ZvPb D7zKpXkZ/FFf/LVM0tbnVPBduWqOPy2q/KYC1KPcjI06PuHqy5fk+FpYT1mIm8pzmIbj 3inYiqXXO4qwT/MzilTDcDwGKpdP/oCUZ7JivzXaPgk4xOCAlLVmXkCHC78fJwltLxwW 0k7q25h6srVWJq6xnbtNEKVoP+LA7eyq/DbDDBCVeVUk3sW6f2Aft0zD5ltY2tkkfa/q GyDA== X-Gm-Message-State: AC+VfDwuvzNMPDtAbJ0lipz9Nuiko+TnuRMPNt9YDyaYT6VUKu09Dkrg evEKeexLadEkDowMHwaWoCnZQ1+d6xEJeA== X-Google-Smtp-Source: ACHHUZ6SHapk94J0lalH0hlNEAMiUZCr0461xWub0WC8oQN+fjA6/aTEIWMF2GYDsfmpeXb2u0QEQA== X-Received: by 2002:a1c:f718:0:b0:3f7:e65b:5252 with SMTP id v24-20020a1cf718000000b003f7e65b5252mr5505773wmh.1.1687078187374; Sun, 18 Jun 2023 01:49:47 -0700 (PDT) Received: from localhost ([37.46.46.3]) by smtp.gmail.com with ESMTPSA id t8-20020a7bc3c8000000b003f6129d2e30sm7233892wmj.1.2023.06.18.01.49.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Jun 2023 01:49:46 -0700 (PDT) From: Efraim Flashner To: guix-patches@gnu.org, =?UTF-8?q?Ludovic=20Court=C3=A8s?= Subject: [PATCH v2] home: Add inputrc service. Date: Sun, 18 Jun 2023 11:49:15 +0300 Message-Id: X-Mailer: git-send-email 2.40.1 In-Reply-To: <87pm5vseyu.fsf@gnu.org> References: <87pm5vseyu.fsf@gnu.org> MIME-Version: 1.0 X-Debbugs-Cc: ( , Andrew Tropin , Ludovic Courtès Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=efraim.flashner@gmail.com; helo=mail-wm1-x32a.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: submit Cc: paren@disroot.org, 63909@debbugs.gnu.org, Efraim Flashner , Andrew Tropin X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) * gnu/home/services/shells.scm (home-inputrc-service-type, home-inputrc-configuration): New variables. (serialize-inputrc-key-bindings, serialize-inputrc-variables, serialize-inputrc-conditional-constructs, serialize-inputrc-extra-content): New procedures. * doc/guix.texi (Shells Home Services): Document it. --- doc/guix.texi | 129 +++++++++++++++++++++++++++++++++ gnu/home/services/shells.scm | 134 ++++++++++++++++++++++++++++++++++- 2 files changed, 262 insertions(+), 1 deletion(-) diff --git a/doc/guix.texi b/doc/guix.texi index 9232c82b4b..72ab941243 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -42797,6 +42797,135 @@ Shells Home Services @end deftp +@subsubheading Inputrc Profile Service +@cindex inputrc +@cindex readline + +The @uref{https://tiswww.cwru.edu/php/chet/readline/rltop.html, GNU +Readline package} includes Emacs and vi editing modes, with the ability +to customize the configuration with settings in the @file{~/.inputrc} +file. With the @code{gnu home services shells} module, you can setup +your readline configuration in a predictable manner, as shown below. +For more information about configuring an @file{~/.inputrc} file, +@pxref{Readline Init File,,, readline, GNU Readline}. + +@defvar home-inputrc-service-type + +This is the service to setup various @file{.inputrc} configurations. The +settings in @file{.inputrc} are read by all programs which are linked +with GNU Readline. + +Here is an example of a service and its configuration that you could add +to the @code{services} field of your @code{home-environment}: + +@lisp +(service home-inputrc-service-type + (home-inputrc-configuration + (key-bindings + `(("Control-l" . "clear-screen"))) + (variables + `(("bell-style" . "visible") + ("colored-completion-prefix" . #t) + ("editing-mode" . "vi") + ("show-mode-in-prompt" . #t))) + (conditional-constructs + `(("$if mode=vi" . + ,(home-inputrc-configuration + (variables + `(("colored-stats" . #t) + ("enable-bracketed-paste" . #t))))) + ("$else" . + ,(home-inputrc-configuration + (variables + `(("show-all-if-ambiguous" . #t))))) + ("endif" . #t) + ("$include" . "/etc/inputrc") + ("$include" . ,(file-append + (specification->package "readline") + "/etc/inputrc")))))) +@end lisp + +The example above starts with a combination of @code{key-bindings} and +@code{variables}. The @code{conditional-constructs} show how it is +possible to add conditionals and includes. In the example above +@code{colored-stats} is only enabled if the editing mode is @code{vi} +style, and it also reads any additional configuration located in +@file{/etc/inputrc} or in @file{/gnu/store/@dots{}-readline/etc/inputrc}. + +The value associated with a @code{home-inputrc-service-type} instance +must be a @code{home-inputrc-configuration} record, as described below. + +@end defvar + +@anchor{home-inputrc-configuration} +@deftp {Data Type} home-inputrc-configuration +Available @code{home-inputrc-configuration} fields are: + +@table @asis +@item @code{key-bindings} (default: @code{'()}) (type: alist) +Association list of readline key bindings to be added to the +@file{~/.inputrc} file. + +@lisp +'((\"Control-l\" . \"clear-screen\")) +@end lisp + +turns into + +@example +Control-l: clear-screen +@end example + +@item @code{variables} (default: @code{'()}) (type: alist) +Association list of readline variables to set. + +@lisp +'((\"bell-style\" . \"visible\") + (\"colored-completion-prefix\" . #t)) +@end lisp + +turns into + +@example +set bell-style visible +set colored-completion-prefix on +@end example + +@item @code{conditional-constructs} (default: @code{'()}) (type: alist) +Association list of conditionals to add to the initialization file. This +includes @command{$if}, @command{else}, @command{endif} and @command{include} +and they receive a value of another @command{home-inputrc-configuration}. + +@lisp +(conditional-constructs + `((\"$if mode=vi\" . + ,(home-inputrc-configuration + (variables + `((\"show-mode-in-prompt\" . #t))))) + (\"$else\" . + ,(home-inputrc-configuration + (key-bindings + `((\"Control-l\" . \"clear-screen\"))))) + (\"$endif\" . #t))) +@end lisp + +turns into + +@example +$if mode=vi +set show-mode-in-prompt on +$else +Control-l: clear-screen +$endif +@end example + +@item @code{extra-content} (default: @code{""}) (type: text-config) +Extra content appended as-is to the configuration file. Run @command{man +readline} for more information about all the configuration options. + +@end table +@end deftp + @node Mcron Home Service @subsection Scheduled User's Job Execution diff --git a/gnu/home/services/shells.scm b/gnu/home/services/shells.scm index f05f2221d6..415b5470c5 100644 --- a/gnu/home/services/shells.scm +++ b/gnu/home/services/shells.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2021 Andrew Tropin ;;; Copyright © 2021 Xinglu Chen +;;; Copyright © 2023 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,7 +45,10 @@ (define-module (gnu home services shells) home-fish-service-type home-fish-configuration - home-fish-extension)) + home-fish-extension + + home-inputrc-service-type + home-inputrc-configuration)) ;;; Commentary: ;;; @@ -626,6 +630,134 @@ (define home-fish-service-type (description "\ Install and configure Fish, the friendly interactive shell."))) + +;;; +;;; Readline. +;;; + +(define (serialize-inputrc-key-bindings field-name val) + #~(string-append + #$@(map + (match-lambda + ((key . value) + #~(string-append #$key ": " #$value "\n"))) + val))) + +(define (serialize-inputrc-variables field-name val) + #~(string-append + #$@(map + (match-lambda + ((key . #f) + #~(string-append "set " #$key " off\n")) + ((key . #t) + #~(string-append "set " #$key " on\n")) + ((key . value) + #~(string-append "set " #$key " " #$value "\n"))) + val))) + +(define (serialize-inputrc-conditional-constructs field-name val) + #~(string-append + #$@(map + (match-lambda + (("$endif" . _) + "$endif\n") + (("$include" . value) + #~(string-append "$include " #$value "\n")) + ;; TODO: key can only be "$if" or "$else". + ((key . value) + #~(string-append #$key "\n" + #$(serialize-configuration + value + home-inputrc-configuration-fields)))) + val))) + +(define (serialize-inputrc-extra-content field-name value) + #~(if (string=? #$value "") "" (string-append #$value "\n"))) + +(define-configuration home-inputrc-configuration + (key-bindings + (alist '()) + "Association list of readline key bindings to be added to the +@code{~/.inputrc} file. This is where code like this: + +@lisp +'((\"Control-l\" . \"clear-screen\")) +@end lisp + +turns into + +@example +Control-l: clear-screen +@end example" + (serializer serialize-inputrc-key-bindings)) + (variables + (alist '()) + "Association list of readline variables to set. This is where configuration +options like this: + +@lisp +'((\"bell-style\" . \"visible\") + (\"colored-completion-prefix\" . #t)) +@end lisp + +turns into + +@example +set bell-style visible +set colored-completion-prefix on +@end example" + (serializer serialize-inputrc-variables)) + (conditional-constructs + (alist '()) + "Association list of conditionals to add to the initialization file. This +includes @command{$if}, @command{else}, @command{endif} and @command{include} +and they receive a value of another @command{home-inputrc-configuration}. + +@lisp +(conditional-constructs + `((\"$if mode=vi\" . + ,(home-inputrc-configuration + (variables + `((\"show-mode-in-prompt\" . #t))))) + (\"$else\" . + ,(home-inputrc-configuration + (key-bindings + `((\"Control-l\" . \"clear-screen\"))))) + (\"$endif\" . #t))) +@end lisp + +turns into + +@example +$if mode=vi +set show-mode-in-prompt on +$else +Control-l: clear-screen +$endif +@end example" + (serializer serialize-inputrc-conditional-constructs)) + (extra-content + (string "") + "Extra content appended as-is to the configuration file. Run @command{man +readline} for more information about all the configuration options." + (serializer serialize-inputrc-extra-content))) + +(define (home-inputrc-files config) + (list + `(".inputrc" + ,(mixed-text-file "inputrc" + (serialize-configuration + config + home-inputrc-configuration-fields))))) + +(define home-inputrc-service-type + (service-type (name 'inputrc) + (extensions + (list (service-extension home-files-service-type + home-inputrc-files))) + (default-value (home-inputrc-configuration)) + (description "Configure readline in @code{.inputrc}."))) + (define (generate-home-shell-profile-documentation) (generate-documentation base-commit: e4087930f3ad60918689be5f4bca4ce3e22429f5 -- Efraim Flashner רנשלפ םירפא GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 06 09:21:59 2023 Received: (at 64148-done) by debbugs.gnu.org; 6 Jul 2023 13:21:59 +0000 Received: from localhost ([127.0.0.1]:40397 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qHOvn-0008Br-Bz for submit@debbugs.gnu.org; Thu, 06 Jul 2023 09:21:59 -0400 Received: from mail-wm1-f54.google.com ([209.85.128.54]:44060) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qHOvk-0008BM-6n; Thu, 06 Jul 2023 09:21:58 -0400 Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-3fbc77e769cso7387115e9.0; Thu, 06 Jul 2023 06:21:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688649710; x=1691241710; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:to:from:date:sender:from:to:cc :subject:date:message-id:reply-to; bh=3VseDBvTF0rV8cXWANcJWXUCjBxMJC+S62WHHKYDt04=; b=e13ZEzDMzZA7ZqfTS1jO1keCSur7FsBJTOCQCEvoK+7rFWo9JvZHft+CH8xtWygHNj HWjoaxq0q1axvmG73hRAtZbqJk9bl5anK1X1j1mDiDo9IGc/LkXCYuWDBbbrWeEcZxHq EDRWdKOHt+uByRkoLTpiTjrg4q+6z+zHcVt2hM9xl5iQE9fo/eqpcsQSC5wQLVDc62d/ Ki6ngcQ/IXcLE8b8Icrr5qcqCpoJINaSsJ8E1GuPsA8ugaRjRgCwrV9N5k2wFUKZMIkb Y/ZaWz/y87cQSlScvhOFVHNSlC0hylBfwX6KwdMd2W0H6ZCRtICPiAU+NUFM39FrT1iL hEIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688649710; x=1691241710; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:to:from:date:sender :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3VseDBvTF0rV8cXWANcJWXUCjBxMJC+S62WHHKYDt04=; b=Fpz5wkQaHdU9PgAomG5Mab3QEuQgIVACyScuMZF9MOk1U6q7htWJTi57LmtHUFtMYT s5fHTb6UirIlcMS41NB+9Z9PfEneYB2kLDGTODW/Gue7ZyVnTmy+plNKKm9v4UbZ/9o4 fqEYj4av/6rhQW/8a8tuDUNZMM0NO19ckW7c3fgl5X6ivCHeY/P5YKAnWgCltIx9vb+A LeBuWRfC/N7Fqw1ANwqZMp+c3kqbGX2ySIuCmxZ5SOuIukJ44SkT+J8+NqRvP1uGJXsJ UEB+5o0GvA0jH8Qmca5doBD2bCklJWrqNfpZLNgEBK/WtLHS3yHnqsKLYx+JrutXdtQ1 RvVg== X-Gm-Message-State: ABy/qLbNawj/8yy4ZBigJUcY29aTFi+B1+iiYdessrQEV1YM/yx9SFGf m9j/jiDRyxe1kW4tB3VVTMaoj+Rk3BXG9g== X-Google-Smtp-Source: APBJJlGlNe8XqxdhQjsyqM1YrhQIu4zKBdXvOVoiW7oUdq9hPw3ZI6kP6xEbnshZL/HQzM+vYUgtNw== X-Received: by 2002:a1c:7318:0:b0:3fb:b61f:c719 with SMTP id d24-20020a1c7318000000b003fbb61fc719mr1364430wmb.33.1688649710253; Thu, 06 Jul 2023 06:21:50 -0700 (PDT) Received: from localhost ([2a02:ed3:914:7600:b62e:99ff:fef0:7bc0]) by smtp.gmail.com with ESMTPSA id x16-20020a1c7c10000000b003fbe4cecc3bsm5088936wmc.16.2023.07.06.06.21.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jul 2023 06:21:49 -0700 (PDT) Date: Thu, 6 Jul 2023 16:21:48 +0300 From: Efraim Flashner To: 64148-done@debbugs.gnu.org, 63909-done@debbugs.gnu.org Subject: Re: bug#64148: Acknowledgement ([PATCH v2] home: Add inputrc service.) Message-ID: Mail-Followup-To: Efraim Flashner , 64148-done@debbugs.gnu.org, 63909-done@debbugs.gnu.org References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="k3L8l+eCTOi5/MGO" Content-Disposition: inline In-Reply-To: X-PGP-Key-ID: 0x41AAE7DCCA3D8351 X-PGP-Key: https://flashner.co.il/~efraim/efraim_flashner.asc X-PGP-Fingerprint: A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 64148-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) --k3L8l+eCTOi5/MGO Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Patch pushed --=20 Efraim Flashner =D7=A8=D7=A0=D7=A9=D7=9C=D7=A4 = =D7=9D=D7=99=D7=A8=D7=A4=D7=90 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --k3L8l+eCTOi5/MGO Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmSmv+wACgkQQarn3Mo9 g1HoehAAoWfcKllstQgJgsSDBe6wc/JA2qDDisgtlKkWVqXqDWsaO5p6KVkQCcI7 euTt+HERrtJkYFTCeQf/QBMkE05HWI9AqignJZCw/LgjWhCT45KIOhHZBU00ScIS PWtH28RVVOVgLMQoSU+PakHsb3tpHbYy4L6v8r5PQcM9PH7PXKbFak1CZkOSM2FS WVoLipfq/wspxM1csFT7qCLpgXHfQGpdC2zDgLUS1ef/zBBlrp4nAdt+/Rcq1ajF unwe6X4IgHgXeCWb5Jpg42cbhy+9psKPabbCy2e+hFdlU9iPqWCRIMBIbTqcBxZU EDou9Bcq0CEWscI8egusbP1sQicY2uqEe47bNEVz6FKBzFncBsT+2eyawRFM9AiT mlRCtLeLhMZ1dMQ1vR8n3iOnlNySVgrWu1ot8bj3ytd6w4Z9sAdJdz4b1SOwzh69 njy0PhgtT43M6jvA3HgtCYOgpfN8cl7lY1KpZdl89XihBoZAYarqrN25wIENY7A7 TY/UMoWydhT/HNPlzs73uPs5dVPoC0XTKO8pD6vNFJCTL5zBp0G9ExElV0M1MdTl 8YtUaXyO6l+nvV7mRSXmQU03pXIpECRlW7ccsPEcegR81Xkf6IWzTIa95k26P+Y1 cM4vehBR7d6KWjGW5lkB8k51qlpWIaefnlQL86NkjkWoSK5BcmY= =7AsR -----END PGP SIGNATURE----- --k3L8l+eCTOi5/MGO-- From unknown Sun Jun 22 00:12:14 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 04 Aug 2023 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator