Subject: [PATCH] gnu: Add touchegg.
From: Rene Saavedra <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Tue, 03 May 2022 01:01:03 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

hello,

I share this package, I think (gnu/packages/toys.scm), it is a good place to live; but i can change it.

Cheers

--
Rene

From 655752f753facd039baae62ac06f9f55d8c50b1c Mon Sep 17 00:00:00 2001
From: Rene Saavedra <[email-masked]>
Date: Mon, 2 May 2022 19:50:37 -0500
Subject: [PATCH] gnu: Add touchegg.

* gnu/packages/toys.scm (touchegg): New variable.
---
 gnu/packages/toys.scm | 52 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
index 09426fe6fa..a3b127444c 100644
--- a/gnu/packages/toys.scm
+++ b/gnu/packages/toys.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2019, 2020, 2021 Timotej Lazar <[email-masked]>
 ;;; Copyright © 2020 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2021 Leo Famulari <[email-masked]>
+;;; Copyright © 2022 Rene Saavedra <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,6 +25,8 @@ (define-module (gnu packages toys)
   #:use-module (gnu packages)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages flex)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages man)
   #:use-module (gnu packages ncurses)
@@ -32,6 +35,7 @@ (define-module (gnu packages toys)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
@@ -331,3 +335,51 @@ (define-public cbonsai
     (description "Cbonsai is a bonsai tree generator using ASCII art.  It
 creates, colors, and positions a bonsai tree, and is configurable.")
     (license license:gpl3+)))
+
+(define-public touchegg
+  (package
+    (name "touchegg")
+    (version "2.0.14")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JoseExposito/touchegg")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0shvslz0c8nqx5f988z55qjc9xw0in9rb7b19r6vr1f7cdkqb6yr"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f ; No tests exist
+       #:configure-flags
+       (list "-DUSE_SYSTEMD=OFF") ; No systemd
+       #:phases
+       (modify-phases %standard-phases
+         ;; gnome-shell launch touchegg binary on startup and
+         ;; touchegg requires root privileges for proper functioning.
+         (add-after 'unpack 'disable-autostart
+           (lambda _
+             (substitute* "installation/touchegg.desktop"
+               (("Exec=touchegg")
+                "Exec=false")))))))
+    (native-inputs
+     (list
+      pkg-config))
+    (inputs
+     (list
+      cairo
+      gtk+
+      libgudev
+      libinput
+      libxrandr
+      libxtst
+      pugixml))
+    (home-page "https://github.com/JoseExposito/touchegg")
+    (synopsis "Linux multi-touch gesture recognizer")
+    (description
+     "Touchégg is an application that runs in the background and transform the
+gestures you make on your touchpad or touchscreen into visible actions in your
+desktop.  Touchégg only works on X11 and use libinput to communicate with
+hardware.")
+    (license license:gpl3+)))
-- 
2.34.0