gnu: libinput: Update to 1.16.4.
[jackhill/guix/guix.git] / gnu / packages / xdisorg.scm
index 256b86a..93f23d6 100644 (file)
 ;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2016, 2017, 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2016 Petter <petter@mykolab.ch>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Nikita <nikita@n0.is>
@@ -27,7 +27,7 @@
 ;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
-;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
+;;; Copyright © 2019, 2020 Josh Holland <josh@inv.alid.pw>
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 David Wilson <david@daviwil.com>
 ;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
 ;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
+;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
+;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
+;;; Copyright © 2020 James Smith <jsubuntuxp@disroot.org>
+;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
+;;; Copyright © 2020 Zheng Junjie <873216071@qq.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -58,6 +64,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix hg-download)
   #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages sphinx)
   #:use-module (ice-9 match))
 
 ;; packages outside the x.org system proper
 
+(define-public xtitle
+  (package
+    (name "xtitle")
+    (version "0.4.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/baskerville/xtitle")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0f5070k2bwarghl1vq886pl52xck1x5p7x3qhlfchsc2y3dcqms9"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libxcb" ,libxcb)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-wm" ,xcb-util-wm)))
+    (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/baskerville/xtitle")
+    (synopsis "Output X window titles")
+    (description
+     "If arguments are given, @code{xtitle} outputs the title of each
+specified window, otherwise it outputs the title of the active window.  With
+@emph{snoop} mode on, it continuously monitors the specified windows and
+outputs when titles change.")
+    (license license:unlicense)))
+
 (define-public arandr
   (package
     (name "arandr")
@@ -161,7 +201,7 @@ program.")
 (define-public autorandr
   (package
     (name "autorandr")
-    (version "1.9")
+    (version "1.10.1")
     (home-page "https://github.com/phillipberndt/autorandr")
     (source
      (origin
@@ -171,8 +211,10 @@ program.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1bb0l7fcm5lcx9y02zdxv7pfdqf4v4gsc5br3v1x9gzjvqj64l7n"))))
+        (base32 "0msw9b1hdy3gbq9w5d04mfizhyirz1c648x84mlcbzl8salm7vpg"))))
     (build-system python-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("xrandr" ,xrandr)
        ("libxcb" ,libxcb)))
@@ -187,18 +229,20 @@ program.")
                  (("/usr") (assoc-ref outputs "out")))
                (substitute* "autorandr.py"
                  (("popen\\(\"xrandr") (string-append "popen(\"" xrandr))
-                 (("\\[\"xrandr") (string-append "[\"" xrandr))))
+                 (("\\[\"xrandr") (string-append "[\"" xrandr)))
+               (substitute* "contrib/autorandr_launcher/autorandr_launcher.c"
+                 (("/usr/bin/autorandr")
+                  (string-append (assoc-ref outputs "out") "/bin/autorandr")))
+               (setenv "CC" "gcc"))
              #t))
          (add-after 'install 'install-contrib
            (lambda* (#:key outputs #:allow-other-keys)
              (invoke "make"
                      (string-append "DESTDIR=" (assoc-ref outputs "out"))
                      "PREFIX="
-                     "BASH_COMPLETIONS_DIR=etc/bash_completiond.d"
-                     "install_manpage"
-                     "install_bash_completion"
-                     "install_launcher"
-                     "install_autostart_config"))))))
+                     "BASH_COMPLETIONS_DIR=etc/bash_completion.d"
+                     "install"
+                     "TARGETS=autorandr launcher manpage bash_completion"))))))
     (synopsis "Auto-detect connected displays and load appropriate setup")
     (description "Autorandr wraps around xrandr to help with X11
 multi-screen configuration management.  It allows the user to create profiles
@@ -210,19 +254,27 @@ used to further tweak the behaviour of the different profiles.")
 (define-public bemenu
   (package
     (name "bemenu")
-    (version "0.2.0")
+    (version "0.4.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/Cloudef/bemenu.git")
+             (url "https://github.com/Cloudef/bemenu")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0piax49az5kp96r1g6dcgj87fi6p4jl286wlkxsdvljzpkn8q6gv"))))
-    (build-system cmake-build-system)
+        (base32 "1fjcs9d3533ay3nz79cx3c0lmy2chgragr2lhsy0xl2ckr0iins0"))))
+    (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("-DBEMENU_WAYLAND_RENDERER=ON")))
+     '(#:tests? #f
+       #:make-flags (list "CC=gcc"
+                          "CFLAGS=-O2 -fPIC"
+                          (string-append "LDFLAGS=-Wl,-rpath="
+                                         (assoc-ref %outputs "out") "/lib")
+                          (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
     (inputs
      `(("cairo" ,cairo)
        ("libx11" ,libx11)
@@ -241,7 +293,7 @@ used to further tweak the behaviour of the different profiles.")
      "bemenu is a dynamic menu which allows the user to flexibly select from a
 list of options (usually programs to launch).  It renders the menu graphically
 with X11 or Wayland, or in a text terminal with ncurses.")
-    (license (list license:gpl3+        ; client program[s] and other sources
+    (license (list license:gpl3+ ; client program[s] and other sources
                    license:lgpl3+))))   ; library and bindings
 
 (define-public copyq
@@ -251,7 +303,7 @@ with X11 or Wayland, or in a text terminal with ncurses.")
   (source (origin
             (method git-fetch)
             (uri (git-reference
-                   (url "https://github.com/hluk/CopyQ.git")
+                   (url "https://github.com/hluk/CopyQ")
                    (commit (string-append "v" version))))
             (file-name (git-file-name name version))
             (sha256
@@ -282,7 +334,7 @@ application.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/astrand/xclip.git")
+             (url "https://github.com/astrand/xclip")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -306,18 +358,19 @@ avoiding password prompts when X11 forwarding has already been setup.")
 (define-public libxkbcommon
   (package
     (name "libxkbcommon")
-    (version "0.10.0")
+    (version "1.0.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://xkbcommon.org/download/libxkbcommon-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "1wmnl0hngn6vrqrya4r8hvimlkr4jag39yjprls4gyrqvh667hsp"))))
+               "13bcdf2xpjxwbghas0cr448z89qqki2ssgfgswc257y9859v4s5b"))))
     (build-system meson-build-system)
     (inputs
      `(("libx11" ,libx11)
        ("libxcb" ,libxcb)
+       ("libxml2" ,libxml2)
        ("wayland" ,wayland)
        ("wayland-protocols" ,wayland-protocols)
        ("xkeyboard-config" ,xkeyboard-config)))
@@ -342,7 +395,8 @@ system applications; currently that includes Wayland, kmscon, GTK+, Qt,
 Clutter, and more.  Despite the name, it is not currently used by anything
 X11 (yet).")
     (license (license:x11-style "file://COPYING"
-                                "See 'COPYING' in the distribution."))))
+                                "See 'COPYING' in the distribution."))
+    (properties '((cpe-name . "xkbcommon")))))
 
 (define-public libfakekey
   (package
@@ -455,45 +509,45 @@ following the mouse.")
   (package
     (name "pixman")
     (version "0.38.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://www.cairographics.org/releases/pixman-"
-                    version ".tar.gz"))
-              (sha256
-               (base32
-                "1ryxzdf048x7wsx4dlvrr1p00gzwfs7lybnhgc7ygbj0dvyxcrns"))
-              (patches (search-patches "pixman-CVE-2016-5296.patch"))))
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "https://www.cairographics.org/releases/pixman-"
+         version ".tar.gz"))
+       (sha256
+        (base32 "1ryxzdf048x7wsx4dlvrr1p00gzwfs7lybnhgc7ygbj0dvyxcrns"))
+       (patches
+        (search-patches
+         "pixman-CVE-2016-5296.patch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--disable-static")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("libpng" ,libpng)
        ("zlib" ,zlib)))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (home-page "http://www.pixman.org/")
     (synopsis "Low-level pixel manipulation library")
     (description "Pixman is a low-level software library for pixel
 manipulation, providing features such as image compositing and trapezoid
 rasterisation.")
+    (home-page "http://www.pixman.org/")
     (license license:x11)))
 
 (define-public libdrm
   (package
     (name "libdrm")
-    (version "2.4.100")
-    (source
-      (origin
-        (method url-fetch)
-        (uri (string-append
-               "https://dri.freedesktop.org/libdrm/libdrm-"
-               version
-               ".tar.bz2"))
-        (sha256
-         (base32
-          "0p8a1l3a3s40i81mawm8nhrbk7p97ss05qkawp1yx73c30lchz67"))
-        (patches (search-patches "libdrm-symbol-check.patch"))))
+    (version "2.4.102")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://dri.freedesktop.org/libdrm/libdrm-"
+                    version ".tar.xz"))
+              (sha256
+               (base32
+                "0nx0bd9dhymdsd99v4ifib77yjirkvkxf5hzdkbr7qr8dhrzkjwb"))))
     (build-system meson-build-system)
     (arguments
      `(#:configure-flags
@@ -615,17 +669,18 @@ move windows, switch between desktops, etc.).")
 (define-public scrot
   (package
     (name "scrot")
-    (version "1.2")
+    (version "1.4")
     (source
      (origin
        (method git-fetch)
        (uri
         (git-reference
-         (url "https://github.com/resurrecting-open-source-projects/scrot.git")
+         (url "https://github.com/resurrecting-open-source-projects/scrot")
          (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08gkdby0ysx2mki57z81zlm7vfnq9c1gq692xw67cg5vv2p3320w"))))
+        (base32
+         "12xq6glg70icwsvbnfw9gm4dahlbnrc7b6adpd0mpf89h4sj2gds"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -635,6 +690,7 @@ move windows, switch between desktops, etc.).")
      `(("giblib" ,giblib)
        ("libx11" ,libx11)
        ("libXcursor" ,libxcursor)
+       ("libxcomposite" ,libxcomposite)
        ("libXfixes" ,libxfixes)))
     (home-page "https://github.com/resurrecting-open-source-projects/scrot")
     (synopsis "Command-line screen capture utility for X Window System")
@@ -653,7 +709,7 @@ of the screen selected by mouse.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/naelstrof/slop.git")
+                    (url "https://github.com/naelstrof/slop")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -686,7 +742,7 @@ selection's dimensions to stdout.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/naelstrof/maim.git")
+                    (url "https://github.com/naelstrof/maim")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -793,7 +849,7 @@ to find buttons, etc, on the screen to click on.")
 (define-public xbanish
   (package
     (name "xbanish")
-    (version "1.6")
+    (version "1.7")
     (home-page "https://github.com/jcs/xbanish")
     (source (origin
               (method git-fetch)
@@ -802,14 +858,14 @@ to find buttons, etc, on the screen to click on.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0vp8ja68hpmqkl61zyjar3czhmny1hbm74m8f393incfz1ymr3i8"))))
+                "0ic5f7zgc32p5g1wxas9y5h8dhik0pvsa8wmn6skdry56gw9vg9q"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f                      ;no tests
+     `(#:tests? #f                      ; no tests
        #:make-flags (list "CC=gcc"
                           (string-append "PREFIX=" (assoc-ref %outputs "out")))
        #:phases (modify-phases %standard-phases
-                  (delete 'configure))))
+                  (delete 'configure)))) ; no configure script
     (inputs
      `(("libx11" ,libx11)
        ("libxfixes" ,libxfixes)
@@ -824,7 +880,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
 (define-public xlockmore
   (package
     (name "xlockmore")
-    (version "5.62")
+    (version "5.66")
     (source (origin
              (method url-fetch)
              (uri (list (string-append "http://sillycycle.com/xlock/"
@@ -835,7 +891,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
                                        "xlockmore-" version ".tar.xz")))
              (sha256
               (base32
-               "0b05wgj4mpssy4hd7km5c48i454dfg45p11mfmsr7xjd2gnz5gqi"))))
+               "0wdb7gpyjw3sigmhiplgg1bqxz6wipr0c3n9492x2a18cv1saxjr"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list (string-append "--enable-appdefaultdir="
@@ -886,7 +942,7 @@ transparent text on your screen.")
 (define-public xbindkeys
   (package
     (name "xbindkeys")
-    (version "1.8.6")
+    (version "1.8.7")
     (source (origin
               (method url-fetch)
               ;; Download from the savannah mirror list fails
@@ -896,11 +952,13 @@ transparent text on your screen.")
                     ".tar.gz"))
               (sha256
                (base32
-                "060df6d8y727jp1inp7blp44cs8a7jig7vcm8ndsn6gw36z1h3bc"))))
+                "1wl2vc5alisiwyk8m07y1ryq8w3ll9ym83j27g4apm4ixjl8d6x2"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
      `(("libx11" ,libx11)
-       ("guile" ,guile-2.0)))
+       ("guile" ,guile-2.2)))
     (home-page "https://www.nongnu.org/xbindkeys/")
     (synopsis "Associate a combination of keys with a shell command")
     (description
@@ -917,7 +975,7 @@ Guile will work for XBindKeys.")
 (define-public sxhkd
   (package
     (name "sxhkd")
-    (version "0.6.1")
+    (version "0.6.2")
     (source
      (origin
        (method git-fetch)
@@ -926,7 +984,7 @@ Guile will work for XBindKeys.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0j7bl2l06r0arrjzpz7al9j6cwzc730knbsijp7ixzz96pq7xa2h"))))
+        (base32 "1winwzdy9yxvxnrv8gqpigl9y0c2px27mnms62bdilp4x6llrs9r"))))
     (build-system gnu-build-system)
     (inputs
      `(("asciidoc" ,asciidoc)
@@ -966,7 +1024,8 @@ compact configuration syntax.")
      ;; This sets the destination when installing the necessary terminal
      ;; capability data, which are not provided by 'ncurses'.  See
      ;; https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html
-     `(#:make-flags (list (string-append "TERMINFO="
+     `(#:configure-flags (list "--enable-256-color")
+       #:make-flags (list (string-append "TERMINFO="
                                          (assoc-ref %outputs "out")
                                          "/share/terminfo"))
        #:phases
@@ -1037,7 +1096,7 @@ within a single process.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/alols/xcape.git")
+                    (url "https://github.com/alols/xcape")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1067,7 +1126,7 @@ Escape key when Left Control is pressed and released on its own.")
 (define-public libwacom
   (package
     (name "libwacom")
-    (version "1.3")
+    (version "1.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1075,7 +1134,7 @@ Escape key when Left Control is pressed and released on its own.")
                     "libwacom-" version "/libwacom-" version ".tar.bz2"))
               (sha256
                (base32
-                "0g48cdg2qpvrr2nk8ccibjg3iv7iqskdv66izxacqx70w47y1771"))))
+                "1a5ffxyhl6crspybcfsx5ribgrgkzwfl5w9y32slxbgjwczb473h"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      `(#:configure-flags '("--disable-static")))
@@ -1151,6 +1210,50 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).")
         (base32
          "1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:imported-modules (,@%gnu-build-system-modules
+                           (guix build python-build-system))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'split-outputs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gtk (assoc-ref outputs "gtk"))
+                   (desktop-file "/share/applications/redshift-gtk.desktop"))
+               (mkdir-p (string-append gtk "/bin"))
+               (link (string-append out "/bin/redshift-gtk")
+                     (string-append gtk "/bin/redshift-gtk"))
+               (delete-file (string-append out "/bin/redshift-gtk"))
+               (copy-recursively (string-append out "/lib")
+                                 (string-append gtk "/lib"))
+               (delete-file-recursively (string-append out "/lib"))
+               (mkdir-p (string-append gtk "/share/applications"))
+               (link (string-append out desktop-file)
+                     (string-append gtk desktop-file))
+               (delete-file (string-append out desktop-file))
+               (with-directory-excursion (string-append out "/share")
+                 (for-each (lambda (dir)
+                             (copy-recursively
+                              (string-append out "/share/" dir)
+                              (string-append gtk "/share/" dir))
+                             (delete-file-recursively dir))
+                           '("appdata" "icons")))
+               #t)))
+         (add-after 'split-outputs 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((gtk (assoc-ref outputs "gtk"))
+                    (python-version
+                     (@ (guix build python-build-system) python-version))
+                    (python (assoc-ref inputs "python"))
+                    (sitedir (string-append gtk "/lib/python"
+                                            (python-version python)
+                                            "/site-packages")))
+               (wrap-program (string-append gtk "/bin/redshift-gtk")
+                 `("PYTHONPATH" ":" prefix
+                   (,(string-append sitedir ":" (getenv "PYTHONPATH"))))
+                 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
+               #t))))))
+    (outputs '("out" "gtk"))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("intltool" ,intltool)))
@@ -1159,7 +1262,13 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).")
        ("libx11" ,libx11)
        ("libxcb" ,libxcb)
        ("libxxf86vm" ,libxxf86vm)
-       ("glib" ,glib)))                 ; for Geoclue2 support
+       ("glib" ,glib)                   ;for Geoclue2 support
+
+       ;; To build the GTK3 GUI, we need these.
+       ("gtk+" ,gtk+)
+       ("python" ,python)
+       ("python-pygobject" ,python-pygobject)
+       ("python-pyxdg" ,python-pyxdg)))
     (home-page "https://github.com/jonls/redshift")
     (synopsis "Adjust the color temperature of your screen")
     (description
@@ -1180,13 +1289,31 @@ color temperature should be set to match the lamps in your room.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/minus7/redshift.git")
+                      (url "https://github.com/minus7/redshift")
                       (commit commit)))
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
                   "0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957"))))
       (build-system gnu-build-system)
+      (arguments
+       '(#:phases (modify-phases %standard-phases
+                    (add-after 'install 'create-desktop-file
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        ;; For the GeoClue provider to work, a .desktop file
+                        ;; needs to be provided.  A template is available,
+                        ;; but it only gets installed when the GUI is enabled.
+                        ;; Install it manually for this Wayland variant.
+                        (let* ((out (assoc-ref outputs "out"))
+                               (desktop-file
+                                (string-append
+                                 out "/share/applications/redshift.desktop")))
+                          (mkdir-p (dirname desktop-file))
+                          (copy-file "data/applications/redshift.desktop.in"
+                                     desktop-file)
+                          (substitute* desktop-file
+                            (("^_") ""))
+                          #t))))))
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)
@@ -1279,6 +1406,44 @@ demos.  It also acts as a nice screen locker.")
                "http://metadata.ftp-master.debian.org/changelogs/"
                "/main/x/xscreensaver/xscreensaver_5.36-1_copyright")))))
 
+(define-public xssproxy
+  (package
+    (name "xssproxy")
+    (version "1.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/timakro/xssproxy")
+                    (commit (string-append "v" version))))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0c83wmipnsdnbihc5niyczs7jrkss2s8n6iwwjdia7hkjzbd0hl7"))))
+    (build-system gnu-build-system)
+    (arguments `(#:make-flags `("bindir=/bin"
+                                "man1dir=/share/man/man1"
+                                ,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
+                                "CC=gcc")
+                 #:phases (modify-phases %standard-phases
+                            (delete 'configure)
+                            (delete 'check))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("libx11" ,libx11)
+       ("libxext" ,libxext)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ("dbus" ,dbus)))
+    (synopsis "Forward freedesktop.org Idle Inhibition Service calls to Xss")
+    (description "xssproxy implements the @code{org.freedesktop.ScreenSaver}
+D-Bus interface described in the Idle Inhibition Service Draft by the
+freedesktop.org developers.  The inhibition of the screensaver is then
+controlled using the XScreenSaverSuspend function from the Xss (X11 Screen
+Saver extension) library.")
+    (home-page "https://github.com/timakro/xssproxy")
+    (license license:gpl3+)))
+
 (define-public xsel
   (package
     (name "xsel")
@@ -1330,7 +1495,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
 (define-public rofi
   (package
     (name "rofi")
-    (version "1.5.4")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/DaveDavenport/rofi/"
@@ -1338,13 +1503,14 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
                                   version "/rofi-" version ".tar.xz"))
               (sha256
                (base32
-                "1nslmyqyzhfr4hxd4llqkkkb8ap8apkdna32rllvar7r576059ci"))))
+                "12p9z8bl1gg8k024m4a6zfz7gf1zbyffardh98raqgabn6knwk22"))))
     (build-system gnu-build-system)
     (inputs
      `(("pango" ,pango)
        ("cairo" ,cairo)
        ("glib" ,glib)
        ("startup-notification" ,startup-notification)
+       ("libjpeg" ,libjpeg-turbo)
        ("librsvg" ,librsvg)
        ("libxkbcommon" ,libxkbcommon)
        ("libxcb" ,libxcb)
@@ -1432,7 +1598,7 @@ actions, a built-in clock, a battery monitor and a system tray.")
      (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/robm/dzen.git")
+                    (url "https://github.com/robm/dzen")
                     (commit commit)))
               (file-name (string-append name "-" version))
               (sha256
@@ -1504,13 +1670,13 @@ program for X11.  It was designed to be fast, tiny and scriptable in any languag
        #:make-flags
        (let ((out (assoc-ref %outputs "out")))
          (list (string-append "DESTDIR=" out)))))
+    (home-page "https://github.com/vixus0/xftwidth")
     (synopsis "Calculator for determining pixel widths of displayed text using Xft fonts")
     (description "xftwidth is a small C program for calculating the pixel
 widths of displayed text using Xft fonts. It is especially useful in scripts
 for displaying text in graphical panels, menus, popups, and notification
 windows generated using dzen. These scripts are often used in conjunction with
 minimalistic tiling window managers such as herbstluftwm and bspwm.")
-    (home-page "http://github.com/vixus0/xftwidth")
     (license license:expat)))
 
 (define-public xcb-util-xrm
@@ -1602,7 +1768,7 @@ invert colors on a specific display/screen.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/dusxmt/nxbelld.git")
+                    (url "https://github.com/dusxmt/nxbelld")
                     (commit version)))
               (sha256
                (base32
@@ -1798,7 +1964,7 @@ to automatically turn it on on login.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/zoltanp/xrandr-invert-colors.git")
+                    (url "https://github.com/zoltanp/xrandr-invert-colors")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -1828,7 +1994,7 @@ colors on all monitors attached to an XRandR-capable X11 display server.")
 (define-public sct
   (package
     (name "sct")
-    (version "0.4")
+    (version "0.5")
     (source
      (origin
        (method url-fetch)
@@ -1836,12 +2002,12 @@ colors on all monitors attached to an XRandR-capable X11 display server.")
         (string-append "https://www.umaxx.net/dl/sct-"
                        version ".tar.gz"))
        (sha256
-        (base32
-         "0r57z9ki8pvxhawfxys0v5h85z2x211sqxki0xvk1bga88ryldlv"))))
+        (base32 "0lrhx771iccbw04wrhj0ygids1pzmjfc4hvklm30m3p3flvhqf0m"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags (list "CC=gcc")
-       #:tests? #f ; No tests exist.
+     `(#:make-flags
+       (list ,(string-append "CC=" (cc-for-target)))
+       #:tests? #f                      ; no test suite
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -1897,7 +2063,7 @@ temperature of the screen.")
          "--with-xkb"
          "--with-default-authproto-module=/run/setuid-programs/authproto_pam")))
     (native-inputs
-     `(("pandoc" ,ghc-pandoc)
+     `(("pandoc" ,pandoc)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -1933,7 +2099,7 @@ binary to setuid-binaries:
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/bugaevc/wl-clipboard.git")
+             (url "https://github.com/bugaevc/wl-clipboard")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -1983,7 +2149,7 @@ The cutbuffer and clipboard selection are always synchronized.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/johanmalm/jgmenu.git")
+             (url "https://github.com/johanmalm/jgmenu")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2027,7 +2193,7 @@ can optionally use some appearance settings from XSettings, tint2 and GTK.")
 (define-public xwallpaper
   (package
     (name "xwallpaper")
-    (version "0.6.4")
+    (version "0.6.5")
     (source
      (origin
        (method git-fetch)
@@ -2036,8 +2202,7 @@ can optionally use some appearance settings from XSettings, tint2 and GTK.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "175fzifvia58vah2x7509drvfn3xfv5d9szgh9x1w1a1w8rcs2hx"))))
+        (base32 "121ai4dc0v65qk12gn9w62ixly8hc8a5qrygkbb82vy8ck4jqxj7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -2103,7 +2268,7 @@ Xwrits hides itself until you should take another break.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/derat/xsettingsd.git")
+             (url "https://github.com/derat/xsettingsd")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2169,7 +2334,7 @@ configuring visual settings in different UI toolkits separately.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/cdown/clipnotify.git")
+             (url "https://github.com/cdown/clipnotify")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
@@ -2188,9 +2353,9 @@ configuring visual settings in different UI toolkits separately.")
                (install-file "clipnotify" bin)
                (install-file "README.md" doc)
                #t))))
-       #:make-flags (list "CC=gcc")
-       ;; the package provides no test suite:
-       #:tests? #f))
+       #:make-flags
+       (list ,(string-append "CC=" (cc-for-target)))
+       #:tests? #f))                    ; no test suite
     (inputs
      `(("libx11" ,libx11)
        ("libXfixes" ,libxfixes)))
@@ -2220,7 +2385,7 @@ tools to complement clipnotify.")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/cdown/clipmenu.git")
+               (url "https://github.com/cdown/clipmenu")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -2299,7 +2464,7 @@ After selection, the clip is put onto the PRIMARY and CLIPBOARD X selections.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/qnikst/kbdd.git")
+             (url "https://github.com/qnikst/kbdd")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
@@ -2312,7 +2477,7 @@ After selection, the clip is put onto the PRIMARY and CLIPBOARD X selections.")
        ("glib" ,glib "bin")
        ("pkg-config" ,pkg-config)))
     (inputs
-     `(("dbus-glib"dbus-glib)
+     `(("dbus-glib" ,dbus-glib)
        ("glib" ,glib)
        ("libx11" ,libx11)))
     (home-page "https://github.com/qnikst/kbdd")
@@ -2331,16 +2496,16 @@ create layout indicator widgets.")
 (define-public j4-dmenu-desktop
   (package
     (name "j4-dmenu-desktop")
-    (version "2.17")
+    (version "2.18")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/enkore/j4-dmenu-desktop.git")
+                    (url "https://github.com/enkore/j4-dmenu-desktop")
                     (commit (string-append "r" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0v23fimkn83dcm5p53y2ymhklff3kwppxhf75sm8xmswrzkixpgc"))))
+                "1gxpgifzy0hnpd0ymw3r32amzr32z3bgb90ldjzl438p6h1q0i26"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("catch2" ,catch-framework2)))
@@ -2348,6 +2513,11 @@ create layout indicator widgets.")
      `(#:configure-flags '("-DWITH_GIT_CATCH=off")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'find-catch
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("PATH_SUFFIXES catch") "PATH_SUFFIXES catch2"))
+             #t))
          (replace 'check
            (lambda _
              (invoke "./j4-dmenu-tests" "exclude:SearchPath/XDG_DATA_HOME"))))))
@@ -2358,3 +2528,134 @@ is to find @file{.desktop} files and offer you a menu to start an application
 using @command{dmenu}.")
     (home-page "https://github.com/enkore/j4-dmenu-desktop")
     (license license:gpl3+)))
+
+(define-public wofi
+  (package
+    (name "wofi")
+    (version "1.2.3")
+    (source (origin
+              (method hg-fetch)
+              (uri (hg-reference
+                    (url "https://hg.sr.ht/~scoopta/wofi")
+                    (changeset (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0glpb2gf5n78s01z3rn614ak8ibxhfr824gy6xlljbxclgds264i"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:glib-or-gtk? #t))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gtk3" ,gtk+)
+       ("wayland" ,wayland)))
+    (synopsis "Launcher/menu program for wayland")
+    (description
+     "Wofi is a launcher/menu program for wlroots based wayland compositors
+such as sway, similar to @command{rofi}.")
+    (home-page "https://hg.sr.ht/~scoopta/wofi")
+    (license license:gpl3+)))
+
+(define-public dex
+  (package
+    (name "dex")
+    (version "0.9.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url (string-append "https://github.com/jceb/dex"))
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "03aapcywnz4kl548cygpi25m8adwbmqlmwgxa66v4156ax9dqs86"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))
+       #:tests? #f))
+    (inputs
+     `(("python", python)))
+    (native-inputs
+     `(("python-sphinx" ,python-sphinx)))
+    (home-page "https://github.com/jceb/dex")
+    (synopsis "Execute DesktopEntry files")
+    (description
+     "@command{dex}, @dfn{DesktopEntry Execution}, is a program to generate
+and execute @file{.desktop} files of the Application type.")
+    (license license:gpl3+)))
+
+(define-public sx
+  (package
+    (name "sx")
+    (version "2.1.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Earnestly/sx")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0p24ghp1ygvyc2hv81byhxax7491yhcc5priq5ldv07nzl7akagc"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f                      ; no tests
+       #:make-flags
+       (let ((out (assoc-ref %outputs "out")))
+         (list (string-append "PREFIX=" out)))
+       #:phases
+       (modify-phases %standard-phases
+         ;; no configure script
+         (delete 'configure))))
+    (propagated-inputs
+     `(("xauth" ,xauth)))
+    (home-page "https://github.com/Earnestly/sx")
+    (synopsis "Start an xorg server")
+    (description
+     "@command{sx} is a simple alternative to both @command{xinit} and
+@command{startx} for starting an Xorg server.")
+    (license license:x11)))
+
+(define-public hsetroot
+  (package
+    (name "hsetroot")
+    (version "1.0.5")
+    (home-page "https://github.com/himdel/hsetroot")
+    (source (origin
+              (method git-fetch)
+              (file-name (git-file-name name version))
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (sha256
+               (base32
+                "1jbk5hlxm48zmjzkaq5946s58rqwg1v1ds2sdyd2ba029hmvr722"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       #:make-flags
+       (list
+        "CC=gcc"
+        (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'install 'mkdir-install-path
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/bin"))))))))
+    (inputs
+     `(("libx11" ,libx11)
+       ("imlib2" ,imlib2)
+       ("libxinerama" ,libxinerama)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (synopsis "Imlib2-based wallpaper changer")
+    (description
+     "The @command{hsetroot} command composes wallpapers for X.
+This package is the fork of hsetroot by Hyriand.")
+    (license license:gpl2+)))