Subject: [PATCH] gnu: Add ulauncher.
From: Sergio Pastor Pérez <[email-masked]>
To: [email-masked]
Cc: Sergio Pastor Pérez <[email-masked]>
Date: Wed, 2 Aug 2023 16:38:49 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/xdisorg.scm (ulauncher): New variable.
---
 gnu/packages/xdisorg.scm | 64 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index fff1bddd23..f24643f936 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -132,6 +132,8 @@ (define-module (gnu packages xdisorg)
   #:use-module (gnu packages polkit)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages syncthing)
@@ -140,6 +142,8 @@ (define-module (gnu packages xdisorg)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages terminals)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages wm)
+  #:use-module (gnu packages webkit)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages)
   #:use-module (ice-9 match))
@@ -1816,6 +1820,66 @@ (define-public xdpyprobe
 connectivity of the X server running on a particular @code{DISPLAY}.")
     (license license:gpl3+)))
 
+(define-public ulauncher
+  (package
+    (name "ulauncher")
+    (version "6.0.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Ulauncher/Ulauncher")
+                    (commit "1e68d47473f8e77d375cb4eca644c3cda68ed7e9")))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1c2czlrsf5aq8c88qliqbnqvf04q9cnjc1j6hivqa0w260mzjll1"))))
+    (build-system python-build-system)
+    (arguments
+     (list #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'fix-libX11
+                          (lambda* (#:key inputs #:allow-other-keys)
+                            (substitute* "ulauncher/utils/xinit.py"
+                              (("libX11.so.6")
+                               (search-input-file inputs "/lib/libX11.so")))))
+                        (add-after 'unpack 'fix-usr
+                          (lambda _
+                            (substitute* "setup.py"
+                              (("\\{sys.prefix\\}")
+                               (string-append #$output)))))
+                        (add-after 'unpack 'fix-os-release
+                          (lambda _
+                            (define (touch file)
+                              (call-with-output-file file
+                                (const #t)))
+                            (let* ((hard-path "/etc/os-release")
+                                   (fixed-path (string-append #$output
+                                                              hard-path)))
+                              ;; Make it relative
+                              ;; Update hardcoded path to something
+                              ;; within the build enviroment.
+                              (substitute* "ulauncher/utils/environment.py"
+                                ((hard-path)
+                                 fixed-path))
+                              ;; Create directory for the dummy file.
+                              (mkdir-p (string-append #$output "/etc"))
+                              (touch fixed-path))))
+                        (add-before 'check 'env-setup
+                          ;; The test require access to home to put temporary files.
+                          (lambda _
+                            (setenv "HOME"
+                                    (getcwd)))))))
+    (native-inputs (list intltool python-distutils-extra python-mock))
+    (inputs (list libx11 python-levenshtein python-pycairo))
+    (propagated-inputs (list keybinder libwnck gsettings-desktop-schemas
+                             python-pygobject webkitgtk-with-libsoup2))
+    (home-page "https://ulauncher.io")
+    (synopsis "Application launcher for Linux")
+    (description
+     "Ulauncher is a fast application launcher for Linux.  It is written in
+Python, using GTK+, and features: App Search (fuzzy matching), Calculator,
+Extensions, Shortcuts, File browser mode and Custom Color Themes.")
+    (license license:gpl3+)))
+
 (define-public rofi
   (package
     (name "rofi")

base-commit: 5aceacac65784bd2e1fd12304f965ae6026de49d
prerequisite-patch-id: c56db9fa7fc4e07452dea53f2d450bd83abbbc1a
prerequisite-patch-id: 3e6318d61f2efa01f4435152f2139eef8f72572c
prerequisite-patch-id: 1b23c59bab92820a1e102137909922f4d71ed8f9
prerequisite-patch-id: 78a291411f8d86beabbf6d49df0cc78702ad4e65
prerequisite-patch-id: 579224b39cae7869ce11e2e8dba046b5eef606c7
prerequisite-patch-id: f1f62fd5d83d603ca35c17071e615352e90753e3
prerequisite-patch-id: 1843bca37f83e494be67c24e975727fb1fe1248c
prerequisite-patch-id: 5cc0d6cd16ae2ab21c444ed9cabfeea5615e8cda
prerequisite-patch-id: 92a3fab6e4174a4d4877fc5b426752df81e4df39
prerequisite-patch-id: ebf3fd3a8bb02f7dc5cdf504f63d5028b29fe69e
prerequisite-patch-id: 863acbffb59c3b17fb4ea7e11710cbd793c0778d
prerequisite-patch-id: 076564693450d3e4a51cda68c47b856022f84e69
prerequisite-patch-id: 3dba62601b4aa1115aa973716684d7c29287aa06
-- 
2.39.2