diff options
Diffstat (limited to 'gnu/packages/wm.scm')
-rw-r--r-- | gnu/packages/wm.scm | 256 |
1 files changed, 230 insertions, 26 deletions
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 959928d8e2e..8ed3ed11074 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -41,7 +41,7 @@ ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com> ;;; Copyright © 2020 Niklas Eklund <niklas.eklund@posteo.net> ;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net> -;;; Copyright © 2021, 2023 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2021, 2023, 2024 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2021 qblade <qblade@protonmail.com> ;;; Copyright © 2021 lasnesne <lasnesne@lagunposprasihopre.org> @@ -64,8 +64,11 @@ ;;; Copyright © 2023 Jonathan Brielamier <jonathan.brielmaier@web.de> ;;; Copyright © 2023 Vessel Wave <vesselwave@disroot.org> ;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr> -;;; Copyright © 2023 Jaeme Sifat <jaeme@runbox.com> +;;; Copyright © 2023, 2024 Jaeme Sifat <jaeme@runbox.com> ;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz> +;;; Copyright © 2024 Timotej Lazar <timotej.lazar@araneo.si> +;;; Copyright © 2024 Ahmad Draidi <a.r.draidi@redscript.org> +;;; Copyright © 2024 chris <chris@bumblehead.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -89,6 +92,7 @@ #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix build-system asdf) + #:use-module (guix build-system cargo) #:use-module (guix build-system cmake) #:use-module (guix build-system copy) #:use-module (guix build-system gnu) @@ -106,11 +110,14 @@ #:use-module (gnu packages bison) #:use-module (gnu packages build-tools) #:use-module (gnu packages calendar) - #:use-module (gnu packages compression) #:use-module (gnu packages check) + #:use-module (gnu packages compression) + #:use-module (gnu packages crates-io) + #:use-module (gnu packages crates-graphics) #:use-module (gnu packages datastructures) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) + #:use-module (gnu packages flex) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages fribidi) @@ -206,8 +213,10 @@ the leaves of a full binary tree.") (file-name (git-file-name name version)) (sha256 (base32 "11sg9x08zl2nr7a723h462knz5lf58sgvkhv1mgc9z3hhkhvbsja")))) (build-system meson-build-system) - (native-inputs (list pkg-config scdoc)) - (inputs (list wayland wlroots libxkbcommon)) + (native-inputs (list pkg-config scdoc + ;; for wayland-scanner + wayland)) + (inputs (list wayland wlroots-0.16 libxkbcommon)) (home-page "https://github.com/cage-kiosk/cage") (synopsis "Wayland kiosk") (description "This package provides a Wayland @dfn{kiosk}, which runs a @@ -1149,7 +1158,7 @@ the XDG Autostart specification.") (define-public fnott (package (name "fnott") - (version "1.4.0") + (version "1.4.1") (source (origin (method git-fetch) (uri (git-reference @@ -1158,7 +1167,7 @@ the XDG Autostart specification.") (file-name (git-file-name name version)) (sha256 (base32 - "0l0brayvcifrc5rxxkqfrskd6523vs3allg2cxhwkixqf2ddg7kh")))) + "0fmjvmsm2ikcmdzrf6xwyq6vxb9p1dd3bhvz3bvi7q7rb2g8h8pi")))) (build-system meson-build-system) (arguments `(#:build-type "release")) (native-inputs @@ -1167,7 +1176,7 @@ the XDG Autostart specification.") tllist scdoc)) (inputs - (list wlroots wayland fcft dbus libpng)) + (list wlroots-0.16 wayland fcft dbus libpng)) (home-page "https://codeberg.org/dnkl/fnott") (synopsis "Keyboard driven and lightweight Wayland notification daemon") (description "Fnott is a keyboard driven and lightweight notification daemon @@ -1569,7 +1578,7 @@ started automatically on the first call via D-Bus.") (native-inputs (list pkg-config)) (inputs - (list wlroots)) + (list wlroots-0.16)) (home-page "https://github.com/djpohly/dwl") (synopsis "Dynamic window manager for Wayland") (description @@ -1622,14 +1631,14 @@ its size (define-public polybar (package (name "polybar") - (version "3.6.3") + (version "3.7.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/polybar/polybar/releases/" "download/" version "/polybar-" version ".tar.gz")) (sha256 - (base32 "19azx5dpfyfh0pv4q2fcrf4p7a0pc5d13m7lnv3qy8376mbmhmzj")))) + (base32 "03zz2c3ckxqbwixc2qhsnasq4j4sfia71v75li9w97d0bcwavrjx")))) (build-system cmake-build-system) (arguments ;; Test is disabled because it requires downloading googletest from the @@ -1675,7 +1684,7 @@ functionality to display information about the most commonly used services.") (define-public wlroots (package (name "wlroots") - (version "0.16.2") + (version "0.17.1") (source (origin (method git-fetch) @@ -1684,7 +1693,9 @@ functionality to display information about the most commonly used services.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1m12nv6avgnz626h3giqp6gcx44w1wq6z0jy780mx8z255ic7q15")))) + (base32 "1hj4gq5vx8in65622yvjm8bwqkw2vpc556k9my997a0hn0ricj37")) + ;; This patch can be removed once hwdata in Guix supports pkg-config + (patches (search-patches "wlroots-hwdata-fallback.patch")))) (build-system meson-build-system) (arguments `(#:phases @@ -1705,6 +1716,7 @@ functionality to display information about the most commonly used services.") (propagated-inputs (list ;; As required by wlroots.pc. eudev + libdisplay-info libinput-minimal libxkbcommon mesa @@ -1730,6 +1742,23 @@ Wayland compositor") modules for building a Wayland compositor.") (license license:expat))) ; MIT license +(define-public wlroots-0.16 + (package + (inherit wlroots) + (name "wlroots-0.16") + (version "0.16.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.freedesktop.org/wlroots/wlroots") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1m12nv6avgnz626h3giqp6gcx44w1wq6z0jy780mx8z255ic7q15")))) + (propagated-inputs (modify-inputs (package-propagated-inputs wlroots) + (delete libdisplay-info))))) + (define-public sway (package (name "sway") @@ -1774,7 +1803,7 @@ modules for building a Wayland compositor.") pcre2 swaybg wayland - wlroots)) + wlroots-0.16)) (native-inputs (cons* linux-pam mesa pkg-config scdoc wayland-protocols (if (%current-target-system) @@ -1863,7 +1892,7 @@ corners, shadows, inactive window dimming, etc.") (package (inherit swaylock) (name "swaylock-effects") - (version "1.6.11") + (version "1.7.0.0") (source (origin (method git-fetch) @@ -1873,7 +1902,7 @@ corners, shadows, inactive window dimming, etc.") (file-name (git-file-name name version)) (sha256 (base32 - "0j7dxn66xqlf6iv2arqzz7mxlh7nf85anvpyf30d2frcidarda9h")))) + "0cgpbzdpxj6bbpa8jwql1snghj21mhryyvj6sk46g66lqvwlrqbj")))) (arguments (list #:configure-flags #~'("-Dsse=false"))) (synopsis "Screen locking utility for Wayland compositors with effects") @@ -1911,6 +1940,94 @@ display a clock or apply image manipulation techniques to the background image." (description "Swaybg is a wallpaper utility for Wayland compositors.") (license license:expat))) ; MIT license +(define-public swww + (package + (name "swww") + (version "0.8.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/LGFae/swww") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ps10dv6a8a0hiw7p8kg64mf81pvavskmyn5xpbfw6hrc991vdlz")) + (modules '((guix build utils))) + (snippet + '(begin (substitute* "utils/Cargo.toml" + (("\"=([[:digit:]]+(\\.[[:digit:]]+)*)" _ version) + (string-append "\"^" version))))))) + (build-system cargo-build-system) + (arguments + (list + #:install-source? #f + #:cargo-inputs + `(("rust-log" ,rust-log-0.4) + ("rust-simplelog" ,rust-simplelog-0.12) + ("rust-wayland-client" ,rust-wayland-client-0.31) + ("rust-smithay-client-toolkit" ,rust-smithay-client-toolkit-0.18) + ("rust-nix" ,rust-nix-0.27) + ("rust-keyframe" ,rust-keyframe-1) + ("rust-rkyv" ,rust-rkyv-0.7) + ("rust-rayon" ,rust-rayon-1) + ("rust-spin-sleep" ,rust-spin-sleep-1) + ("rust-sd-notify" ,rust-sd-notify-0.4) + ("rust-image" ,rust-image-0.24) + ("rust-fast-image-resize" ,rust-fast-image-resize-2) + ("rust-clap" ,rust-clap-4) + ("rust-rand" ,rust-rand-0.8) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-lzzzz" ,rust-lzzzz-1)) + #:cargo-development-inputs + `(("rust-rand" ,rust-rand-0.8) + ("rust-assert-cmd" ,rust-assert-cmd-2) + ("rust-criterion" ,rust-criterion-0.5)) + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'build-documentation + (lambda* (#:key inputs #:allow-other-keys) + (invoke "doc/gen.sh"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share")) + (man1 (string-append share "/man/man1")) + (swww (car (find-files "target" "^swww$"))) + (swww-daemon (car (find-files "target" "^swww-daemon$"))) + (bash-completions-dir + (string-append share "/bash-completion/completions")) + (zsh-completions-dir + (string-append share "/zsh/site-functions")) + (fish-completions-dir + (string-append share "/fish/vendor_completions.d")) + (elvish-completions-dir + (string-append share "/elvish/lib"))) + (install-file swww bin) + (install-file swww-daemon bin) + (copy-recursively "doc/generated" man1) + (install-file "completions/swww.bash" bash-completions-dir) + (install-file "completions/_swww" zsh-completions-dir) + (install-file "completions/swww.fish" fish-completions-dir) + (install-file "completions/swww.elv" elvish-completions-dir)))) + (add-after 'install 'wrap-binaries + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (lz4 (assoc-ref inputs "lz4"))) + (wrap-program (string-append out "/bin/swww") + `("PATH" prefix (,(string-append lz4 "/bin")))) + (wrap-program (string-append out "/bin/swww-daemon") + `("PATH" prefix (,(string-append lz4 "/bin")))))))))) + (native-inputs (list scdoc)) + (inputs (list bash-minimal lz4)) + (home-page "https://github.com/LGFae/swww") + (synopsis + "Efficient animated wallpaper daemon for wayland controlled at runtime") + (description + "A Solution to your Wayland Wallpaper Woes (swww). It uses minimal resources +and provides animations for switching between backgrounds.") + (license license:gpl3+))) (define-public swaynotificationcenter (package @@ -2047,7 +2164,7 @@ core/thread.") (define-public wlr-randr (package (name "wlr-randr") - (version "0.3.1") + (version "0.4.0") (source (origin (method git-fetch) @@ -2056,7 +2173,7 @@ core/thread.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "13mya6j5z7cwg2a973y28ya8w36kxhj0fgj8bk9z6yf2w0ryr5xv")))) + (base32 "1f3dc2i6c1rn2adfcnqmh10570ps335188zllg66sv1d0l8mggry")))) (build-system meson-build-system) (inputs (list wayland)) (native-inputs (list pkg-config)) @@ -2105,7 +2222,7 @@ compositors that support the layer-shell protocol.") (define-public kanshi (package (name "kanshi") - (version "1.4.0") + (version "1.5.1") (source (origin (method git-fetch) @@ -2114,7 +2231,7 @@ compositors that support the layer-shell protocol.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "016s2896mnf4dnyyrqp2pnqrvrqn404c6b16d5kcjf1p21003lp5")))) + (base32 "1mc2zcqsv79y7682nwi1gn8p751zwflm9zirl98v2q2kvx334k8a")))) (build-system meson-build-system) (inputs (list wayland)) (native-inputs (list pkg-config scdoc)) @@ -2966,7 +3083,7 @@ shows a notification for the user on the screen.") (("/etc/") (string-append #$output "/etc/")) (("/usr/share/") (string-append #$output "/usr/share/")))))))) (native-inputs (list pkg-config scdoc)) - (inputs (list libevdev pango wlroots)) + (inputs (list libevdev pango wlroots-0.16)) (home-page "https://github.com/project-repo/cagebreak") (synopsis "Tiling wayland compositor inspired by ratpoison") (description @@ -2975,6 +3092,49 @@ for wayland conceptually based on the X11 window manager @command{ratpoison}.") (license license:expat))) +(define-public libdisplay-info + (let ((commit "ebee35935dad01478ae1ae5ead298c4cd8018ac2") + (revision "0")) + (package + (name "libdisplay-info") + (version (git-version "0.2.0-dev" revision commit)) + (home-page "https://gitlab.freedesktop.org/emersion/libdisplay-info") + (source + (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ly8acdjxn8l55y0wc07n7pb6rzh9dpr1vbsakdib2zrl0i5yh3a")))) + (build-system meson-build-system) + (arguments + (list + #:phases #~(modify-phases %standard-phases + (add-before 'configure 'fix-meson-file + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (substitute* "meson.build" + (("/usr/share/hwdata/pnp.ids") + (string-append (assoc-ref (or native-inputs inputs) + "hwdata") + "/share/hwdata/pnp.ids")))))))) + (native-inputs (list `(,hwdata "pnp") python)) + (synopsis "EDID and DisplayID library") + (description + "This package provides a library to read @acronym{EDID, Extended +Display Identification Data} and DisplayID metadata from display devices. It +has the following goals: + +@enumerate +@item +Provide a set of high-level, easy-to-use, opinionated functions +as well as low-level functions to access detailed information. +@item +Simplicity and correctness over performance and resource usage. +@item +Well-tested and fuzzed. +@end enumerate") + (license license:expat)))) + (define-public libucl (package (name "libucl") @@ -3002,7 +3162,7 @@ read and write, and compatible with JSON.") (define-public labwc (package (name "labwc") - (version "0.6.5") + (version "0.7.0") (source (origin (method git-fetch) (uri (git-reference @@ -3011,7 +3171,7 @@ read and write, and compatible with JSON.") (file-name (git-file-name name version)) (sha256 (base32 - "04401k1i6b9s2v6mbhw5llla8fdpkhmgz826iva246iqch9z20lx")))) + "17p3wcnggnd4v37z1dgv8nmc35nq4261s8sglr44bf71vjircggz")))) (build-system meson-build-system) (native-inputs (list pkg-config gettext-minimal scdoc)) @@ -3063,7 +3223,7 @@ session. Nor does it depend on any UI toolkits such as Qt or GTK.") linux-pam pango wayland - wlroots)) + wlroots-0.16)) (arguments `(#:tests? #f ; no tests #:make-flags @@ -3341,7 +3501,7 @@ Type=Application~%" (define-public avizo (package (name "avizo") - (version "1.2.1") + (version "1.3") (source (origin (method git-fetch) (uri (git-reference @@ -3350,7 +3510,7 @@ Type=Application~%" (file-name (git-file-name name version)) (sha256 (base32 - "0ddv5ssxfjbzhqskbbhi9qj1yqkraiv3r8svfmp9s5nnfpid8aba")))) + "01v1c9376pbjndyhj9r6f214kzhivl1m9pkl05sdkcj0v6n0wgsn")))) (build-system meson-build-system) (inputs (list gtk+)) (native-inputs @@ -3519,3 +3679,47 @@ notable features include: (description "velox is a simple window manager for Wayland based on swc. It is inspired by dwm and xmonad.") (license license:expat)))) + +(define-public yambar-wayland + (package + (name "yambar-wayland") + (version "1.10.0") + (home-page "https://codeberg.org/dnkl/yambar") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "14lxhgyyia7sxyqjwa9skps0j9qlpqi8y7hvbsaidrwmy4857czr")))) + (build-system meson-build-system) + (arguments + (list + #:build-type "release" + #:configure-flags #~'("-Db_lto=true" + "-Dbackend-x11=disabled" + "-Dbackend-wayland=enabled"))) + (native-inputs (list pkg-config + tllist + flex + bison + scdoc + wayland-protocols)) + (inputs (list fcft + wayland + pipewire + libyaml + pixman + alsa-lib + json-c + libmpdclient + eudev)) + (synopsis "X11 and Wayland status panel") + (description + "@command{yambar} is a lightweight and configurable status panel (bar, +for short) for X11 and Wayland, that goes to great lengths to be both CPU and +battery efficient---polling is only done when absolutely necessary.") + (license license:expat))) |