Message ID | Kubuvj_ZYaawCDW6qu7U-Z-q_Sj1s_8I8hNmJo1u-hkGHByPRsJ_y6joxVtJiJnezoX01VMS1538BIBPlkhDKYxnu0uwEA3nZzb_YRDbszE=@protonmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [bug#53222] gnu: Add autokey. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
Hello, John Kehayias via Guix-patches via <guix-patches@gnu.org> writes: > 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. Applied. Thank you. Regards,
Hi, John Kehayias via Guix-patches via schreef op wo 12-01-2022 om 21:03 [+0000]: > + #:tests? #f ; Tests are deprecated/broken until next version. How can a test be deprecated? What tests are broken? Are the tests broken, or do they fail because of a real issue? > + (wrap-program program > + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib- > path)))) Do we need to include the GI_TYPELIB_PATH from the environment? If not, I recommend '=' instead of 'prefix' to avoid potential trouble. > + (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 If you add "GUIX_PYTHONPATH" to the wrap-program, then probably the propagated inputs can be moved to the regular inputs (since 'autokey' appeas to be used as a few binaries and not as a python _library_). Greetings, Maxime.
Hi Maxime and Nicolas, ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Wednesday, January 12th, 2022 at 4:26 PM, Maxime Devos wrote: > > + #:tests? #f ; Tests are deprecated/broken until next version. > > How can a test be deprecated? > What tests are broken? > Are the tests broken, or do they fail because of a real issue? > Sort of both? They relied on python2 and had not been updated, so they didn't work (at all from what I see) and were therefore due for replacement in the new version (forthcoming). See https://github.com/autokey/autokey/issues/327 where they say "The current tests are deprecated and won’t work." That's why I said it that way in the comment, sorry if that wasn't clear. The new version that seems due soon has a new test framework (tox). > > + (wrap-program program > > + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib- > > path)))) > > Do we need to include the GI_TYPELIB_PATH from the environment? > If not, I recommend '=' instead of 'prefix' to avoid potential trouble. > I'm not sure, I was following the examples I saw. For whatever reason, nearly all of them do it that way (I think I only saw one or two as '=', in my quick look). Anyway, I think you are right that it shouldn't be needed, probably the same for a lot of other packages? I think it works with '=' instead, in my quick test. > > If you add "GUIX_PYTHONPATH" to the wrap-program, > then probably the propagated inputs can be moved to the regular inputs > (since 'autokey' appeas to be used as a few binaries and not > as a python library). > I'm confused on this as these are already wrapped with GUIX_PYTHONPATH (the bin outputs are python scripts) without adding it explicitly. Trying with the propagated-inputs being regular inputs seems to work fine too. Although I haven't used it this way, there is also scripting with autokey. One of the included programs is autokey-shell which is a python shell of sorts. I'm not sure if that would make a difference and I don't have anything offhand to test with. I can submit a patch to change the wrap and inputs if that would be cleaner. Thanks! John
John Kehayias schreef op wo 12-01-2022 om 21:55 [+0000]: > Hi Maxime and Nicolas, > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ > > On Wednesday, January 12th, 2022 at 4:26 PM, Maxime Devos wrote: > > > > + #:tests? #f ; Tests are deprecated/broken until next version. > > > > How can a test be deprecated? > > What tests are broken? > > Are the tests broken, or do they fail because of a real issue? > > > Sort of both? They relied on python2 and had not been updated, so they didn't work (at all from what I see) and were therefore due for replacement in the new version (forthcoming). > > See https://github.com/autokey/autokey/issues/327 where they say "The current tests are deprecated and won’t work." That's why I said it that way in the comment, sorry if that wasn't clear. The new version that seems due soon has a new test framework (tox). Adding a link to <https://github.com/autokey/autokey/issues/327> in the comment should be sufficient: ;; Tests are deprecated and broken until the next version, see ;; <https://github.com/autokey/autokey/issues/327>. #:tests? #false > > > + (wrap-program program > > > + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib- > > > path)))) > > > > Do we need to include the GI_TYPELIB_PATH from the environment? > > If not, I recommend '=' instead of 'prefix' to avoid potential trouble. > > > > I'm not sure, I was following the examples I saw. For whatever reason, nearly all of them do it that way (I think I only saw one or two as '=', in my quick look). Anyway, I think you are right that it shouldn't be needed, probably the same for a lot of other packages? I think it works with '=' instead, in my quick test. I think it isn't needed, but because it allows scripting in python (and hence can benefit from any python libraries in the environment, possibly including python libraries using GI_TYPELIB_PATH) ... > > > > If you add "GUIX_PYTHONPATH" to the wrap-program, > > then probably the propagated inputs can be moved to the regular inputs > > (since 'autokey' appeas to be used as a few binaries and not > > as a python library). > > > > I'm confused on this as these are already wrapped with GUIX_PYTHONPATH (the bin outputs are python scripts) without adding it explicitly. Trying with the propagated-inputs being regular inputs seems to work fine too. (seems like this is done implicitely by 'wrap' in (guix build python- build-system)) > Although I haven't used it this way, there is also scripting with autokey. One of the included programs is autokey-shell which is a python shell of sorts. I'm not sure if that would make a difference and I don't have anything offhand to test with. it would be nice if the user could install additional python libraries to use from their scripts, so I think 'prefix' would be better here. (If I'm not mistaken about Python's loading order, locations early in GUIX_PYTHONPATH have priority above later entries, so there shouldn't be any problems unless autokey has undeclared dependencies). > I can submit a patch to change the wrap and inputs if that would be cleaner. * Maybe you make the GUIX_PYTHONPATH wrapping explicit (e.g. by removing the wrap phase, or moving the 'wrap-autokey' phase before the 'wrap', or letting it replace the 'wrap' phase), adding a comment ;; Use 'prefix' instead of '=' to allow the user to use additional ;; Python libraries from their autokey scripts. * or maybe don't do that, but still add a similar comment to the 'wrap' phase. * Could you make the comment next to #:tests? a bit more explicit? Greetings, Maxime.
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(+) 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