Subject: [PATCH 4/4] gnu: Add qtile.

From: Stephen Paul Weber <[email-masked]>
Date: Mon, 18 Oct 2021 12:48:33 -0500

* gnu/packages/wm.scm (qtile): New variable.
---
 gnu/packages/wm.scm | 59 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 891a7960d6..95d34e2a84 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -83,6 +83,7 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages build-tools) ;for meson-0.55
   #:use-module (gnu packages calendar)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
@@ -101,6 +102,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lisp-xyz)
   #:use-module (gnu packages logging)
@@ -115,12 +117,15 @@
   #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-crypto)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages suckless)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xdisorg)
@@ -542,6 +547,60 @@ subscribe to events.")
 (define-public python2-i3-py
   (package-with-python2 python-i3-py))
 
+(define-public qtile
+  (package
+    (name "qtile")
+    (version "0.18.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "qtile" version))
+        (sha256
+          (base32 "14hb26xkza7brvkd4276j60mxd3zsas72ih6y0cq3j060izm1865"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f ; Tests require Xvfb and writable temp/cache space
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "libqtile/pangocffi.py"
+               (("^gobject = ffi.dlopen.*")
+                 (string-append "gobject = ffi.dlopen(\""
+                  (assoc-ref inputs "glib") "/lib/libgobject-2.0.so.0\")\n"))
+                (("^pango = ffi.dlopen.*")
+                 (string-append "pango = ffi.dlopen(\""
+                  (assoc-ref inputs "pango") "/lib/libpango-1.0.so.0\")\n"))
+                (("^pangocairo = ffi.dlopen.*")
+                 (string-append "pangocairo = ffi.dlopen(\""
+                  (assoc-ref inputs "pango") "/lib/libpangocairo-1.0.so.0\")\n"))))))))
+    (inputs
+      `(("glib" ,glib)
+        ("pango" ,pango)
+        ("pulseaudio" ,pulseaudio)))
+    (propagated-inputs
+      `(("python-cairocffi" ,python-cairocffi)
+        ("python-cffi" ,python-cffi)
+        ("python-dateutil" ,python-dateutil)
+        ("python-dbus-next" ,python-dbus-next)
+        ("python-iwlib" ,python-iwlib)
+        ("python-keyring" ,python-keyring)
+        ("python-mpd2" ,python-mpd2)
+        ("python-pyxdg" ,python-pyxdg)
+        ("python-xcffib" ,python-xcffib)))
+    (native-inputs
+      `(("pkg-config" ,pkg-config)
+        ("python-flake8" ,python-flake8)
+        ("python-pep8-naming" ,python-pep8-naming)
+        ("python-psutil" ,python-psutil)
+        ("python-pytest-cov" ,python-pytest-cov)
+        ("python-setuptools-scm" ,python-setuptools-scm)))
+    (home-page "http://qtile.org")
+    (synopsis "Hackable tiling window manager written and configured in Python")
+    (description "Qtile is simple, small, and extensible.  It's easy to write
+your own layouts, widgets, and built-in commands.")
+    (license license:expat)))
+
 (define-public quickswitch-i3
   (let ((commit "ed692b1e8f43b95bd907ced26238ce8ccb2ed28f")
         (revision "1")) ; Guix package revision
-- 
2.30.2