gnu: waybar: Update to 0.9.7.
[jackhill/guix/guix.git] / gnu / packages / wm.scm
index 8b54376..8ae4c2c 100644 (file)
@@ -5,7 +5,7 @@
 ;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
-;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
@@ -13,9 +13,9 @@
 ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
 ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
-;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017, 2020 Oleg Pykhalov <go.wigust@gmail.com>
-;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019, 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2017, 2020, 2021 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
 ;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net>
 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2019 Noodles! <nnoodle@chiru.no>
 ;;; Copyright © 2019, 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
-;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
 ;;; Copyright © 2020 Boris A. Dekshteyn <harlequin78@gmail.com>
 ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
+;;; Copyright © 2020 EuAndreh <eu@euandre.org>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
+;;; Copyright © 2020 Niklas Eklund <niklas.eklund@posteo.net>
+;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
+;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2021 qblade <qblade@protonmail.com>
+;;; Copyright © 2021 lasnesne <lasnesne@lagunposprasihopre.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -70,6 +80,7 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages build-tools) ;for meson-0.55
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
@@ -77,6 +88,7 @@
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages fribidi)
   #:use-module (gnu packages gawk)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gperf)
 (define-public bspwm
   (package
     (name "bspwm")
-    (version "0.9.9")
+    (version "0.9.10")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/baskerville/bspwm.git")
+             (url "https://github.com/baskerville/bspwm")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1i7crmljk1vra1r6alxvj6lqqailjjcv0llyg7a0gm23rbv4a42g"))))
+        (base32 "0qlv7b4c2mmjfd65y100d11x8iqyg5f6lfiws3cgmpjidhdygnxc"))))
     (build-system gnu-build-system)
     (inputs
      `(("libxcb" ,libxcb)
@@ -151,14 +163,14 @@ the leaves of a full binary tree.")
 (define-public herbstluftwm
   (package
     (name "herbstluftwm")
-    (version "0.8.3")
+    (version "0.9.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
                            version ".tar.gz"))
        (sha256
-        (base32 "1qmb4pjf2f6g0dvcg11cw9njwmxblhqzd70ai8qnlgqw1iz3nkm1"))
+        (base32 "0avfhr68f6fjnafjdcyxcx7dkg38f2nadmhpj971qyqzfq2f6i38"))
        (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
     (build-system cmake-build-system)
     (inputs
@@ -171,10 +183,12 @@ the leaves of a full binary tree.")
        ("libx11"      ,libx11)
        ("libxext"     ,libxext)
        ("libxinerama" ,libxinerama)
-       ("libxrandr"   ,libxrandr)))
+       ("libxrandr"   ,libxrandr)
+       ("libxft"      ,libxft)))
     (native-inputs
      `(("asciidoc"   ,asciidoc)
-       ("pkg-config" ,pkg-config)))
+       ("pkg-config" ,pkg-config)
+       ("python"     ,python)))
     (arguments
      '(#:tests? #f
        #:configure-flags
@@ -270,14 +284,14 @@ commands would.")
 (define-public i3-wm
   (package
     (name "i3-wm")
-    (version "4.18.1")
+    (version "4.18.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://i3wm.org/downloads/i3-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "0z709cianlzw0x0qwq4361347354xd9ckj1v7vjvhb1zh3x91gws"))))
+                "03dijnwv2n8ak9jq59fhq0rc80m5wjc9d54fslqaivnnz81pkbjk"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -309,7 +323,6 @@ commands would.")
        ("libxkbcommon" ,libxkbcommon)
        ("libev" ,libev)
        ("libyajl" ,libyajl)
-       ("asciidoc" ,asciidoc)
        ("xmlto" ,xmlto)
        ("perl-pod-simple" ,perl-pod-simple)
        ("libx11" ,libx11)
@@ -321,6 +334,7 @@ commands would.")
      `(("which" ,which)
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
+       ("asciidoc-py3" ,asciidoc-py3)
        ;; For building the documentation.
        ("libxml2" ,libxml2)
        ("docbook-xsl" ,docbook-xsl)))
@@ -340,7 +354,7 @@ many programming languages.")
 (define-public i3-gaps
   (package (inherit i3-wm)
            (name "i3-gaps")
-           (version "4.18")
+           (version "4.18.3")
            (source (origin
                      (method url-fetch)
                      (uri (string-append
@@ -348,7 +362,7 @@ many programming languages.")
                            version "/i3-" version ".tar.bz2"))
                      (sha256
                       (base32
-                       "0id4qm9a7kc5yawff85blmph4zbizhb6ka88aqm10wrpfsknri3j"))))
+                       "1hcakwyz78lgp8mhqv7pw86jlb3m415pfql1q19rkijnhm3fn3ci"))))
            (home-page "https://github.com/Airblader/i3")
            (synopsis "Tiling window manager with gaps")
            (description "i3-gaps is a fork of i3wm, a tiling window manager
@@ -403,7 +417,7 @@ Despite the name it should work with any X11 window manager.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/vivien/i3blocks.git")
+                    (url "https://github.com/vivien/i3blocks")
                     (commit version)))
               (sha256
                (base32
@@ -458,7 +472,7 @@ You can then subscribe to events or send messages and receive their replies.")
        ;; for years.
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/ziberna/i3-py.git")
+             (url "https://github.com/ziberna/i3-py")
              (commit "27f88a616e9ecc340e7d041d3d00782f8a1964c1")))
        (sha256
         (base32
@@ -503,7 +517,7 @@ subscribe to events.")
          ;; instead of the release.
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/proxypoke/quickswitch-for-i3.git")
+               (url "https://github.com/proxypoke/quickswitch-for-i3")
                (commit commit)))
          (sha256
           (base32
@@ -541,7 +555,7 @@ prompt.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/PandorasFox/i3lock-color.git")
+             (url "https://github.com/PandorasFox/i3lock-color")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -584,7 +598,7 @@ Features include:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/meskarune/i3lock-fancy.git")
+             (url "https://github.com/meskarune/i3lock-fancy")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -608,7 +622,7 @@ Features include:
                                         "/bin/gawk")))
 
                (substitute* "lock"
-                 (("$(which wmctrl)") wmctrl)
+                 (("\\$\\(command -V wmctrl\\)") wmctrl)
                  (("convert") mconvert)
                  (("shot=\\(import") (string-append "shot=\(" mimport))
                  (("awk -F") (string-append awk " -F"))
@@ -627,7 +641,7 @@ Features include:
                             (string-append bin "/i3lock-fancy"))
                (copy-recursively "icons" icons)
                #t))))))
-    (native-inputs
+    (inputs
      `(("imagemagick" ,imagemagick)
        ("wmctrl" ,wmctrl)
        ("gawk" ,gawk)))
@@ -653,7 +667,8 @@ desktop environment.")
                                   "xmonad-" version ".tar.gz"))
               (sha256
                (base32
-                "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))))
+                "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))
+              (patches (search-patches "xmonad-dynamic-linking.patch"))))
     (build-system haskell-build-system)
     (inputs
      `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
@@ -742,6 +757,29 @@ is also usable with any other window manager.  While xmobar is written in
 Haskell, no knowledge of the language is required to install and use it.")
     (license license:bsd-3)))
 
+(define-public yeganesh
+  (package
+    (name "yeganesh")
+    (version "2.4")
+    (source
+     (origin
+
+       (method url-fetch)
+       (uri (string-append "http://dmwit.com/yeganesh/yeganesh-" version ".tar.gz"))
+       (sha256
+        (base32 "04djfyjab3c5y9z9x8zd0xcx0jyy35zq7cl9ddr4ppf6k5ky6iky"))))
+    (build-system haskell-build-system)
+    (inputs
+     `(("ghc-strict" ,ghc-strict)
+       ("ghc-xdg-basedir" ,ghc-xdg-basedir)))
+    (home-page "http://dmwit.com/yeganesh/")
+    (synopsis "Small wrapper around dmenu")
+    (description "@code{yeganesh} is a small wrapper around demnu.  Like
+dmenu, it accepts input on stdin and writes the chosen result on stdout.
+Unlike dmenu, it mangles the input before it presents its choices.  In
+particular, it displays commonly-chosen options before uncommon ones.")
+    (license license:bsd-3)))
+
 (define-public ghc-xmonad-contrib
   (package
     (name "ghc-xmonad-contrib")
@@ -947,6 +985,9 @@ experience.")
        (modify-phases %standard-phases
          (add-before 'configure 'set-paths
            (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "lib/awful/completion.lua"
+               (("/usr/bin/env")
+                ""))
              ;; The build process needs to load Cairo dynamically.
              (let* ((cairo (string-append (assoc-ref inputs "cairo") "/lib"))
                     (lua-version ,(version-major+minor (package-version lua)))
@@ -995,9 +1036,9 @@ experience.")
                     (lua-version ,(version-major+minor (package-version lua)))
                     (lua-lgi (assoc-ref inputs "lua-lgi")))
                (wrap-program (string-append awesome "/bin/awesome")
-                 `("LUA_PATH" suffix
+                 `("LUA_PATH" ";" suffix
                    (,(format #f "~a/share/lua/~a/?.lua" lua-lgi lua-version)))
-                 `("LUA_CPATH" suffix
+                 `("LUA_CPATH" ";" suffix
                    (,(format #f "~a/lib/lua/~a/?.so" lua-lgi lua-version)))
                  `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
                  `("LD_LIBRARY_PATH" suffix (,cairo)))
@@ -1109,7 +1150,7 @@ Keybinder works with GTK-based applications using the X Window System.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/conformal/spectrwm.git")
+             (url "https://github.com/conformal/spectrwm")
              (commit
               (string-append "SPECTRWM_"
                              (string-join (string-split version #\.) "_")))))
@@ -1175,18 +1216,17 @@ It is inspired by Xmonad and dwm.  Its major features include:
 (define-public cwm
   (package
     (name "cwm")
-    (version "6.6")
+    (version "6.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://leahneukirchen.org/releases/cwm-"
                            version ".tar.gz"))
        (sha256
-        (base32
-         "0p350pbfn92m21jiq4i324sdskxhs71p435g0mgz7cmzprnhhg92"))))
+        (base32 "022zld29qawd8gl700g4m24qa89il3aks397zkhh66wvzssdblzx"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list "CC=gcc"
+     `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
                           (string-append "PREFIX=" %output))
        #:tests? #f
        #:phases
@@ -1224,6 +1264,45 @@ It is inspired by Xmonad and dwm.  Its major features include:
 project derived from the original Calm Window Manager.")
     (license license:isc)))
 
+(define-public dwl
+  (package
+    (name "dwl")
+    (version "0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/djpohly/dwl")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0r5hsxpckkrq1y7bjfq58rlc5xy45z499rg628q3nh289978ail1"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:make-flags
+       (list
+        (string-append "CC=" ,(cc-for-target))
+        (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))         ; no configure
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("wlroots" ,wlroots)))
+    (home-page "https://github.com/djpohly/dwl")
+    (synopsis "Dynamic window manager for Wayland")
+    (description
+     "@command{dwl} is a compact, hackable compositor for Wayland based on
+wlroots.  It is intended to fill the same space in the Wayland world that dwm
+does in X11, primarily in terms of philosophy, and secondarily in terms of
+functionality.  Like dwm, dwl is easy to understand and hack on, due to a
+limited size and a few external dependencies.  It is configurable via
+@file{config.h}.")
+    ;;             LICENSE       LICENSE.dwm   LICENSE.tinywl
+    (license (list license:gpl3+ license:expat license:cc0))))
+
 (define-public nitrogen
   (package
     (name "nitrogen")
@@ -1267,14 +1346,14 @@ its size
 (define-public polybar
   (package
     (name "polybar")
-    (version "3.4.3")
+    (version "3.5.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/polybar/polybar/releases/"
-                           "download/" version "/polybar-" version ".tar"))
+                           "download/" version "/polybar-" version ".tar.gz"))
        (sha256
-        (base32 "0bw22qvbcdvyd0qv3ax48r34rnclbbb6dyb8h8zljq1r3lf15vfl"))))
+        (base32 "1c8br9972x1qw7l2shj9aqzv0gsx58fdh3r0f1z5i1bqdwxmsqky"))))
     (build-system cmake-build-system)
     (arguments
      ;; Test is disabled because it requires downloading googletest from the
@@ -1312,41 +1391,44 @@ functionality to display information about the most commonly used services.")
 (define-public wlroots
   (package
     (name "wlroots")
-    (version "0.10.1")
+    (version "0.12.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/wlroots.git")
+             (url "https://github.com/swaywm/wlroots")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0j2lh9vc92zhn44rjbia5aw3y1rpgfng1x1h17lcvj5m4i6vj0pc"))))
+        (base32 "01j38lmgs2c6fq68v8b75pkilia2wsgzgp46ivfbi9hhx47kgcfn"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Dlogind-provider=elogind")
+       #:meson ,meson-0.55
        #:phases
        (modify-phases %standard-phases
          (add-before 'configure 'hardcode-paths
            (lambda* (#:key inputs #:allow-other-keys)
-             (substitute* "xwayland/xwayland.c"
+             (substitute* "xwayland/server.c"
                (("Xwayland") (string-append (assoc-ref inputs
                                                        "xorg-server-xwayland")
                                             "/bin/Xwayland")))
              #t)))))
-    (inputs `(("elogind" ,elogind)
-              ("eudev" ,eudev)
-              ("libinput" ,libinput)
-              ("libxkbcommon" ,libxkbcommon)
-              ("mesa" ,mesa)
-              ("pixman" ,pixman)
-              ("wayland" ,wayland)
-              ("xorg-server-xwayland" ,xorg-server-xwayland)))
-    (native-inputs `(("ffmpeg" ,ffmpeg)
-                     ("libcap" ,libcap)
-                     ("libpng" ,libpng)
-                     ("pkg-config" ,pkg-config)
-                     ("wayland-protocols" ,wayland-protocols)))
+    (propagated-inputs
+     `(;; As required by wlroots.pc.
+       ("elogind" ,elogind)
+       ("eudev" ,eudev)
+       ("libinput" ,libinput)
+       ("libxkbcommon" ,libxkbcommon)
+       ("mesa" ,mesa)
+       ("pixman" ,pixman)
+       ("wayland" ,wayland)
+       ("wayland-protocols" ,wayland-protocols)
+       ("xcb-util-errors" ,xcb-util-errors)
+       ("xcb-util-wm" ,xcb-util-wm)
+       ("xorg-server-xwayland" ,xorg-server-xwayland)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (home-page "https://github.com/swaywm/wlroots")
     (synopsis "Pluggable, composable, unopinionated modules for building a
 Wayland compositor")
@@ -1357,16 +1439,16 @@ modules for building a Wayland compositor.")
 (define-public sway
   (package
     (name "sway")
-    (version "1.4")
+    (version "1.5.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/sway.git")
+             (url "https://github.com/swaywm/sway")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11qf89y3q92g696a6f4d23qb44gqixg6qxq740vwv2jw59ms34ja"))))
+        (base32 "1xsa3h8zhf29p0mi90baxpr76jkd9pd1gr97ky8cnjbcs4isj9j0"))))
     (build-system meson-build-system)
     (arguments
      `(#:phases
@@ -1395,30 +1477,30 @@ modules for building a Wayland compositor.")
               ("swaybg" ,swaybg)
               ("wayland" ,wayland)
               ("wlroots" ,wlroots)))
-    (native-inputs `(("libcap" ,libcap)
-                     ("linux-pam" ,linux-pam)
-                     ("mesa" ,mesa)
-                     ("pkg-config" ,pkg-config)
-                     ("scdoc" ,scdoc)
-                     ("wayland-protocols" ,wayland-protocols)))
+    (native-inputs
+     `(("linux-pam" ,linux-pam)
+       ("mesa" ,mesa)
+       ("pkg-config" ,pkg-config)
+       ("scdoc" ,scdoc)
+       ("wayland-protocols" ,wayland-protocols)))
     (home-page "https://github.com/swaywm/sway")
     (synopsis "Wayland compositor compatible with i3")
     (description "Sway is a i3-compatible Wayland compositor.")
-    (license license:expat)))       ; MIT license
+    (license license:expat)))
 
 (define-public swayidle
   (package
     (name "swayidle")
-    (version "1.5")
+    (version "1.6")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/swayidle.git")
+             (url "https://github.com/swaywm/swayidle")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "05qi96j58xqxjiighay1d39rfanxcpn6vlynj23mb5dymxvlaq9n"))))
+        (base32 "1nd3v8r9549lykdwh4krldfl59lzaspmmai5k1icy7dvi6kkr18r"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags '("-Dlogind-provider=elogind")))
@@ -1435,16 +1517,16 @@ modules for building a Wayland compositor.")
 (define-public swaylock
   (package
     (name "swaylock")
-    (version "1.4")
+    (version "1.5")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/swaylock.git")
+             (url "https://github.com/swaywm/swaylock")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ii9ql1mxkk2z69dv6bg1x22nl3a46iww764wqjiv78x08xpk982"))))
+        (base32 "0r95p4w11dwm5ra614vddz83r8j7z6gd120z2vcchy7m9b0f15kf"))))
     (build-system meson-build-system)
     (inputs `(("cairo" ,cairo)
               ("gdk-pixbuf" ,gdk-pixbuf)
@@ -1468,7 +1550,7 @@ modules for building a Wayland compositor.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/swaywm/swaybg.git")
+             (url "https://github.com/swaywm/swaybg")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -1488,20 +1570,17 @@ modules for building a Wayland compositor.")
 (define-public waybar
   (package
     (name "waybar")
-    (version "0.9.1")
+    (version "0.9.7")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Alexays/Waybar.git")
+             (url "https://github.com/Alexays/Waybar")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0drlv8im5phz39jxp3gxkc40b6f85bb3piff2v3hmnfzh7ib915s"))))
+        (base32 "17cn4d3dx92v40jd9vl41smp8hh3gf5chd1j2f7l1lrpfpnllg5x"))))
     (build-system meson-build-system)
-    (arguments
-     `(#:configure-flags
-       (list (string-append "-Dout=" (assoc-ref %outputs "out")))))
     (inputs `(("date" ,date)
               ("fmt" ,fmt)
               ("gtk-layer-shell" ,gtk-layer-shell)
@@ -1514,28 +1593,52 @@ modules for building a Wayland compositor.")
               ("pulseaudio" ,pulseaudio)
               ("spdlog" ,spdlog)
               ("wayland" ,wayland)))
-    (native-inputs `(("glib:bin" ,glib "bin")
-                     ("pkg-config" ,pkg-config)
-                     ("wayland-protocols" ,wayland-protocols)))
+    (native-inputs
+     `(("gcc" ,gcc-8)                   ; for #include <filesystem>
+       ("glib:bin" ,glib "bin")
+       ("pkg-config" ,pkg-config)
+       ("scdoc" ,scdoc)
+       ("wayland-protocols" ,wayland-protocols)))
     (home-page "https://github.com/Alexays/Waybar")
     (synopsis "Wayland bar for Sway and Wlroots based compositors")
     (description "Waybar is a highly customisable Wayland bar for Sway and
 Wlroots based compositors.")
     (license license:expat))) ; MIT license
 
+(define-public wlr-randr
+  (package
+    (name "wlr-randr")
+    (version "0.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/wlr-randr")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "10c8zzp78s5bw34vvjhilipa28bsdx3jbyhnxgp8f8kawh3cvgsc"))))
+    (build-system meson-build-system)
+    (inputs `(("wayland" ,wayland)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/emersion/wlr-randr")
+    (synopsis "Utility to manage Wayland compositor outputs")
+    (description "wlr-randr is a utility to manage outputs of a Wayland compositor.")
+    (license license:expat))) ; MIT license
+
 (define-public mako
   (package
     (name "mako")
-    (version "1.4")
+    (version "1.4.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/emersion/mako.git")
+             (url "https://github.com/emersion/mako")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11ymiq6cr2ma0iva1mqybn3j6k73bsc6lv6pcbdq7hkhd4f9b7j9"))))
+        (base32 "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh"))))
     (build-system meson-build-system)
     (inputs `(("cairo" ,cairo)
               ("elogind" ,elogind)
@@ -1551,31 +1654,59 @@ Wlroots based compositors.")
 compositors that support the layer-shell protocol.")
     (license license:expat))) ; MIT license
 
+(define-public kanshi
+  (package
+    (name "kanshi")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emersion/kanshi")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0nbpgm8qnn7ljsg9vgs35kl8l4rrk542vdcbx8wrn9r909ld3x92"))))
+    (build-system meson-build-system)
+    (inputs `(("wayland" ,wayland)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("scdoc" ,scdoc)))
+    (home-page "https://wayland.emersion.fr/kanshi")
+    (synopsis "Hotswappable output profiles for Wayland")
+    (description "Kanshi allows you to define output profiles that are
+automatically enabled and disabled on hotplug.  Kanshi can be used with
+Wayland compositors supporting the wlr-output-management protocol.")
+    (license license:expat))) ; MIT license
+
 (define-public stumpwm
   (package
     (name "stumpwm")
-    (version "19.11")
+    (version "20.11")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/stumpwm/stumpwm.git")
+             (url "https://github.com/stumpwm/stumpwm")
              (commit version)))
        (file-name (git-file-name "stumpwm" version))
        (sha256
-        (base32 "1ha8803ll7472kqxsy2xz0v5d4sv8apmc9z631d67m31q0z1m9rz"))))
+        (base32 "1ghs6ihvmb3bz4q4ys1d3h6rdi96xyiw7l2ip7jh54c25049aymf"))))
     (build-system asdf-build-system/sbcl)
     (native-inputs `(("fiasco" ,sbcl-fiasco)
-                     ("texinfo" ,texinfo)))
+                     ("texinfo" ,texinfo)
+
+                     ;; To build the manual.
+                     ("autoconf" ,autoconf)
+                     ("automake" ,automake)))
     (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
               ("clx" ,sbcl-clx)
               ("alexandria" ,sbcl-alexandria)))
     (outputs '("out" "lib"))
     (arguments
-     '(#:asd-system-name "stumpwm"
+     '(#:asd-systems '("stumpwm")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'create-symlinks 'build-program
+         (add-after 'create-asdf-configuration 'build-program
            (lambda* (#:key outputs #:allow-other-keys)
              (build-program
               (string-append (assoc-ref outputs "out") "/bin/stumpwm")
@@ -1600,13 +1731,12 @@ compositors that support the layer-shell protocol.")
                     out)))
                #t)))
          (add-after 'install 'install-manual
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; The proper way to the manual is bootstrapping a full autotools
-             ;; build system and running ‘./configure && make stumpwm.info’ to
-             ;; do some macro substitution.  We can get away with much less.
+           (lambda* (#:key (make-flags '()) outputs #:allow-other-keys)
              (let* ((out  (assoc-ref outputs "out"))
                     (info (string-append out "/share/info")))
-               (invoke "makeinfo" "stumpwm.texi.in")
+               (invoke "./autogen.sh")
+               (invoke "sh" "./configure" "SHELL=sh")
+               (apply invoke "make" "stumpwm.info" make-flags)
                (install-file "stumpwm.info" info)
                #t))))))
     (synopsis "Window manager written in Common Lisp")
@@ -1642,26 +1772,22 @@ productive, customizable lisp based systems.")
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((out (assoc-ref outputs "out"))
                       (program (string-append out "/bin/stumpwm")))
+                 (setenv "HOME" "/tmp")
                  (build-program program outputs
                                 #:entry-program '((stumpwm:stumpwm) 0)
-                                #:dependencies '("stumpwm"
-                                                 ,@(@@ (gnu packages lisp-xyz) slynk-systems))
+                                #:dependencies '("stumpwm" "slynk")
                                 #:dependency-prefixes
                                 (map (lambda (input) (assoc-ref inputs input))
                                      '("stumpwm" "slynk")))
-                 ;; Remove unneeded file.
-                 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
                  #t)))
            (delete 'copy-source)
            (delete 'build)
            (delete 'check)
-           (delete 'create-asd-file)
-           (delete 'cleanup)
-           (delete 'create-symlinks)))))))
+           (delete 'cleanup)))))))
 
 (define stumpwm-contrib
-  (let ((commit "920f8fc1488f7953f205e1dda4c2ecbbbda56d63")
-        (revision "2"))
+  (let ((commit "a7dc1c663d04e6c73a4772c8a6ad56a34381096a")
+        (revision "3"))
     (package
       (name "stumpwm-contrib")
       (version (git-version "0.0.1" revision commit)) ;no upstream release
@@ -1669,11 +1795,11 @@ productive, customizable lisp based systems.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/stumpwm/stumpwm-contrib.git")
+               (url "https://github.com/stumpwm/stumpwm-contrib")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "0giac390bq95ag41xkxqp8jjrhfx1wpgglz7jg5rkm0wjhcwmyml"))))
+          (base32 "09akdaaya7lga5lzbq1aj1filsyjwvflghkidpmr0nk0jz5xx1g7"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        `(("stumpwm" ,stumpwm "lib")))
@@ -1688,7 +1814,8 @@ productive, customizable lisp based systems.")
     (name "stumpish")
     (inputs
      `(("bash" ,bash)
-       ("rlwrap" ,rlwrap)))
+       ("rlwrap" ,rlwrap)
+       ("xprop" ,xprop)))
     (build-system trivial-build-system)
     (arguments
      '(#:modules ((guix build utils))
@@ -1700,6 +1827,8 @@ productive, customizable lisp based systems.")
          (substitute* "stumpish"
            (("rlwrap") (string-append (assoc-ref %build-inputs "rlwrap")
                                       "/bin/rlwrap"))
+           (("xprop") (string-append (assoc-ref %build-inputs "xprop")
+                                      "/bin/xprop"))
            (("/bin/sh") (string-append (assoc-ref %build-inputs "bash")
                                        "/bin/bash")))
          (install-file "stumpish" (string-append %output "/bin")))))
@@ -1719,7 +1848,7 @@ productive, customizable lisp based systems.")
      `(("stumpwm" ,stumpwm "lib")
        ("clx-truetype" ,sbcl-clx-truetype)))
     (arguments
-     '(#:asd-system-name "ttf-fonts"
+     '(#:asd-systems '("ttf-fonts")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -1736,7 +1865,7 @@ rendering.")
     (inherit stumpwm-contrib)
     (name "sbcl-stumpwm-pass")
     (arguments
-     '(#:asd-system-name "pass"
+     '(#:asd-systems '("pass")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -1753,7 +1882,7 @@ password-store into StumpWM.")
     (inherit stumpwm-contrib)
     (name "sbcl-stumpwm-globalwindows")
     (arguments
-     '(#:asd-system-name "globalwindows"
+     '(#:asd-systems '("globalwindows")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -1770,7 +1899,7 @@ windows in the current X session.")
     (inherit stumpwm-contrib)
     (name "sbcl-stumpwm-swm-gaps")
     (arguments
-     '(#:asd-system-name "swm-gaps"
+     '(#:asd-systems '("swm-gaps")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -1787,7 +1916,7 @@ between windows.")
     (inherit stumpwm-contrib)
     (name "sbcl-stumpwm-net")
     (arguments
-     '(#:asd-system-name "net"
+     '(#:asd-systems '("net")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -1805,7 +1934,7 @@ between windows.")
     (inherit stumpwm-contrib)
     (name "sbcl-stumpwm-wifi")
     (arguments
-     '(#:asd-system-name "wifi"
+     '(#:asd-systems '("wifi")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -1823,7 +1952,7 @@ between windows.")
     (inherit stumpwm-contrib)
     (name "sbcl-stumpwm-stumptray")
     (arguments
-     '(#:asd-system-name "stumptray"
+     '(#:asd-systems '("stumptray")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -1845,7 +1974,7 @@ between windows.")
     (inherit stumpwm-contrib)
     (name "sbcl-stumpwm-kbd-layouts")
     (arguments
-     '(#:asd-system-name "kbd-layouts"
+     '(#:asd-systems '("kbd-layouts")
        #:tests? #f
        #:phases
        (modify-phases %standard-phases
@@ -1856,6 +1985,127 @@ between windows.")
     (description "Keyboard layout switcher for StumpWM")
     (license license:gpl3+)))
 
+(define-public sbcl-stumpwm-numpad-layouts
+  (package
+    (inherit stumpwm-contrib)
+    (name "sbcl-stumpwm-numpad-layouts")
+    (arguments
+     '(#:asd-systems '("numpad-layouts")
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "util/numpad-layouts"))))))
+    (home-page
+     "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/numpad-layouts")
+    (synopsis "Keyboard numpad layouts for StumpWM")
+    (description "This is a module for handling different keyboards numpad
+layouts in StumpWM.")
+    (license license:gpl3+)))
+
+(define-public sbcl-stumpwm-cpu
+  (package
+    (inherit stumpwm-contrib)
+    (name "sbcl-stumpwm-cpu")
+    (arguments
+     '(#:asd-systems '("cpu")
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "modeline/cpu"))))))
+    (home-page
+     "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/cpu")
+    (synopsis "Modeline support for CPU info")
+    (description "Modeline support for CPU info.")
+    (license license:gpl3+)))
+
+(define-public sbcl-stumpwm-disk
+  (package
+    (inherit stumpwm-contrib)
+    (name "sbcl-stumpwm-disk")
+    (arguments
+     '(#:asd-systems '("disk")
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _ (chdir "modeline/disk") #t)))))
+    (inputs
+     `(("stumpwm" ,stumpwm "lib")
+       ("cl-diskspace" ,sbcl-cl-diskspace)
+       ("cl-mount-info" ,sbcl-cl-mount-info)))
+    (home-page "https://github.com/stumpwm/stumpwm-contrib")
+    (synopsis "StumpWM modeline support to show disk usage")
+    (description "StumpWM modeline support to show disk usage")
+    (license (list license:gpl2+ license:gpl3+))))
+
+(define-public sbcl-stumpwm-mem
+  (package
+    (inherit stumpwm-contrib)
+    (name "sbcl-stumpwm-mem")
+    (arguments
+     '(#:asd-systems '("mem")
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "modeline/mem"))))))
+    (home-page
+     "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/mem")
+    (synopsis "Modeline support for memory info")
+    (description "Modeline support for memory info.")
+    (license license:gpl3+)))
+
+(define-public sbcl-stumpwm-winner-mode
+  (package
+    (inherit stumpwm-contrib)
+    (name "sbcl-stumpwm-winner-mode")
+    (arguments
+     '(#:asd-systems '("winner-mode")
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "util/winner-mode"))))))
+    (home-page
+     "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/winner-mode")
+    (synopsis "Emacs' winner-mode for StumpWM")
+    (description "This module provides a winner-mode for StumpWM similar to the
+one in Emacs.")
+    (license license:gpl3+)))
+
+(define-public sbcl-stumpwm-screenshot
+  (package
+    (inherit stumpwm-contrib)
+    (name "sbcl-stumpwm-screenshot")
+    (inputs
+     `(("stumpwm" ,stumpwm "lib")
+       ("zpng" ,sbcl-zpng)))
+    (arguments
+     '(#:asd-systems '("screenshot")
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "util/screenshot")))
+         (add-after 'chdir 'fix-build
+           (lambda _
+             (substitute* "screenshot.asd"
+               (("#:zpng")
+                "#:stumpwm #:zpng")))))))
+    (home-page
+     "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/screenshot")
+    (synopsis "Screenshots for StumpWM")
+    (description "This StumpWM module can take screenshots and store them as
+PNG files.")
+    (license license:gpl3+)))
+
 (define-public lemonbar
   (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4")
         (revision "1"))
@@ -1892,3 +2142,349 @@ bar entirely based on XCB.  Provides full UTF-8 support, basic
 formatting, RandR and Xinerama support and EWMH compliance without
 wasting your precious memory.")
       (license license:x11))))
+
+(define-public lemonbar-xft
+  ;; Upstream v2.0 tag is several years behind HEAD
+  (let ((commit "481e12363e2a0fe0ddd2176a8e003392be90ed02"))
+    (package
+      (inherit lemonbar)
+      (name "lemonbar-xft")
+      (version (string-append "2.0." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/drscream/lemonbar-xft")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0588g37h18lv50h7w8vfbwhvc3iajh7sdr53848spaif99nh3mh4"))))
+      (inputs
+       `(("freetype" ,freetype)
+         ("libxft" ,libxft)
+         ("libx11" ,libx11)
+         ,@(package-inputs lemonbar)))
+      (arguments
+       (substitute-keyword-arguments (package-arguments lemonbar)
+         ((#:make-flags make-flags)
+          `(append
+            ,make-flags
+            (list (string-append
+                   "CFLAGS="
+                   (string-join
+                    (list (string-append
+                           "-I" (assoc-ref %build-inputs "freetype")
+                           "/include/freetype2")
+                          (string-append
+                           "-D" "VERSION="
+                           (format #f "'~s'" ,version))))))))))
+      (home-page "https://github.com/drscream/lemonbar-xft")
+      (synopsis
+       (string-append
+        (package-synopsis lemonbar)
+        " with fontconfig support"))
+      (description
+       (string-append
+        (package-description lemonbar)
+        "This is a fork of the @code{lemonbar} package that adds fontconfig
+support, for easier unicode usage.")))))
+
+(define-public xclickroot
+  (package
+    (name "xclickroot")
+    (version "1.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/phillbush/xclickroot")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0wnsfxvh4v02r2jjyh2n6jfkbj2dna2hlm6anl4b36lwji749k2k"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libx11" ,libx11)))
+    (arguments
+     `(#:tests? #f ;no test suite
+       #:make-flags
+       (list ,(string-append "CC=" (cc-for-target))
+             (string-append "PREFIX=" %output))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "https://github.com/phillbush/xclickroot")
+    (synopsis "Run a command when a mouse button is pressed on the root window")
+    (description "@code{xclickroot} runs a command every time a given mouse
+button is pressed on the root window.")
+    (license license:public-domain)))
+
+(define-public xmenu
+  (package
+    (name "xmenu")
+    (version "4.4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/phillbush/xmenu")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1s70zvsaqnsjqs298vw3py0vcvia68xlks1wcz37pb88bwligz1x"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxinerama" ,libxinerama)
+       ("libxft" ,libxft)
+       ("freetype" ,freetype)
+       ("imlib2" ,imlib2)))
+    (arguments
+     `(#:tests? #f ;no test suite
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             (string-append "PREFIX=" %output)
+             (string-append "CFLAGS="
+                            "-I" (assoc-ref %build-inputs "freetype")
+                            "/include/freetype2"))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "https://github.com/phillbush/xmenu")
+    (synopsis "Menu utility for X")
+    (description "@code{xmenu} receives a menu specification in stdin, shows
+a menu for the user to select one of the options, and outputs the option
+selected to stdout.  It can be controlled both via mouse and via keyboard.")
+    (license license:public-domain)))
+
+(define-public idesk
+  (package
+    (name "idesk")
+    (version "0.7.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://sourceforge/idesk/idesk/idesk-" version
+             "/idesk-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "1lxk2yvgysxwl514zc82lwr1dwc8cd62slgr5lzdhjbdrxfymdyl"))
+       (modules '((guix build utils)
+                  (ice-9 format)))
+       (snippet
+        '(let* ((file     "src/DesktopConfig.cpp")
+                (template (string-append file ".XXXXXX"))
+                (out      (mkstemp! template))
+                (st       (stat file))
+                (mode     (stat:mode st)))
+           (call-with-ascii-input-file file
+             (lambda (p)
+               (format out "~{~a~%~}" '("#include <unistd.h>"
+                                        "#include <sys/stat.h>"
+                                        "#include <sys/types.h>"))
+               (dump-port p out)
+               (close out)
+               (chmod template mode)
+               (rename-file template file)
+               #t))))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxft" ,libxft)
+       ("libxpm" ,libxpm)
+       ("libpng" ,libpng)
+       ("freetype" ,freetype)
+       ("imlib2" ,imlib2)
+       ("sed" ,sed)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (arguments
+     `(#:tests? #f)) ;no test suite
+    (home-page "https://sourceforge.net/projects/idesk/")
+    (synopsis "Add icons on X desktop and set background image for wallpaper")
+    (description "Idesk is program that draws desktop icons.  Each icon will
+execute a shell command on a configurable action.  The icons can be moved on
+the desktop by dragging them, and the icons will remember their positions on
+start-up.")
+    (license license:bsd-3)))
+
+(define-public xnotify
+  (package
+    (name "xnotify")
+    (version "0.8.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/phillbush/xnotify")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1jxms4md2mwfjgm2pgg3vakpp33800jbn9hnl0j4jyfc9f1ckbsv"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxft" ,libxft)
+       ("libxinerama" ,libxinerama)
+       ("imlib2" ,imlib2)))
+    (arguments
+     `(#:make-flags
+       (list (string-append "CC=" ,(cc-for-target))
+             (string-append "PREFIX=" %output)
+             (string-append "CFLAGS="
+                            "-I" (assoc-ref %build-inputs "freetype")
+                            "/include/freetype2"))
+       #:tests? #f ;no test suite
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (home-page "https://github.com/phillbush/xnotify")
+    (synopsis "Displays a notification on the screen")
+    (description "XNotify receives a notification specification in stdin and
+shows a notification for the user on the screen.")
+    (license license:expat)))
+
+(define-public cagebreak
+  (package
+    (name "cagebreak")
+    (version "1.6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/project-repo/cagebreak")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02gxmypfj75amdd8lwdkkk7imw7lwmghpyk8h9asljy9aq6ymdqp"))))
+    (build-system meson-build-system)
+    (arguments '(#:configure-flags '("-Dxwayland=true")))
+    (native-inputs
+     `(("pandoc" ,pandoc)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("pango" ,pango)
+       ("wlroots" ,wlroots)))
+    (home-page "https://github.com/project-repo/cagebreak")
+    (synopsis "Tiling wayland compositor inspired by ratpoison")
+    (description
+     "@command{cagebreak} is a slim, keyboard-controlled, tiling compositor
+for wayland conceptually based on the X11 window manager
+@command{ratpoison}.")
+    (license license:expat)))
+
+(define-public libucl
+  (package
+    (name "libucl")
+    (version "0.8.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/vstakhov/libucl/")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1h52ldxankyhbbm1qbqz1f2q0j03c1b4mig7343bs3mc6fpm18gf"))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("libtool" ,libtool)))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f)) ;; no tests
+    (home-page "https://github.com/vstakhov/libucl")
+    (synopsis "Universal configuration language (UCL) parser")
+     (description "libucl implements a configuration language that is easy to
+read and write, and compatible with JSON.")
+    (license license:bsd-2)))
+
+(define-public hikari
+  (package
+    (name "hikari")
+    (version "2.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://hikari.acmelabs.space/releases/"
+                           "hikari-" version ".tar.gz"))
+       (sha256
+        (base32 "1d023cphzi15k434n60l1rp5awxmdijvsxfrm59fmsvd5rjxh9q7"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("bmake" ,bmake)
+       ("pkg-config" ,pkg-config)
+       ("wayland-protocols" ,wayland-protocols)))
+    (inputs
+     `(("cairo" ,cairo)
+       ("libinput" ,libinput)
+       ("libucl" ,libucl)
+       ("libxkbcommon" ,libxkbcommon)
+       ("pam" ,linux-pam)
+       ("pango" ,pango)
+       ("wayland" ,wayland)
+       ("wlroots" ,wlroots)))
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:make-flags
+       (list
+        (string-append "PREFIX=" (assoc-ref %outputs "out"))
+        (string-append "CC=" ,(cc-for-target))
+        "WITH_XWAYLAND=YES"
+        "WITH_SCREENCOPY=YES"
+        "WITH_LAYERSHELL=YES"
+        "WITH_VIRTUAL_INPUT=YES")
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
+             (apply invoke "bmake" make-flags)))
+         (replace 'install
+           (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
+             (apply invoke "bmake" "install" make-flags))))))
+    (home-page "https://hikari.acmelabs.space/")
+    (synopsis "Stacking Wayland compositor with tiling capabilities")
+    (description
+     "Hikari is a stacking Wayland compositor with additional tiling
+capabilities.  It is heavily inspired by the Calm Window manager(cwm).")
+    (license license:bsd-2)))
+
+(define-public wlogout
+  (package
+    (name "wlogout")
+    (version "1.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ArtsyMacaw/wlogout")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1swhzkqkzli59c89pvrakfvicd00x7ga860c3x2pbb4y3xziqfvi"))))
+    (build-system meson-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("scdoc" ,scdoc)))
+    (inputs
+     `(("gtk-layer-shell" ,gtk-layer-shell)
+       ("gtk+" ,gtk+)))
+    (arguments
+     '(#:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack  'patch-source-paths
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "main.c"
+                 (("/usr/share") (string-append out "/share"))
+                 (("/etc") (string-append out "/etc"))))
+             #t)))))
+    (home-page "https://github.com/ArtsyMacaw/wlogout")
+    (synopsis "Logout menu for Wayland")
+    (description "wlogout is a logout menu for Wayland environments.")
+    (license license:expat)))