From unknown Sun Jul 20 14:10:14 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#58170 <58170@debbugs.gnu.org> To: bug#58170 <58170@debbugs.gnu.org> Subject: Status: [PATCH 0/1] gnu: home: Add home-batsignal-service-type. Reply-To: bug#58170 <58170@debbugs.gnu.org> Date: Sun, 20 Jul 2025 21:10:14 +0000 retitle 58170 [PATCH 0/1] gnu: home: Add home-batsignal-service-type. reassign 58170 guix-patches submitter 58170 "(" severity 58170 normal tag 58170 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 29 12:39:45 2022 Received: (at submit) by debbugs.gnu.org; 29 Sep 2022 16:39:45 +0000 Received: from localhost ([127.0.0.1]:39403 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1odwZY-00026E-Vv for submit@debbugs.gnu.org; Thu, 29 Sep 2022 12:39:45 -0400 Received: from lists.gnu.org ([209.51.188.17]:46726) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1odwZI-00025r-NO for submit@debbugs.gnu.org; Thu, 29 Sep 2022 12:39:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59612) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odwZD-0003mz-89 for guix-patches@gnu.org; Thu, 29 Sep 2022 12:39:23 -0400 Received: from knopi.disroot.org ([178.21.23.139]:48394) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odwYz-0004O2-3m for guix-patches@gnu.org; Thu, 29 Sep 2022 12:39:18 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id E5E414A9E0; Thu, 29 Sep 2022 18:39:02 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with UTF8SMTP id hPIdHdoCI0ES; Thu, 29 Sep 2022 18:39:01 +0200 (CEST) From: "(" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1664469540; bh=2zvZ8S4tnwDMv5cTo0rXybwHfcjJC/ENl/Kwr97FEjg=; h=From:To:Cc:Subject:Date; b=H8HZpooUTYOJsrIoMjvRPhYHoXfEtGV5YZerF40z/ruZxLIT2CQ9UscazAhiWXxfk 9qhHnaqifLlKVmYBjiRKmBGcNkHgvEHWLhe6jtuX2BpuZfPVUBB0qc9Tk3m7IRe5j7 RzERyJBqZxge5+U77LROynz58g4yWboim406q5DdC+r9UOny3vyWH50wSVSaTfNPOw orONCgFFObjt7U9rqhQ6ux2DlJnI5VI4zq6A4jtnJXPEar/FWUsp0ipjUprfFNzHVA m5hLsPshMhCzxrwXwU4/KuEo7wJVuTHL6EmpePkS99fPXXCbpdBfCzYsRTLj9r8OH2 KmVyacMm3Gmng== To: guix-patches@gnu.org Subject: [PATCH 0/1] gnu: home: Add home-batsignal-service-type. Date: Thu, 29 Sep 2022 17:38:53 +0100 Message-Id: <20220929163853.9019-1-paren@disroot.org> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=178.21.23.139; envelope-from=paren@disroot.org; helo=knopi.disroot.org X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FROM_ONE_CHAR=1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 2.3 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: This patchset adds a home service for ``batsignal'', a power monitoring daemon. ( (1): gnu: home: Add home-batsignal-service-type. doc/guix.texi | 89 ++++++++++++++++++++++-- gnu/home/services/pm.scm | 145 +++++++++++++++++++++++++++++++++++++++ gnu/local.mk | 2 + 3 files changed, 230 insertions(+), 6 deletions(-) create mode 10 [...] Content analysis details: (2.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.3 FROM_ONE_CHAR Bogus FROM name -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.9 SPF_FAIL SPF: sender does not match SPF record (fail) [SPF failed: Please see http://www.openspf.org/Why?s=mfrom; id=paren%40disroot.org; ip=209.51.188.17; r=debbugs.gnu.org] X-Debbugs-Envelope-To: submit Cc: "\(" 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: -1.0 (-) This patchset adds a home service for ``batsignal'', a power monitoring daemon. ( (1): gnu: home: Add home-batsignal-service-type. doc/guix.texi | 89 ++++++++++++++++++++++-- gnu/home/services/pm.scm | 145 +++++++++++++++++++++++++++++++++++++++ gnu/local.mk | 2 + 3 files changed, 230 insertions(+), 6 deletions(-) create mode 100644 gnu/home/services/pm.scm -- 2.37.3 From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 29 12:40:28 2022 Received: (at 58170) by debbugs.gnu.org; 29 Sep 2022 16:40:28 +0000 Received: from localhost ([127.0.0.1]:39408 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1odwaJ-00028B-Dj for submit@debbugs.gnu.org; Thu, 29 Sep 2022 12:40:28 -0400 Received: from knopi.disroot.org ([178.21.23.139]:38670) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1odwaH-00027y-4W for 58170@debbugs.gnu.org; Thu, 29 Sep 2022 12:40:26 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 76FC54BFD1; Thu, 29 Sep 2022 18:40:24 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cIP0-QuwmJks; Thu, 29 Sep 2022 18:40:22 +0200 (CEST) From: "(" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1664469622; bh=XgwRzkW6hRM6azmGmAhrUcPC3yRdr0GAX7gdtvR3QH8=; h=From:To:Cc:Subject:Date; b=l6GTQ65KxYyy7aFoVDm7KXcZV5a9A4hEhqttNfQI9e2XRTotI0HKDUAqeZAKT3om4 wb+6kn12WfuQVSOZ3co7ItP4i/BKkgStUaprLt2N6hLKXuJRxo837/rdowhS+oqUa5 pscUibdU/pWQ273BdVR3kd4a6nfpKZCXq1pAYiepBz+1UKNcIxpoI4UMdI1MMQjDcw vESGobzMUMHoOQf1pwoB4xa3jFFW0OAL+Z7i2s9sC+CRFJEsh00AlHS+S5DsHfTujB rIpR1igCHJvp7q159f4j0Nu/yy1PejRLi8qpAWGZZCZf3b6i/rb/M+fqUkimOFVC3D j1awvUNJcMz4w== To: 58170@debbugs.gnu.org Subject: [PATCH 1/1] gnu: home: Add home-batsignal-service-type. Date: Thu, 29 Sep 2022 17:40:20 +0100 Message-Id: <20220929164020.9178-1-paren@disroot.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: * gnu/home/services/pm.scm (home-batsignal-service-type): New variable. (home-batsignal-configuration): New record type. * doc/guix.texi: Document them. * gnu/local.mk: Add gnu/home/services/pm.scm. - [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.3 FROM_ONE_CHAR Bogus FROM name -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-Debbugs-Envelope-To: 58170 Cc: "\(" 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.3 (/) * gnu/home/services/pm.scm (home-batsignal-service-type): New variable. (home-batsignal-configuration): New record type. * doc/guix.texi: Document them. * gnu/local.mk: Add gnu/home/services/pm.scm. --- doc/guix.texi | 89 ++++++++++++++++++++++-- gnu/home/services/pm.scm | 145 +++++++++++++++++++++++++++++++++++++++ gnu/local.mk | 2 + 3 files changed, 230 insertions(+), 6 deletions(-) create mode 100644 gnu/home/services/pm.scm diff --git a/doc/guix.texi b/doc/guix.texi index c534574f81..081a7fb34f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -107,6 +107,7 @@ Copyright @copyright{} 2022 Karl Hallsby@* Copyright @copyright{} 2022 Justin Veilleux@* Copyright @copyright{} 2022 Reily Siegel@* Copyright @copyright{} 2022 Simon Streit@* +Copyright @copyright{} 2022 (@* Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -40119,12 +40120,13 @@ services)}. @menu * Essential Home Services:: Environment variables, packages, on-* scripts. -* Shells: Shells Home Services. POSIX shells, Bash, Zsh. -* Mcron: Mcron Home Service. Scheduled User's Job Execution. -* Shepherd: Shepherd Home Service. Managing User's Daemons. -* SSH: Secure Shell. Setting up the secure shell client. -* Desktop: Desktop Home Services. Services for graphical environments. -* Guix: Guix Home Services. Services for Guix. +* Shells: Shells Home Services. POSIX shells, Bash, Zsh. +* Mcron: Mcron Home Service. Scheduled User's Job Execution. +* Power Management: Power Management Home Services. Services for battery power. +* Shepherd: Shepherd Home Service. Managing User's Daemons. +* SSH: Secure Shell. Setting up the secure shell client. +* Desktop: Desktop Home Services. Services for graphical environments. +* Guix: Guix Home Services. Services for Guix. @end menu @c In addition to that Home Services can provide @@ -40572,6 +40574,81 @@ specifications,, mcron, GNU@tie{}mcron}). @end table @end deftp +@node Power Management Home Services + +@cindex power management +The @code{(gnu home services pm)} module provides home services +pertaining to battery power. + +@defvr {Scheme Variable} home-batsignal-service-type +Service for @code{batsignal}, a program that monitors battery levels +and warns the user through desktop notifications when their battery +is getting low. You can also configure a command to be run when the +battery level passes a point deemed ``dangerous''. This service is +configured with the @code{home-batsignal-configuration} record. +@end defvr + +@deftp {Data Type} home-batsignal-configuration +Data type representing the configuration for batsignal. + +@table @asis +@item @code{warning-level} (default: @code{15}) +The battery level to send a warning message at. + +@item @code{warning-message} (default: @code{#f}) +The message to send as a notification when the battery level reaches +the @code{warning-level}. Setting to @code{#f} uses the default +message. + +@item @code{critical-level} (default: @code{5}) +The battery level to send a critical message at. + +@item @code{critical-message} (default: @code{#f}) +The message to send as a notification when the battery level reaches +the @code{critical-level}. Setting to @code{#f} uses the default +message. + +@item @code{danger-level} (default: @code{2}) +The battery level to run the @code{danger-command} at. + +@item @code{danger-command} (default: @code{#f}) +The command to run when the battery level reaches the @code{danger-level}. +Setting to @code{#f} disables running the command entirely. + +@item @code{full-level} (default: @code{#f}) +The battery level to send a full message at. Setting to @code{#f} +disables sending the full message entirely. + +@item @code{full-message} (default: @code{#f}) +The message to send as a notification when the battery level reaches +the @code{full-level}. Setting to @code{#f} uses the default message. + +@item @code{batteries} (default: @code{'()}) +The batteries to monitor. Setting to @code{'()} tries to find batteries +automatically. + +@item @code{poll-delay} (default: @code{60}) +The time in seconds to wait before checking the batteries again. + +@item @code{icon} (default: @code{#f}) +A file-like object to use as the icon for battery notifications. Setting +to @code{#f} disables notification icons entirely. + +@item @code{notifications?} (default: @code{#t}) +Whether to send any notifications. + +@item @code{notifications-expire?} (default: @code{#f}) +Whether notifications sent expire after a time. + +@item @code{notification-command} (default: @code{#f}) +Command to use to send messages. Setting to @code{#f} sends a notification +through @code{libnotify}. + +@item @code{ignore-missing?} (default: @code{#f}) +Whether to ignore missing battery errors. +@end table +@end deftp + @node Shepherd Home Service @subsection Managing User Daemons diff --git a/gnu/home/services/pm.scm b/gnu/home/services/pm.scm new file mode 100644 index 0000000000..5f09941827 --- /dev/null +++ b/gnu/home/services/pm.scm @@ -0,0 +1,145 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 ( +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation, either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu home services pm) + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (guix records) + #:use-module (gnu home services) + #:use-module (gnu home services shepherd) + #:use-module (gnu packages monitoring) + #:use-module (gnu services shepherd) + + #:export (home-batsignal-configuration + home-batsignal-service-type)) + +;;; +;;; batsignal +;;; +;;; Daemon for running commands and displaying notifications on +;;; battery events. +;;; + +(define-record-type* + home-batsignal-configuration make-home-batsignal-configuration + home-batsignal-configuration? + (warning-level batsignal-warning-level ;integer + (default 15)) + (warning-message batsignal-warning-message ;string | #f + (default #f)) + (critical-level batsignal-critical-level ;integer + (default 5)) + (critical-message batsignal-critical-message ;string | #f + (default #f)) + (danger-level batsignal-danger-level ;integer + (default 2)) + (danger-command batsignal-danger-command ;file-like | string | #f + (default #f)) + (full-level batsignal-full-level ;integer | #f + (default #f)) + (full-message batsignal-full-message ;string | #f + (default #f)) + (batteries batsignal-batteries ;list of string + (default '())) + (poll-delay batsignal-poll-delay ;integer + (default 60)) + (icon batsignal-icon ;file-like | #f + (default #f)) + (notifications? batsignal-notifications? ;boolean + (default #t)) + (notifications-expire? batsignal-notifications-expire? ;boolean + (default #f)) + (notification-command batsignal-notification-command ;string | #f + (default #f)) + (ignore-missing? batsignal-ignore-missing? ;boolean + (default #f))) + +(define (home-batsignal-shepherd-services config) + (let ((warning-level (batsignal-warning-level config)) + (warning-message (batsignal-warning-message config)) + (critical-level (batsignal-critical-level config)) + (critical-message (batsignal-critical-message config)) + (danger-level (batsignal-danger-level config)) + (danger-command (batsignal-danger-command config)) + (full-level (batsignal-full-level config)) + (full-message (batsignal-full-message config)) + (batteries (batsignal-batteries config)) + (poll-delay (batsignal-poll-delay config)) + (icon (batsignal-icon config)) + (notifications? (batsignal-notifications? config)) + (notifications-expire? (batsignal-notifications-expire? config)) + (notification-command (batsignal-notification-command config)) + (ignore-missing? (batsignal-ignore-missing? config))) + (list (shepherd-service + (provision '(batsignal)) + (documentation "Run the batsignal battery-watching daemon.") + (start #~(make-forkexec-constructor + (append (list #$(file-append batsignal "/bin/batsignal") + "-w" (number->string #$warning-level) + "-c" (number->string #$critical-level) + "-d" (number->string #$danger-level) + "-m" (number->string #$poll-delay)) + (if #$warning-message + (list "-W" #$warning-message) + (list)) + (if #$critical-message + (list "-C" #$critical-message) + (list)) + (if #$danger-command + (list "-D" #$danger-command) + (list)) + (if #$full-level + (list "-f" (number->string #$full-level)) + (list)) + (if #$full-message + (list "-F" #$full-message) + (list)) + (if (null? (list #$@batteries)) + (list) + (list "-n" (string-join (list #$@batteries) ","))) + (if #$icon + (list "-I" #$icon) + (list)) + (if #$notifications? + (list) + (list "-N")) + (if #$notifications-expire? + (list "-e") + (list)) + (if #$notification-command + (list "-M" #$notification-command) + (list)) + (if #$ignore-missing? + (list "-i") + (list))) + #:log-file (string-append + (or (getenv "XDG_LOG_HOME") + (format #f "~a/.local/var/log" + (getenv "HOME"))) + "/batsignal.log"))) + (stop #~(make-kill-destructor)))))) + +(define home-batsignal-service-type + (service-type + (name 'home-batsignal) + (extensions + (list (service-extension home-shepherd-service-type + home-batsignal-shepherd-services))) + (default-value (home-batsignal-configuration)) + (description + "Run batsignal, a battery watching and notification daemon."))) diff --git a/gnu/local.mk b/gnu/local.mk index 4e982dc6e3..9ef10fcbfe 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -54,6 +54,7 @@ # Copyright © 2022 muradm # Copyright © 2022 Hilton Chain # Copyright © 2022 Alex Griffin +# Copyright © 2022 ( # # This file is part of GNU Guix. # @@ -89,6 +90,7 @@ GNU_SYSTEM_MODULES = \ %D%/home/services/symlink-manager.scm \ %D%/home/services/fontutils.scm \ %D%/home/services/guix.scm \ + %D%/home/services/pm.scm \ %D%/home/services/shells.scm \ %D%/home/services/shepherd.scm \ %D%/home/services/ssh.scm \ -- 2.37.3 From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 04 09:28:12 2022 Received: (at submit) by debbugs.gnu.org; 4 Oct 2022 13:28:12 +0000 Received: from localhost ([127.0.0.1]:52940 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ofhxy-0004M8-0x for submit@debbugs.gnu.org; Tue, 04 Oct 2022 09:28:12 -0400 Received: from lists.gnu.org ([209.51.188.17]:34446) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ofhxu-0004Ly-61 for submit@debbugs.gnu.org; Tue, 04 Oct 2022 09:28:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54430) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ofhxt-0003bh-NB for guix-patches@gnu.org; Tue, 04 Oct 2022 09:28:05 -0400 Received: from relay3-d.mail.gandi.net ([2001:4b98:dc4:8::223]:53895) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ofhxl-0000Kt-W9 for guix-patches@gnu.org; Tue, 04 Oct 2022 09:28:05 -0400 Received: (Authenticated sender: andrew@trop.in) by mail.gandi.net (Postfix) with ESMTPSA id 336AF60010; Tue, 4 Oct 2022 13:27:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=trop.in; s=gm1; t=1664890073; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=bPpFCXXTNp/VXlDsOgb3IBXQLqyzU/Fca+ImEbpgTSE=; b=hHVx6iQmCVSH3hTc4Pj2fLiMgHD6TelpVquUGmUYOAGW5gbAP7ogug/kNxPJ2qHYBbFRZL gjkPFn9Edrl1RnbZt6ks5KvA+pGV3kyHq8vifC9w5ar8/f5EXMcqRNmM9dxNZpo39H4e4G zUdE7HxeJ/PpyM2zLoYxhmQfSx8Tr3U0bOyfT5Rc8GXRYakIv3jWBh8vMsMegffT8bzId1 sW/Cqq8hIhO1NKz4jl3eo4K9WtyuWFv6wiGzS93xac75CzbWiYtPqdhwi7X5KkwCcgrrtM jmoLfNjE4RnmeC081Edh2PjWZc+LwBfvxRasnApXMXVhhBbai9+6swiJwEctIw== From: Andrew Tropin To: "( via Guix-patches via" , 58170@debbugs.gnu.org Subject: Re: [bug#58170] [PATCH 1/1] gnu: home: Add home-batsignal-service-type. In-Reply-To: <20220929164020.9178-1-paren@disroot.org> References: <20220929163853.9019-1-paren@disroot.org> <20220929164020.9178-1-paren@disroot.org> Date: Tue, 04 Oct 2022 17:27:47 +0400 Message-ID: <87pmf74t2k.fsf@trop.in> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Received-SPF: pass client-ip=2001:4b98:dc4:8::223; envelope-from=andrew@trop.in; helo=relay3-d.mail.gandi.net X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, TRACKER_ID=0.1 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.5 (-) X-Debbugs-Envelope-To: submit Cc: "\(" 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.5 (--) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2022-09-29 17:40, "\( via Guix-patches" via wrote: > * gnu/home/services/pm.scm (home-batsignal-service-type): New > variable. > (home-batsignal-configuration): New record type. > * doc/guix.texi: Document them. > * gnu/local.mk: Add gnu/home/services/pm.scm. > --- > doc/guix.texi | 89 ++++++++++++++++++++++-- > gnu/home/services/pm.scm | 145 +++++++++++++++++++++++++++++++++++++++ > gnu/local.mk | 2 + > 3 files changed, 230 insertions(+), 6 deletions(-) > create mode 100644 gnu/home/services/pm.scm > > diff --git a/doc/guix.texi b/doc/guix.texi > index c534574f81..081a7fb34f 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -107,6 +107,7 @@ Copyright @copyright{} 2022 Karl Hallsby@* > Copyright @copyright{} 2022 Justin Veilleux@* > Copyright @copyright{} 2022 Reily Siegel@* > Copyright @copyright{} 2022 Simon Streit@* > +Copyright @copyright{} 2022 (@* >=20=20 > Permission is granted to copy, distribute and/or modify this document > under the terms of the GNU Free Documentation License, Version 1.3 or > @@ -40119,12 +40120,13 @@ services)}. >=20=20 > @menu > * Essential Home Services:: Environment variables, packages, on-* scrip= ts. > -* Shells: Shells Home Services. POSIX shells, Bash, Zsh. > -* Mcron: Mcron Home Service. Scheduled User's Job Execution. > -* Shepherd: Shepherd Home Service. Managing User's Daemons. > -* SSH: Secure Shell. Setting up the secure shell cli= ent. > -* Desktop: Desktop Home Services. Services for graphical environm= ents. > -* Guix: Guix Home Services. Services for Guix. > +* Shells: Shells Home Services. POSIX shells, Bas= h, Zsh. > +* Mcron: Mcron Home Service. Scheduled User's = Job Execution. > +* Power Management: Power Management Home Services. Services for batt= ery power. > +* Shepherd: Shepherd Home Service. Managing User's D= aemons. > +* SSH: Secure Shell. Setting up the se= cure shell client. > +* Desktop: Desktop Home Services. Services for grap= hical environments. > +* Guix: Guix Home Services. Services for Guix. > @end menu > @c In addition to that Home Services can provide >=20=20 > @@ -40572,6 +40574,81 @@ specifications,, mcron, GNU@tie{}mcron}). > @end table > @end deftp >=20=20 > +@node Power Management Home Services > + > +@cindex power management > +The @code{(gnu home services pm)} module provides home services > +pertaining to battery power. > + > +@defvr {Scheme Variable} home-batsignal-service-type > +Service for @code{batsignal}, a program that monitors battery levels > +and warns the user through desktop notifications when their battery > +is getting low. You can also configure a command to be run when the > +battery level passes a point deemed ``dangerous''. This service is > +configured with the @code{home-batsignal-configuration} record. > +@end defvr > + > +@deftp {Data Type} home-batsignal-configuration > +Data type representing the configuration for batsignal. > + > +@table @asis > +@item @code{warning-level} (default: @code{15}) > +The battery level to send a warning message at. > + > +@item @code{warning-message} (default: @code{#f}) > +The message to send as a notification when the battery level reaches > +the @code{warning-level}. Setting to @code{#f} uses the default > +message. > + > +@item @code{critical-level} (default: @code{5}) > +The battery level to send a critical message at. > + > +@item @code{critical-message} (default: @code{#f}) > +The message to send as a notification when the battery level reaches > +the @code{critical-level}. Setting to @code{#f} uses the default > +message. > + > +@item @code{danger-level} (default: @code{2}) > +The battery level to run the @code{danger-command} at. > + > +@item @code{danger-command} (default: @code{#f}) > +The command to run when the battery level reaches the @code{danger-level= }. > +Setting to @code{#f} disables running the command entirely. > + > +@item @code{full-level} (default: @code{#f}) > +The battery level to send a full message at. Setting to @code{#f} > +disables sending the full message entirely. > + > +@item @code{full-message} (default: @code{#f}) > +The message to send as a notification when the battery level reaches > +the @code{full-level}. Setting to @code{#f} uses the default message. > + > +@item @code{batteries} (default: @code{'()}) > +The batteries to monitor. Setting to @code{'()} tries to find batteries > +automatically. > + > +@item @code{poll-delay} (default: @code{60}) > +The time in seconds to wait before checking the batteries again. > + > +@item @code{icon} (default: @code{#f}) > +A file-like object to use as the icon for battery notifications. Setting > +to @code{#f} disables notification icons entirely. > + > +@item @code{notifications?} (default: @code{#t}) > +Whether to send any notifications. > + > +@item @code{notifications-expire?} (default: @code{#f}) > +Whether notifications sent expire after a time. > + > +@item @code{notification-command} (default: @code{#f}) > +Command to use to send messages. Setting to @code{#f} sends a notificat= ion > +through @code{libnotify}. > + > +@item @code{ignore-missing?} (default: @code{#f}) > +Whether to ignore missing battery errors. > +@end table > +@end deftp > + > @node Shepherd Home Service > @subsection Managing User Daemons >=20=20 > diff --git a/gnu/home/services/pm.scm b/gnu/home/services/pm.scm > new file mode 100644 > index 0000000000..5f09941827 > --- /dev/null > +++ b/gnu/home/services/pm.scm > @@ -0,0 +1,145 @@ > +;;; GNU Guix --- Functional package management for GNU > +;;; Copyright =C2=A9 2022 ( > +;;; > +;;; This file is part of GNU Guix. > +;;; > +;;; GNU Guix is free software; you can redistribute it and/or modify > +;;; it under the terms of the GNU General Public License as published by > +;;; the Free Software Foundation, either version 3 of the License, or > +;;; (at your option) any later version. > +;;; > +;;; GNU Guix is distributed in the hope that it will be useful, > +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of > +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +;;; GNU General Public License for more details. > +;;; > +;;; You should have received a copy of the GNU General Public License > +;;; along with GNU Guix. If not, see . > + > +(define-module (gnu home services pm) > + #:use-module (guix gexp) > + #:use-module (guix packages) > + #:use-module (guix records) > + #:use-module (gnu home services) > + #:use-module (gnu home services shepherd) > + #:use-module (gnu packages monitoring) > + #:use-module (gnu services shepherd) > + > + #:export (home-batsignal-configuration > + home-batsignal-service-type)) > + > +;;; > +;;; batsignal > +;;; > +;;; Daemon for running commands and displaying notifications on > +;;; battery events. > +;;; > + > +(define-record-type* > + home-batsignal-configuration make-home-batsignal-configuration > + home-batsignal-configuration? > + (warning-level batsignal-warning-level ;integer > + (default 15)) > + (warning-message batsignal-warning-message ;string | #f > + (default #f)) > + (critical-level batsignal-critical-level ;integer > + (default 5)) > + (critical-message batsignal-critical-message ;string | #f > + (default #f)) > + (danger-level batsignal-danger-level ;integer > + (default 2)) > + (danger-command batsignal-danger-command ;file-like |= string | #f > + (default #f)) > + (full-level batsignal-full-level ;integer | #f > + (default #f)) > + (full-message batsignal-full-message ;string | #f > + (default #f)) > + (batteries batsignal-batteries ;list of str= ing > + (default '())) > + (poll-delay batsignal-poll-delay ;integer > + (default 60)) > + (icon batsignal-icon ;file-like |= #f > + (default #f)) > + (notifications? batsignal-notifications? ;boolean > + (default #t)) > + (notifications-expire? batsignal-notifications-expire? ;boolean > + (default #f)) > + (notification-command batsignal-notification-command ;string | #f > + (default #f)) > + (ignore-missing? batsignal-ignore-missing? ;boolean > + (default #f))) > + > +(define (home-batsignal-shepherd-services config) > + (let ((warning-level (batsignal-warning-level config)) > + (warning-message (batsignal-warning-message config)) > + (critical-level (batsignal-critical-level config)) > + (critical-message (batsignal-critical-message config)) > + (danger-level (batsignal-danger-level config)) > + (danger-command (batsignal-danger-command config)) > + (full-level (batsignal-full-level config)) > + (full-message (batsignal-full-message config)) > + (batteries (batsignal-batteries config)) > + (poll-delay (batsignal-poll-delay config)) > + (icon (batsignal-icon config)) > + (notifications? (batsignal-notifications? config)) > + (notifications-expire? (batsignal-notifications-expire? config)) > + (notification-command (batsignal-notification-command config)) > + (ignore-missing? (batsignal-ignore-missing? config))) > + (list (shepherd-service > + (provision '(batsignal)) > + (documentation "Run the batsignal battery-watching daemon.") > + (start #~(make-forkexec-constructor > + (append (list #$(file-append batsignal "/bin/batsig= nal") > + "-w" (number->string #$warning-level) > + "-c" (number->string #$critical-level) > + "-d" (number->string #$danger-level) > + "-m" (number->string #$poll-delay)) > + (if #$warning-message > + (list "-W" #$warning-message) > + (list)) > + (if #$critical-message > + (list "-C" #$critical-message) > + (list)) > + (if #$danger-command > + (list "-D" #$danger-command) > + (list)) > + (if #$full-level > + (list "-f" (number->string #$full-level= )) > + (list)) > + (if #$full-message > + (list "-F" #$full-message) > + (list)) > + (if (null? (list #$@batteries)) > + (list) > + (list "-n" (string-join (list #$@batter= ies) ","))) > + (if #$icon > + (list "-I" #$icon) > + (list)) > + (if #$notifications? > + (list) > + (list "-N")) > + (if #$notifications-expire? > + (list "-e") > + (list)) > + (if #$notification-command > + (list "-M" #$notification-command) > + (list)) > + (if #$ignore-missing? > + (list "-i") > + (list))) > + #:log-file (string-append > + (or (getenv "XDG_LOG_HOME") > + (format #f "~a/.local/var/log" > + (getenv "HOME"))) > + "/batsignal.log"))) > + (stop #~(make-kill-destructor)))))) > + > +(define home-batsignal-service-type > + (service-type > + (name 'home-batsignal) > + (extensions > + (list (service-extension home-shepherd-service-type > + home-batsignal-shepherd-services))) > + (default-value (home-batsignal-configuration)) > + (description > + "Run batsignal, a battery watching and notification daemon."))) > diff --git a/gnu/local.mk b/gnu/local.mk > index 4e982dc6e3..9ef10fcbfe 100644 > --- a/gnu/local.mk > +++ b/gnu/local.mk > @@ -54,6 +54,7 @@ > # Copyright =C2=A9 2022 muradm > # Copyright =C2=A9 2022 Hilton Chain > # Copyright =C2=A9 2022 Alex Griffin > +# Copyright =C2=A9 2022 ( > # > # This file is part of GNU Guix. > # > @@ -89,6 +90,7 @@ GNU_SYSTEM_MODULES =3D \ > %D%/home/services/symlink-manager.scm \ > %D%/home/services/fontutils.scm \ > %D%/home/services/guix.scm \ > + %D%/home/services/pm.scm \ > %D%/home/services/shells.scm \ > %D%/home/services/shepherd.scm \ > %D%/home/services/ssh.scm \ Hi! Slightly reworded commit message and fixed texinfo warning, applied, thank you! 7030f592c643360105514f9f1f923b0b6342d5e3 =2D-=20 Best regards, Andrew Tropin --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmM8NNMACgkQIgjSCVjB 3rCD3Q//X5NUF7H8gumCQZy/FCRzT8+wi9eu9mSlS0s+inr9ZrgsvBHTAyJ3BVDA BoYftQqmPTc0RAmNTB9J857P63qK4eTR8dtyyg1S0DDqmXRkHc2YwtjMIYoevgfc B8ln6kiR8sw+kGfPHH8rYQazNY4F7Q9NyC/sdtyWyS0IvOLdapywzx/ARHo0t1W4 dJ1chHB8KiIhoHJzIG45U0u8Q+UGKwtkG5gnMR9qlRX/+p85zcZlpFAjMyVJUTDt rb27rTQ/2KXtWlKgRYZaGqjpUOo5WDn8OResAC1knj8itiOKou1irw2vhYR+Z4B3 CYIXx/2L5Wx/2VaXlVYOEgW1m/vqdx/FtG3dmPtolv1QyagfYI9dmNXFyi/1kSUM kIBXdNytmvcZ/VcezOYe7x1tloWPWAoo705/gNxay+sv1yg7Wx0vinSp7YEOOtXt XJ+xt8zRpt36L0SFSiUO8YCfSPK6yxHn7DRjdJLpfAzexPe3cZvw5OnIKepHpPV5 cN5xE3wGigt5Kssu3DfhO/4ep2s/OX6SB9JrZ4o9oelAXXtj2glruvykHu51Jdo1 ryap+j2ZtUlmMJo3pnJ93nmAARniY+yXIuWv0BFbq4GqFp5RYx+V6IaDVPXgeG11 MhakMZTkm8F9zcoztNscIJgt8gNyTkmRuU6UWdai4bVupiUCsw4= =4qx4 -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 04 14:53:13 2022 Received: (at submit) by debbugs.gnu.org; 4 Oct 2022 18:53:13 +0000 Received: from localhost ([127.0.0.1]:55203 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ofn2X-0006oS-Iz for submit@debbugs.gnu.org; Tue, 04 Oct 2022 14:53:13 -0400 Received: from lists.gnu.org ([209.51.188.17]:36884) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ofn2U-0006oD-S3 for submit@debbugs.gnu.org; Tue, 04 Oct 2022 14:53:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55980) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ofn2U-00045G-N2 for guix-patches@gnu.org; Tue, 04 Oct 2022 14:53:10 -0400 Received: from knopi.disroot.org ([178.21.23.139]:50918) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ofn2S-0006qr-NV for guix-patches@gnu.org; Tue, 04 Oct 2022 14:53:10 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 6526F4C482; Tue, 4 Oct 2022 20:53:06 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id q6OPCMbnZITf; Tue, 4 Oct 2022 20:53:05 +0200 (CEST) Mime-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1664909584; bh=8vVGdYkBIvHQLh//yabCcVDmK5cifRWJy4SQRkZA5Hg=; h=Date:From:To:Subject:References:In-Reply-To; b=OnLCgGbXIUKIdQASSjswIqQeJi7TcYN2X3ErBJDKOuN4+f/uQ/HbyXO/A553XGvXj zrxdCHSNSZNFPxQiK0ceBDtY85kJ52SnGgAcqFnzDoWIe26yhlTdQhypIWBOfQWYyf 8Gs6pjg/MAx6evn78mQUQiKtRKQdMlnhN5P0YUtyT84mSXJvBuVIOxo0EORKEFnNQ7 fkHLfdF/rsZN8l3VKxGRtwWo5hnmp4oE8yAj8uLKgtslEcQ0Mh23vq0WdqyVTYDCa1 xxLRO+O8zSLwOJDycfZ4OjH2PTKAUA0HaPZUkzsKHAhgS5814XP+MwSidiIGwYzeeU 9jd+bAqW37WPw== Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Tue, 04 Oct 2022 19:53:03 +0100 Message-Id: From: "(" To: "Andrew Tropin" , "( via Guix-patches via" , <58170@debbugs.gnu.org> Subject: Re: [bug#58170] [PATCH 1/1] gnu: home: Add home-batsignal-service-type. References: <20220929163853.9019-1-paren@disroot.org> <20220929164020.9178-1-paren@disroot.org> <87pmf74t2k.fsf@trop.in> In-Reply-To: <87pmf74t2k.fsf@trop.in> Received-SPF: pass client-ip=178.21.23.139; envelope-from=paren@disroot.org; helo=knopi.disroot.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: submit 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: -1.0 (-) On Tue Oct 4, 2022 at 2:27 PM BST, Andrew Tropin wrote: > Slightly reworded commit message and fixed texinfo warning, applied, > thank you! Thanks Andrew! :D -- ( From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 05 00:48:42 2022 Received: (at control) by debbugs.gnu.org; 5 Oct 2022 04:48:42 +0000 Received: from localhost ([127.0.0.1]:55580 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ofwKo-0002eD-7X for submit@debbugs.gnu.org; Wed, 05 Oct 2022 00:48:42 -0400 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:46253) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ofwKl-0002dy-PJ for control@debbugs.gnu.org; Wed, 05 Oct 2022 00:48:41 -0400 Received: (Authenticated sender: andrew@trop.in) by mail.gandi.net (Postfix) with ESMTPSA id C65781C0006 for ; Wed, 5 Oct 2022 04:48:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=trop.in; s=gm1; t=1664945313; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=KkWKkBAdBmCBFV98D0Rt/zVaM7+Afe//JYt6SxhDeic=; b=lvMcSuMw6yEH8KbP3XK50zYXRoUxJF7VdrlMoJpF7iD9bESMWPJK/JVx9uMTQ/KMqsWaF7 I73mSR7RLJuy+lbpUi7pvYvIaJu6zd2Fq/UCQ1Trf3y1+6NvTC6DkaqKYpcYJBJQRmqwpw ltFHc3h8OTpT7AG799j3U0rYEWjFx0qf3G81Ka/hDi/qwr5llHASU00+fntOG0RxVQ50r2 QjlHXiayo5zmgec0hOLtBE//AS5Y93cvyqqpZt4qiHAicFhEqi+WNVAovXOZ9rmbS6dIH8 pJG9J4Eo5RXMUwT6oRB3bqZuXvfEAgX2pPgMrOe4sENFc0k/92vnHoC+4BSYjw== From: Andrew Tropin To: control@debbugs.gnu.org Subject: Applied Date: Wed, 05 Oct 2022 08:48:28 +0400 Message-ID: <87mtaa510j.fsf@trop.in> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: control 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: -1.7 (-) --=-=-= Content-Type: text/plain close 58170 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmM9DJwACgkQIgjSCVjB 3rB1SA//anO2eMVCsgbWLWKwUm2T/QlriqsT1EiQG+lkqceria+T5etSp25X8teb YuI7NRv6xKuaEvFKP0zw3EenvSXs/csixKDGNGhoAbbK3Kz/GuSzPe6L+UQfGJ0C +RLHDEPmVnwqasiRnbF6vnX6EhBo/VsKy4/KQHCJ19qaaIiJJlY18F+DtSPl4DkU aqNVEH+/U/XBwkME5dscA4DgKfhJsrKT6ZWv8bVl6DH6iqw/GBrfm12iqPYSSZXk rWRe8HWzmLvY+bXl5Cc681driZafT8Bjg51LVcp4HlddNurSJymKEgO9Z9UyvdOx Tpyf31rgzdNH32NVcuVSsuj/irLp8ArBkLki3Hi+zPrBIsSWSqL10K3mksDV+qzY 8JwLBVvsgHZ/ARnns2HmaXXNZCAVQI6igg6/+7XfE01wzkTvkhq6YkLQmFjvmpDe ng86zb1aogm4dncZ6gHg/b0kb4wgpct0PEea3UNxg/PFIRb/ep9l4DEEHqJYgnKT WTDTsQf/pZ1YOokWs3uWOrtvtNj6qV8ywpPIKw+U6OJ2axiNBUr/UXvKqhT9b+Uo o3C01k1HgtT5mFF989mbR2HSFtjPCmEIV6g/7SdTAdHFExvZXqFHvX8Yrq7iiY+G u5cr6tOukznzGEThK1MPHekbNHdU7OLwfuD+MhrxhA+LviRcJBA= =BqpZ -----END PGP SIGNATURE----- --=-=-=-- From unknown Sun Jul 20 14:10: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: Wed, 02 Nov 2022 11:24:08 +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