summary refs log tree commit diff
path: root/gnu/packages/wm.scm
diff options
context:
space:
mode:
authorKyle Andrews <kyle.c.andrews@gmail.com>2019-09-14 15:43:53 -0400
committerLudovic Courtès <ludo@gnu.org>2019-09-16 10:57:58 +0200
commit1d25447e8b1003a4c53d656fab13a62604a755b3 (patch)
treeffd73f0f86bdf650c2f23b0fc91105ce65c3d5c7 /gnu/packages/wm.scm
parenta1a4a4071528104fe192cccbe59d64bf2ca485c3 (diff)
downloadguix-1d25447e8b1003a4c53d656fab13a62604a755b3.tar.gz
gnu: Add herbstluftwm.
* gnu/packages/wm.scm (herbstluftwm): New variable.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/packages/wm.scm')
-rw-r--r--gnu/packages/wm.scm81
1 files changed, 81 insertions, 0 deletions
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index c4b15cc755..e19c6c1438 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -128,6 +129,86 @@
 the leaves of a full binary tree.")
     (license license:bsd-2)))
 
+(define-public herbstluftwm
+  (package
+    (name "herbstluftwm")
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1kc18aj9j3nfz6fj4qxg9s3gg4jvn6kzi3ii24hfm0vqdpy17xnz"))
+       (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("dzen"        ,dzen)
+       ("dmenu"       ,dmenu)
+       ("glib"        ,glib)
+       ("glibmm"      ,glibmm)
+       ("xterm"       ,xterm)
+       ("xsetroot"    ,xsetroot)
+       ("libx11"      ,libx11)
+       ("libxext"     ,libxext)
+       ("libxinerama" ,libxinerama)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'check)
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (xsessions (string-append out "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file
+                   (string-append xsessions "/herbstluftwm.desktop")
+                 (lambda (port)
+                   (format port "~
+                     [Desktop Entry]~@
+                     Name=herbstluftwm~@
+                     Comment=Manual tiling window manager~@
+                     Exec=~a/bin/herbstluftwm~@
+                     Type=XSession~%" out)))
+               #t))))
+       #:tests? #f
+       #:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list "CC=gcc"
+               (string-append "PREFIX=''")
+               (string-append "DESTDIR=" out)
+               (string-append "BASHCOMPLETIONDIR=" out
+                              "/etc/bash_completion.d")))))
+    (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")