Subject: Re: [bug#37404] add herbstluftwm window manager package (v0.7.2) to guix (gnu/packages/wm.scm)

From: Ludovic Courtès <[email-masked]>
Date: Mon, 16 Sep 2019 10:57:45 +0200

Hello Kyle,

Kyle Andrews <[email-masked]> skribis:

> From 2d8537fc42c3424024d2f20aeb618e2ad1b5998c Mon Sep 17 00:00:00 2001
> From: Kyle Andrews <[email-masked]>
> Date: Sat, 14 Sep 2019 15:43:53 -0400
> Subject: [PATCH] Add herbstluftwm to the list of available window managers.
>
> ---
>  gnu/packages/wm.scm | 62 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 62 insertions(+)

I’ve applied it with the minor changes below: removing tabs as reported
by ‘guix lint’, providing a description as per
<https://guix.gnu.org/manual/en/html_node/Synopses-and-Descriptions.html>,
removing the Bash input since it’s already there by default, returning a
Boolean from the phase, and adding a copyright line and a commit log.

See <https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html>
if anything is unclear.

Thank you!

Ludo’.

diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index d81a916ff3..e19c6c1438 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2019 Rutger Helling <[email-masked]>
 ;;; Copyright © 2019 Timothy Sample <[email-masked]>
 ;;; Copyright © 2019 Gábor Boskovits <[email-masked]>
+;;; Copyright © 2019 Kyle Andrews <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -89,7 +90,6 @@
   #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages logging)
   #:use-module (gnu packages serialization)
-  #:use-module (gnu packages bash)
   #:use-module (gnu packages commencement) ; TODO remove when default gcc version >=7
   #:use-module (guix download)
   #:use-module (guix git-download))
@@ -129,7 +129,6 @@
 the leaves of a full binary tree.")
     (license license:bsd-2)))
 
-
 (define-public herbstluftwm
   (package
     (name "herbstluftwm")
@@ -138,19 +137,18 @@ the leaves of a full binary tree.")
      (origin
        (method url-fetch)
        (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
-			   version
-			   ".tar.gz"))
+                           version ".tar.gz"))
        (sha256
         (base32
          "1kc18aj9j3nfz6fj4qxg9s3gg4jvn6kzi3ii24hfm0vqdpy17xnz"))
        (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
     (build-system gnu-build-system)
-     (inputs `(("dzen"        ,dzen)
+    (inputs
+     `(("dzen"        ,dzen)
        ("dmenu"       ,dmenu)
        ("glib"        ,glib)
        ("glibmm"      ,glibmm)
        ("xterm"       ,xterm)
-	       ("bash"        ,bash)
        ("xsetroot"    ,xsetroot)
        ("libx11"      ,libx11)
        ("libxext"     ,libxext)
@@ -175,7 +173,8 @@ the leaves of a full binary tree.")
                      Name=herbstluftwm~@
                      Comment=Manual tiling window manager~@
                      Exec=~a/bin/herbstluftwm~@
-                     Type=XSession~%" out)))))))
+                     Type=XSession~%" out)))
+               #t))))
        #:tests? #f
        #:make-flags
        (let ((out (assoc-ref %outputs "out")))
@@ -184,12 +183,32 @@ the leaves of a full binary tree.")
                (string-append "DESTDIR=" out)
                (string-append "BASHCOMPLETIONDIR=" out
                               "/etc/bash_completion.d")))))
-     (synopsis "Herbstluftwm Window Manager for X11")
-     (description "X11 Tiling Window Manager")
+    (synopsis "Tiling window manager for X11")
+    (description "herbstluftwm is a manual tiling window manager for X11 using
+Xlib and GLib.  Its main features are:
+
+@itemize
+@item
+The layout is based on splitting frames into subframes which can be split
+again or can be filled with windows (similar to i3 or musca).
+
+@item
+Tags (or workspaces or virtual desktops or …) can be added/removed at runtime.
+Each tag contains an own layout.
+
+@item
+Exactly one tag is viewed on each monitor.  The tags are monitor independent
+(similar to Xmonad).
+
+@item
+It is configured at runtime via IPC calls from @command{herbstclient}.  So the
+configuration file is just a script which is run on startup (similar to wmii
+or musca).
+
+@end itemize")
     (home-page "https://herbstluftwm.org")
     (license license:bsd-2)))
 
-
 (define-public i3status
   (package
     (name "i3status")