Thanks to Brendan Tildesley, Leo Famulari and Hartmut Goebel for testing and advice.
* gnu/packages/wm.scm (quickswitch-i3): New variable. --- .../patches/quickswitch-fix-dmenu-check.patch | 26 ++++++++++++ gnu/packages/wm.scm | 46 ++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 gnu/packages/patches/quickswitch-fix-dmenu-check.patch diff --git a/gnu/packages/patches/quickswitch-fix-dmenu-check.patch b/gnu/packages/patches/quickswitch-fix-dmenu-check.patch new file mode 100644 index 0000000..3328af3 --- /dev/null +++ b/gnu/packages/patches/quickswitch-fix-dmenu-check.patch @@ -0,0 +1,26 @@ +Fix Debian-specific check for dmenu. + +See <https://github.com/proxypoke/quickswitch-for-i3/pull/28>. + +--- quickswitch-for-i3-2.2/quickswitch.py 2016-09-18 19:59:10.257765542 +0200 ++++ quickswitch-for-i3-2.2/quickswitch.py 2016-09-19 11:00:51.147101323 +0200 +@@ -37,11 +37,14 @@ + + def check_dmenu(): + '''Check if dmenu is available.''' +- devnull = open(os.devnull) +- retcode = subprocess.call(["which", "dmenu"], +- stdout=devnull, +- stderr=devnull) +- return True if retcode == 0 else False ++ with open(os.devnull, 'w') as devnull: ++ try: ++ retcode = subprocess.call(["dmenu", "-v"], ++ stdout=devnull, ++ stderr=devnull) ++ return retcode == 0 ++ except OSError: ++ return False + + + def dmenu(options, dmenu): diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 39ecb20..a8db05f 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -59,6 +59,7 @@ #:use-module (gnu packages gperf) #:use-module (gnu packages imagemagick) #:use-module (gnu packages lua) + #:use-module (gnu packages suckless) #:use-module (guix download) #:use-module (guix git-download)) @@ -246,6 +247,51 @@ subscribe to events.") (define-public python2-i3-py (package-with-python2 python-i3-py)) +(define-public quickswitch-i3 + (let ((commit "ed692b1e8f43b95bd907ced26238ce8ccb2ed28f") + (revision "1")) ; Guix package revision + (package + (name "quickswitch-i3") + (version (string-append "2.2-" revision "." + (string-take commit 7))) + (source + (origin + ;; The latest commit is a few years old and just a couple commits + ;; after the last tagged release, so we use that latest commit + ;; instead of the release. + (method git-fetch) + (uri (git-reference + (url "https://github.com/proxypoke/quickswitch-for-i3.git") + (commit commit))) + (sha256 + (base32 + "0447077sama80jcdg5p64zjsvafmz5rbdrirhm1adcdjhkh6iqc5")) + (patches (search-patches "quickswitch-fix-dmenu-check.patch")) + (file-name (string-append name "-" version "-checkout")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; no tests yet + #:phases + (alist-cons-after + 'install 'install-doc + ;; Copy readme file to documentation directory. + (lambda* (#:key outputs #:allow-other-keys) + (let ((doc (string-append (assoc-ref outputs "out") + "/share/doc/" ,name "-" ,version))) + (mkdir-p doc) + (copy-file "README.rst" (string-append doc "/README.rst")))) + %standard-phases))) + (propagated-inputs + `(("python-i3-py" ,python-i3-py) + ("dmenu" ,dmenu))) + (home-page "https://github.com/proxypoke/quickswitch-for-i3") + (synopsis "Quickly change to and locate windows in the i3 window manager") + (description "This utility for the i3 window manager allows you to quickly +switch to and locate windows on all your workspaces, using an interactive +dmenu prompt. It has since gained a lot of other functionality to make +working with i3 even more efficient.") + (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/"))))) + (define-public xmonad (package (name "xmonad") -- 2.10.0 -- Ivan Vilata i Balaguer -- https://elvil.net/
signature.asc
Description: PGP signature