From a207b72ec92abdf2ba425020209e4f3de35e6e3a Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sat, 29 Mar 2025 10:40:04 +0100 Subject: [PATCH] feat: add wayfreeze --- modules/ruther/packages/wayland.scm | 119 ++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/modules/ruther/packages/wayland.scm b/modules/ruther/packages/wayland.scm index bbe6f9d..33418d3 100644 --- a/modules/ruther/packages/wayland.scm +++ b/modules/ruther/packages/wayland.scm @@ -16,6 +16,16 @@ #:use-module (gnu packages fontutils) #:use-module (gnu packages base) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system cargo) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages crates-graphics) + #:use-module (gnu packages crates-windows) + #:use-module (gnu packages crates-io) + #:use-module ((guix build-system gnu)) #:use-module ((guix build-system gnu) #:prefix gnu:) #:use-module ((guix build-system meson) #:prefix meson:) @@ -94,6 +104,36 @@ (description "mew is a efficient dynamic menu for Wayland, an effective port of dmenu to Wayland.") (license license:expat))) +(define-public wfreeze + (package + (name "wfreeze") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://codeberg.org/sewn/wfreeze") + (commit "b6fe6a54ca"))) + (sha256 + (base32 "10058n5dhmvr82hhpvppn0ak6zy60pv9yi66a3dgf08fgsgvz2p0")))) + (inputs + (list + pkg-config + wayland-protocols + wayland)) + (arguments + (list + #:tests? #f + #:phases #~(modify-phases %standard-phases + (delete 'configure)) + #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)))) + (home-page "https://codeberg.org/sewn/wfreeze") + (build-system gnu-build-system) + (synopsis "Freeze the screen, and run a command. Works well with slurp and compositors such as river and dwl.") + (description "Freeze the screen, and run a command. Works well with slurp and compositors such as river and dwl.") + (license license:expat))) + (define-public wayland-1.23 (package (inherit wayland) @@ -306,3 +346,82 @@ Simple client implementing zwlr-output-power-management-v1. wlopm is licensed under the GPLv3.") (license license:gpl3) (home-page "https://git.sr.ht/~leon_plickat/wlopm"))) + +(define rust-argparse-0.2 + (package + (name "rust-argparse") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "argparse" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0iqy2jkifwq0azrrh26qjssp7sknjylycq35jkalzb744xcbz3iz")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page + "http://github.com/tailhook/rust-argparse") + (synopsis + "Powerful command-line argument parsing library") + (description + "This package provides Powerful command-line argument parsing library.") + (license license:expat))) + +(define rust-scoped-tls-1 + (package + (name "rust-scoped-tls") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "scoped-tls" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "15524h04mafihcvfpgxd8f4bgc3k95aclz8grjkg9a0rxcvn9kz1")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page + "https://github.com/alexcrichton/scoped-tls") + (synopsis + "Library implementation of the standard library's old `scoped_thread_local!`\nmacro for providing scoped access to thread local storage (TLS) so any type can\nbe stored into TLS.") + (description + "This package provides Library implementation of the standard library's old `scoped_thread_local!`\nmacro for providing scoped access to thread local storage (TLS) so any type can\nbe stored into TLS.") + (license (list license:expat license:asl2.0)))) + +(define-public wayfreeze + (package + (name "wayfreeze") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Jappie3/wayfreeze") + (commit "8277f981b4aace2a8411b39e2fbd4e15ad211078"))) + (sha256 + (base32 "0csgx2jhgk7lhl8cyrm61z4kkzpf5756cnzczqmcndmmag6h2mny")))) + (build-system cargo-build-system) + (inputs + (list + libxkbcommon)) + (arguments + (list #:cargo-inputs + (list rust-argparse-0.2 + rust-clap-4 + rust-env-logger-0.11 + rust-log-0.4 + rust-tempfile-3 + rust-wayland-client-0.31 + rust-wayland-protocols-0.31 + rust-wayland-protocols-wlr-0.2 + rust-wayland-server-0.31 + rust-xkbcommon-0.7))) + (home-page "https://github.com/Jappie3/wayfreeze") + (synopsis "A small CLI tool to freeze the screen of a wlroots compositor, this can be useful to, for example, take a screenshot. Supports multiple monitors & fractional scaling.") + (description "A small CLI tool to freeze the screen of a wlroots compositor, this can be useful to, for example, take a screenshot. Supports multiple monitors & fractional scaling.") + (license license:agpl3))) -- 2.49.0