X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/52828db08352c16518769538b7923c803a9b87ec..69924071806ba0d3f2c231167ccdcc2ced98cb2b:/gnu/packages/wm.scm diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 4c11ce81f2..8ae4c2c1fc 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -14,8 +14,8 @@ ;;; Copyright © 2016 Ivan Vilata i Balaguer ;;; Copyright © 2017 Mekeor Melire ;;; Copyright © 2017, 2019, 2020 Marius Bakke -;;; Copyright © 2017, 2020 Oleg Pykhalov -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2020, 2021 Oleg Pykhalov +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice ;;; Copyright © 2018 Pierre-Antoine Rouby ;;; Copyright © 2018, 2019 Meiyo Peng ;;; Copyright © 2019 Rutger Helling @@ -31,13 +31,20 @@ ;;; Copyright © 2019 Brett Gilio ;;; Copyright © 2019 Noodles! ;;; Copyright © 2019, 2020 Alexandru-Sergiu Marton -;;; Copyright © 2020 Nicolas Goaziou +;;; Copyright © 2020, 2021 Nicolas Goaziou ;;; Copyright © 2020 Brice Waegeneire ;;; Copyright © 2020 Boris A. Dekshteyn ;;; Copyright © 2020 Marcin Karpezo ;;; Copyright © 2020 EuAndreh ;;; Copyright © 2020 Michael Rohleder ;;; Copyright © 2020 Guillaume Le Vaillant +;;; Copyright © 2020 B. Wilson +;;; Copyright © 2020 Niklas Eklund +;;; Copyright © 2020 Robert Smith +;;; Copyright © 2021 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2021 Sharlatan Hellseher +;;; Copyright © 2021 qblade +;;; Copyright © 2021 lasnesne ;;; ;;; This file is part of GNU Guix. ;;; @@ -156,14 +163,14 @@ the leaves of a full binary tree.") (define-public herbstluftwm (package (name "herbstluftwm") - (version "0.8.3") + (version "0.9.2") (source (origin (method url-fetch) (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-" version ".tar.gz")) (sha256 - (base32 "1qmb4pjf2f6g0dvcg11cw9njwmxblhqzd70ai8qnlgqw1iz3nkm1")) + (base32 "0avfhr68f6fjnafjdcyxcx7dkg38f2nadmhpj971qyqzfq2f6i38")) (file-name (string-append "herbstluftwm-" version ".tar.gz")))) (build-system cmake-build-system) (inputs @@ -176,10 +183,12 @@ the leaves of a full binary tree.") ("libx11" ,libx11) ("libxext" ,libxext) ("libxinerama" ,libxinerama) - ("libxrandr" ,libxrandr))) + ("libxrandr" ,libxrandr) + ("libxft" ,libxft))) (native-inputs `(("asciidoc" ,asciidoc) - ("pkg-config" ,pkg-config))) + ("pkg-config" ,pkg-config) + ("python" ,python))) (arguments '(#:tests? #f #:configure-flags @@ -314,7 +323,6 @@ commands would.") ("libxkbcommon" ,libxkbcommon) ("libev" ,libev) ("libyajl" ,libyajl) - ("asciidoc" ,asciidoc) ("xmlto" ,xmlto) ("perl-pod-simple" ,perl-pod-simple) ("libx11" ,libx11) @@ -326,6 +334,7 @@ commands would.") `(("which" ,which) ("perl" ,perl) ("pkg-config" ,pkg-config) + ("asciidoc-py3" ,asciidoc-py3) ;; For building the documentation. ("libxml2" ,libxml2) ("docbook-xsl" ,docbook-xsl))) @@ -1255,6 +1264,45 @@ It is inspired by Xmonad and dwm. Its major features include: project derived from the original Calm Window Manager.") (license license:isc))) +(define-public dwl + (package + (name "dwl") + (version "0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/djpohly/dwl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0r5hsxpckkrq1y7bjfq58rlc5xy45z499rg628q3nh289978ail1")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no tests + #:make-flags + (list + (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) ; no configure + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("wlroots" ,wlroots))) + (home-page "https://github.com/djpohly/dwl") + (synopsis "Dynamic window manager for Wayland") + (description + "@command{dwl} is a compact, hackable compositor for Wayland based on +wlroots. It is intended to fill the same space in the Wayland world that dwm +does in X11, primarily in terms of philosophy, and secondarily in terms of +functionality. Like dwm, dwl is easy to understand and hack on, due to a +limited size and a few external dependencies. It is configurable via +@file{config.h}.") + ;; LICENSE LICENSE.dwm LICENSE.tinywl + (license (list license:gpl3+ license:expat license:cc0)))) + (define-public nitrogen (package (name "nitrogen") @@ -1298,14 +1346,14 @@ its size (define-public polybar (package (name "polybar") - (version "3.4.3") + (version "3.5.5") (source (origin (method url-fetch) (uri (string-append "https://github.com/polybar/polybar/releases/" - "download/" version "/polybar-" version ".tar")) + "download/" version "/polybar-" version ".tar.gz")) (sha256 - (base32 "0bw22qvbcdvyd0qv3ax48r34rnclbbb6dyb8h8zljq1r3lf15vfl")))) + (base32 "1c8br9972x1qw7l2shj9aqzv0gsx58fdh3r0f1z5i1bqdwxmsqky")))) (build-system cmake-build-system) (arguments ;; Test is disabled because it requires downloading googletest from the @@ -1375,12 +1423,12 @@ functionality to display information about the most commonly used services.") ("mesa" ,mesa) ("pixman" ,pixman) ("wayland" ,wayland) + ("wayland-protocols" ,wayland-protocols) ("xcb-util-errors" ,xcb-util-errors) ("xcb-util-wm" ,xcb-util-wm) ("xorg-server-xwayland" ,xorg-server-xwayland))) (native-inputs - `(("pkg-config" ,pkg-config) - ("wayland-protocols" ,wayland-protocols))) + `(("pkg-config" ,pkg-config))) (home-page "https://github.com/swaywm/wlroots") (synopsis "Pluggable, composable, unopinionated modules for building a Wayland compositor") @@ -1522,7 +1570,7 @@ modules for building a Wayland compositor.") (define-public waybar (package (name "waybar") - (version "0.9.4") + (version "0.9.7") (source (origin (method git-fetch) @@ -1531,10 +1579,10 @@ modules for building a Wayland compositor.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "038vnma7y7z81caywp45yr364bc1aq8d01j5vycyiyfv33nm76fy")))) + (base32 "17cn4d3dx92v40jd9vl41smp8hh3gf5chd1j2f7l1lrpfpnllg5x")))) (build-system meson-build-system) (inputs `(("date" ,date) - ("fmt" ,fmt-6) + ("fmt" ,fmt) ("gtk-layer-shell" ,gtk-layer-shell) ("gtkmm" ,gtkmm) ("jsoncpp" ,jsoncpp) @@ -1557,6 +1605,27 @@ modules for building a Wayland compositor.") Wlroots based compositors.") (license license:expat))) ; MIT license +(define-public wlr-randr + (package + (name "wlr-randr") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emersion/wlr-randr") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10c8zzp78s5bw34vvjhilipa28bsdx3jbyhnxgp8f8kawh3cvgsc")))) + (build-system meson-build-system) + (inputs `(("wayland" ,wayland))) + (native-inputs `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/emersion/wlr-randr") + (synopsis "Utility to manage Wayland compositor outputs") + (description "wlr-randr is a utility to manage outputs of a Wayland compositor.") + (license license:expat))) ; MIT license + (define-public mako (package (name "mako") @@ -1585,6 +1654,30 @@ Wlroots based compositors.") compositors that support the layer-shell protocol.") (license license:expat))) ; MIT license +(define-public kanshi + (package + (name "kanshi") + (version "1.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emersion/kanshi") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nbpgm8qnn7ljsg9vgs35kl8l4rrk542vdcbx8wrn9r909ld3x92")))) + (build-system meson-build-system) + (inputs `(("wayland" ,wayland))) + (native-inputs `(("pkg-config" ,pkg-config) + ("scdoc" ,scdoc))) + (home-page "https://wayland.emersion.fr/kanshi") + (synopsis "Hotswappable output profiles for Wayland") + (description "Kanshi allows you to define output profiles that are +automatically enabled and disabled on hotplug. Kanshi can be used with +Wayland compositors supporting the wlr-output-management protocol.") + (license license:expat))) ; MIT license + (define-public stumpwm (package (name "stumpwm") @@ -1679,6 +1772,7 @@ productive, customizable lisp based systems.") (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (program (string-append out "/bin/stumpwm"))) + (setenv "HOME" "/tmp") (build-program program outputs #:entry-program '((stumpwm:stumpwm) 0) #:dependencies '("stumpwm" "slynk") @@ -1692,8 +1786,8 @@ productive, customizable lisp based systems.") (delete 'cleanup))))))) (define stumpwm-contrib - (let ((commit "920f8fc1488f7953f205e1dda4c2ecbbbda56d63") - (revision "2")) + (let ((commit "a7dc1c663d04e6c73a4772c8a6ad56a34381096a") + (revision "3")) (package (name "stumpwm-contrib") (version (git-version "0.0.1" revision commit)) ;no upstream release @@ -1705,7 +1799,7 @@ productive, customizable lisp based systems.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0giac390bq95ag41xkxqp8jjrhfx1wpgglz7jg5rkm0wjhcwmyml")))) + (base32 "09akdaaya7lga5lzbq1aj1filsyjwvflghkidpmr0nk0jz5xx1g7")))) (build-system asdf-build-system/sbcl) (inputs `(("stumpwm" ,stumpwm "lib"))) @@ -1928,6 +2022,26 @@ layouts in StumpWM.") (description "Modeline support for CPU info.") (license license:gpl3+))) +(define-public sbcl-stumpwm-disk + (package + (inherit stumpwm-contrib) + (name "sbcl-stumpwm-disk") + (arguments + '(#:asd-systems '("disk") + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ (chdir "modeline/disk") #t))))) + (inputs + `(("stumpwm" ,stumpwm "lib") + ("cl-diskspace" ,sbcl-cl-diskspace) + ("cl-mount-info" ,sbcl-cl-mount-info))) + (home-page "https://github.com/stumpwm/stumpwm-contrib") + (synopsis "StumpWM modeline support to show disk usage") + (description "StumpWM modeline support to show disk usage") + (license (list license:gpl2+ license:gpl3+)))) + (define-public sbcl-stumpwm-mem (package (inherit stumpwm-contrib) @@ -1946,6 +2060,52 @@ layouts in StumpWM.") (description "Modeline support for memory info.") (license license:gpl3+))) +(define-public sbcl-stumpwm-winner-mode + (package + (inherit stumpwm-contrib) + (name "sbcl-stumpwm-winner-mode") + (arguments + '(#:asd-systems '("winner-mode") + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "util/winner-mode")))))) + (home-page + "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/winner-mode") + (synopsis "Emacs' winner-mode for StumpWM") + (description "This module provides a winner-mode for StumpWM similar to the +one in Emacs.") + (license license:gpl3+))) + +(define-public sbcl-stumpwm-screenshot + (package + (inherit stumpwm-contrib) + (name "sbcl-stumpwm-screenshot") + (inputs + `(("stumpwm" ,stumpwm "lib") + ("zpng" ,sbcl-zpng))) + (arguments + '(#:asd-systems '("screenshot") + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "util/screenshot"))) + (add-after 'chdir 'fix-build + (lambda _ + (substitute* "screenshot.asd" + (("#:zpng") + "#:stumpwm #:zpng"))))))) + (home-page + "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/screenshot") + (synopsis "Screenshots for StumpWM") + (description "This StumpWM module can take screenshots and store them as +PNG files.") + (license license:gpl3+))) + (define-public lemonbar (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4") (revision "1")) @@ -1983,10 +2143,56 @@ formatting, RandR and Xinerama support and EWMH compliance without wasting your precious memory.") (license license:x11)))) +(define-public lemonbar-xft + ;; Upstream v2.0 tag is several years behind HEAD + (let ((commit "481e12363e2a0fe0ddd2176a8e003392be90ed02")) + (package + (inherit lemonbar) + (name "lemonbar-xft") + (version (string-append "2.0." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/drscream/lemonbar-xft") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0588g37h18lv50h7w8vfbwhvc3iajh7sdr53848spaif99nh3mh4")))) + (inputs + `(("freetype" ,freetype) + ("libxft" ,libxft) + ("libx11" ,libx11) + ,@(package-inputs lemonbar))) + (arguments + (substitute-keyword-arguments (package-arguments lemonbar) + ((#:make-flags make-flags) + `(append + ,make-flags + (list (string-append + "CFLAGS=" + (string-join + (list (string-append + "-I" (assoc-ref %build-inputs "freetype") + "/include/freetype2") + (string-append + "-D" "VERSION=" + (format #f "'~s'" ,version)))))))))) + (home-page "https://github.com/drscream/lemonbar-xft") + (synopsis + (string-append + (package-synopsis lemonbar) + " with fontconfig support")) + (description + (string-append + (package-description lemonbar) + "This is a fork of the @code{lemonbar} package that adds fontconfig +support, for easier unicode usage."))))) + (define-public xclickroot (package (name "xclickroot") - (version "1.2") + (version "1.3") (source (origin (method git-fetch) (uri (git-reference @@ -1995,7 +2201,7 @@ wasting your precious memory.") (file-name (git-file-name name version)) (sha256 (base32 - "1nd5qz0qz5j7gx2jsbcp234giwaa0xmg42vrcjrcf587q9ivakfl")))) + "0wnsfxvh4v02r2jjyh2n6jfkbj2dna2hlm6anl4b36lwji749k2k")))) (build-system gnu-build-system) (inputs `(("libx11" ,libx11))) @@ -2106,16 +2312,16 @@ start-up.") (define-public xnotify (package (name "xnotify") - (version "0.7.3") + (version "0.8.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/phillbush/xnotify") - (commit version))) + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "09s29m8z4x3mc3wja2587ik3f6zg16b40adr3nllnpyy1mqnprq5")))) + "1jxms4md2mwfjgm2pgg3vakpp33800jbn9hnl0j4jyfc9f1ckbsv")))) (build-system gnu-build-system) (inputs `(("libx11" ,libx11) @@ -2138,3 +2344,147 @@ start-up.") (description "XNotify receives a notification specification in stdin and shows a notification for the user on the screen.") (license license:expat))) + +(define-public cagebreak + (package + (name "cagebreak") + (version "1.6.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/project-repo/cagebreak") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "02gxmypfj75amdd8lwdkkk7imw7lwmghpyk8h9asljy9aq6ymdqp")))) + (build-system meson-build-system) + (arguments '(#:configure-flags '("-Dxwayland=true"))) + (native-inputs + `(("pandoc" ,pandoc) + ("pkg-config" ,pkg-config))) + (inputs + `(("pango" ,pango) + ("wlroots" ,wlroots))) + (home-page "https://github.com/project-repo/cagebreak") + (synopsis "Tiling wayland compositor inspired by ratpoison") + (description + "@command{cagebreak} is a slim, keyboard-controlled, tiling compositor +for wayland conceptually based on the X11 window manager +@command{ratpoison}.") + (license license:expat))) + +(define-public libucl + (package + (name "libucl") + (version "0.8.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vstakhov/libucl/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1h52ldxankyhbbm1qbqz1f2q0j03c1b4mig7343bs3mc6fpm18gf")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("libtool" ,libtool))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f)) ;; no tests + (home-page "https://github.com/vstakhov/libucl") + (synopsis "Universal configuration language (UCL) parser") + (description "libucl implements a configuration language that is easy to +read and write, and compatible with JSON.") + (license license:bsd-2))) + +(define-public hikari + (package + (name "hikari") + (version "2.2.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://hikari.acmelabs.space/releases/" + "hikari-" version ".tar.gz")) + (sha256 + (base32 "1d023cphzi15k434n60l1rp5awxmdijvsxfrm59fmsvd5rjxh9q7")))) + (build-system gnu-build-system) + (native-inputs + `(("bmake" ,bmake) + ("pkg-config" ,pkg-config) + ("wayland-protocols" ,wayland-protocols))) + (inputs + `(("cairo" ,cairo) + ("libinput" ,libinput) + ("libucl" ,libucl) + ("libxkbcommon" ,libxkbcommon) + ("pam" ,linux-pam) + ("pango" ,pango) + ("wayland" ,wayland) + ("wlroots" ,wlroots))) + (arguments + `(#:tests? #f ; no tests + #:make-flags + (list + (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "CC=" ,(cc-for-target)) + "WITH_XWAYLAND=YES" + "WITH_SCREENCOPY=YES" + "WITH_LAYERSHELL=YES" + "WITH_VIRTUAL_INPUT=YES") + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda* (#:key inputs outputs make-flags #:allow-other-keys) + (apply invoke "bmake" make-flags))) + (replace 'install + (lambda* (#:key inputs outputs make-flags #:allow-other-keys) + (apply invoke "bmake" "install" make-flags)))))) + (home-page "https://hikari.acmelabs.space/") + (synopsis "Stacking Wayland compositor with tiling capabilities") + (description + "Hikari is a stacking Wayland compositor with additional tiling +capabilities. It is heavily inspired by the Calm Window manager(cwm).") + (license license:bsd-2))) + +(define-public wlogout + (package + (name "wlogout") + (version "1.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ArtsyMacaw/wlogout") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1swhzkqkzli59c89pvrakfvicd00x7ga860c3x2pbb4y3xziqfvi")))) + (build-system meson-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("scdoc" ,scdoc))) + (inputs + `(("gtk-layer-shell" ,gtk-layer-shell) + ("gtk+" ,gtk+))) + (arguments + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source-paths + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "main.c" + (("/usr/share") (string-append out "/share")) + (("/etc") (string-append out "/etc")))) + #t))))) + (home-page "https://github.com/ArtsyMacaw/wlogout") + (synopsis "Logout menu for Wayland") + (description "wlogout is a logout menu for Wayland environments.") + (license license:expat)))