John Kehayias wrote 3 years ago
(name . Guix-patches)(address . guix-patches@gnu.org)(name . ~whereiseveryone/guixrus@lists.sr.ht)(address . ~whereiseveryone/guixrus@lists.sr.ht)
Hello,
Here is a patch for autokey, a python based program for things like keyboard shortcuts and text expansion. I find it invaluable for having emacs-like keys everywhere.
It includes both a gtk and qt frontend; after discussion on IRC I decided against trying to split them. Since it is one package and it is built together, it is a bit tricky I think to disentangle the code and paths needed for each. In my first attempts it didn't reduce the closure and needed a lot of manual work. Possibly it could work with more effort, but since this is used as a GUI tool primarily, the GTK/QT packages shouldn't be adding anything new.
John
From 419a8587d6101b8ac48922ff06d75ecd405e16e9 Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Wed, 12 Jan 2022 15:51:17 -0500
Subject: [PATCH] gnu: Add autokey.
* gnu/packages/python-xyz.scm (autokey): New variable.
---
gnu/packages/python-xyz.scm | 62 +++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
Toggle diff (82 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 4df794eb60..b85232f2b7 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -114,6 +114,7 @@
;;; Copyright © 2021 ZmnSCPxj <ZmnSCPxj@protonmail.com>
;;; Copyright © 2021 Filip Lajszczak <filip@lajszczak.dev>
;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4180,6 +4181,67 @@ (define-public python-anytree
structure for Python.")
(license license:asl2.0)))
+(define-public autokey
+ (package
+ (name "autokey")
+ (version "0.95.10")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/autokey/autokey")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0f0cqfnb49wwdy7zl2f2ypcnd5pc8r8n7z7ssxkq20d4xfxlgamr"))))
+ (build-system python-build-system)
+ (arguments
+ (list
+ #:tests? #f ; Tests are deprecated/broken until next version.
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "lib/autokey/scripting.py"
+ (("\"wmctrl\"")
+ (string-append "\"" (search-input-file inputs "bin/wmctrl") "\""))
+ (("\"zenity\"")
+ (string-append "\"" (search-input-file inputs "bin/zenity") "\"")))))
+ (add-after 'install 'wrap-autokey
+ (lambda _
+ (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (for-each
+ (lambda (program)
+ (wrap-program program
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
+ (map (lambda (name)
+ (string-append #$output "/bin/" name))
+ '("autokey-gtk"
+ "autokey-shell")))))))))
+ (inputs
+ (list bash-minimal ; for wrap-program
+ gtksourceview-3
+ libappindicator
+ libnotify
+ wmctrl
+ zenity))
+ (propagated-inputs
+ (list python-dbus
+ python-pygobject
+ python-pyinotify
+ python-pyqt+qscintilla
+ python-xlib))
+ (home-page "https://github.com/autokey/autokey")
+ (synopsis
+ "Keyboard and GUI automation utility")
+ (description
+ "AutoKey is a desktop automation utility for X11. It allows the automation of
+virtually any task by responding to typed abbreviations and hotkeys. It
+offers a full-featured GUI (GTK and QT versions) that makes it highly
+accessible for novices, as well as a scripting interface offering the full
+flexibility and power of the Python language.")
+ (license license:gpl3+)))
+
(define-public python-docutils
(package
(name "python-docutils")
--
2.34.0