home: services: hyprland: added gestures definitions

This commit is contained in:
Carmine Margiotta 2025-10-10 00:00:12 +02:00 committed by Carmine Margiotta
parent 949a32df4d
commit 593fb79dd9

View file

@ -71,33 +71,45 @@
(value->string value))))) (value->string value)))))
;; ;;
(define (serialize-boolean _ value)
(if value "true" "false"))
(define (serialize-boolean entry tabs) (define (serialize-number _ value)
(serialize-entry entry (number->string value))
(match-lambda (#t "true") (#f "false"))
tabs))
(define (serialize-number entry tabs)
(serialize-entry entry
number->string
tabs))
(define serialize-integer serialize-number) (define serialize-integer serialize-number)
(define serialize-real serialize-number) (define serialize-real serialize-number)
(define estring? string?) (define (serialize-boolean-entry _ value)
(serialize-entry value
(match-lambda (#t "true") (#f "false"))
1))
(define (serialize-estring entry tabs) (define (serialize-number-entry _ value)
(serialize-entry entry (serialize-entry value
number->string
1))
(define serialize-integer-entry serialize-number-entry)
(define serialize-real-entry serialize-number-entry)
(define (serialize-string-entry _ value)
(serialize-entry value
identity identity
tabs)) 1))
(define-maybe boolean) (define-maybe boolean)
(define-maybe number) (define-maybe number)
(define-maybe integer) (define-maybe integer)
(define-maybe real) (define-maybe real)
(define-maybe estring) (define-maybe string)
(define-maybe boolean-entry)
(define-maybe number-entry)
(define-maybe integer-entry)
(define-maybe real-entry)
(define-maybe string-entry)
;; ;;
@ -114,11 +126,13 @@
(match entry (match entry
(() "") (() "")
(((? symbol?) (? string?)) (((? symbol?) (? string?))
(serialize-estring entry tabs)) (serialize-entry entry identity tabs))
(((? symbol?) (? number?)) (((? symbol?) (? number?))
(serialize-number entry tabs)) (serialize-entry entry number->string tabs))
(((? symbol?) (? boolean?)) (((? symbol?) (? boolean?))
(serialize-boolean entry tabs)) (serialize-entry entry
(match-lambda (#t "true") (#f "false"))
tabs))
(((? symbol? key) (? block-entries? value)) (((? symbol? key) (? block-entries? value))
(format #f "~v/~a {\n~a~v/}\n" (format #f "~v/~a {\n~a~v/}\n"
tabs tabs
@ -174,13 +188,15 @@
;;; An executable (a target for the exec action) can be a string or a gexp ;;; An executable (a target for the exec action) can be a string or a gexp
(define (executable? value) (define (executable? value)
(or (string? value) (or (string? value)
(symbol? value)
(gexp? value))) (gexp? value)))
;;; Gexp executables will be serialized on a program-file ;;; Gexp executables will be serialized on a program-file
(define (serialize-executable name value) (define (serialize-executable name value)
(if (string? value) value (if (string? value) value
(program-file (symbol->string name) value (if (symbol? value) (symbol->string value)
#:module-path %load-path))) (program-file (symbol->string name) value
#:module-path %load-path))))
;;; A list of valid executables ;;; A list of valid executables
(define list-of-executables? (define list-of-executables?
@ -325,7 +341,7 @@
(maybe-addreserved %unset-value) (maybe-addreserved %unset-value)
"A reserved area is an area that remains unoccupied by tiled windows.") "A reserved area is an area that remains unoccupied by tiled windows.")
(mirror (mirror
(maybe-estring %unset-value) (maybe-string-entry %unset-value)
"Mirror a display.") "Mirror a display.")
(bitdepth (bitdepth
(maybe-bitdepth %unset-value) (maybe-bitdepth %unset-value)
@ -335,25 +351,25 @@
"Change default sRGB output preset.") "Change default sRGB output preset.")
;; TODO: Add VRR ;; TODO: Add VRR
(supports_wide_color (supports_wide_color
(maybe-boolean %unset-value) (maybe-boolean-entry %unset-value)
"Force wide color gamut support.") "Force wide color gamut support.")
(supports_hdr (supports_hdr
(maybe-boolean %unset-value) (maybe-boolean-entry %unset-value)
"Force HDR support. Requires wide color gamut.") "Force HDR support. Requires wide color gamut.")
(sdr_min_luminance (sdr_min_luminance
(maybe-real %unset-value) (maybe-real-entry %unset-value)
"SDR minimum lumninace used for SDR → HDR mapping.") "SDR minimum lumninace used for SDR → HDR mapping.")
(sdr_max_luminance (sdr_max_luminance
(maybe-integer %unset-value) (maybe-integer-entry %unset-value)
"SDR maximum luminance. Can be used to adjust overall SDR → HDR brightness.") "SDR maximum luminance. Can be used to adjust overall SDR → HDR brightness.")
(min_luminance (min_luminance
(maybe-real %unset-value) (maybe-real-entry %unset-value)
"Monitor's minimum luminance") "Monitor's minimum luminance")
(max_luminance (max_luminance
(maybe-integer %unset-value) (maybe-integer-entry %unset-value)
"Monitor's maximum possible luminance") "Monitor's maximum possible luminance")
(max_avg_luminance (max_avg_luminance
(maybe-integer %unset-value) (maybe-integer-entry %unset-value)
"Monitor's maximum luminance on average for a typical frame")) "Monitor's maximum luminance on average for a typical frame"))
(define (serialize-monitor _ m) (define (serialize-monitor _ m)
@ -365,9 +381,11 @@
(define list-of-monitors? (list-of monitor?)) (define list-of-monitors? (list-of monitor?))
(define (serialize-list-of-monitors name monitors) (define (serialize-list-of-monitors name monitors)
#~(string-join (list #$@(map (cut serialize-monitor name <>) #~(string-append
monitors)) "monitor=,preferred,auto,auto\n\n"
"\n")) (string-join (list #$@(map (cut serialize-monitor name <>)
monitors))
"\n")))
;;; Environment variable ;;; Environment variable
(define-configuration env (define-configuration env
@ -419,6 +437,44 @@
(if (list? values) values (list values)))) (if (list? values) values (list values))))
", ")) ", "))
;;; Gestures sub-configuration
(define (gesture-direction? x)
(memq x '(swipe horizontal vertical
left right up down
pinch pinchin pinchout)))
(define (serialize-gesture-direction name d)
(symbol->string d))
(define (gesture-action? x)
(memq x '(dispatcher workspace move
resize special
close fullscreen
float)))
(define (serialize-gesture-action name a)
(symbol->string a))
(define-configuration gesture
(fingers (number) "Number of fingers")
(direction (gesture-direction) "Gesture direction")
(action (gesture-action) "Gesture action")
(args (arguments '()) "Gesture action's args"))
(define (serialize-gesture name g)
#~(string-append "gesture = "
#$(serialize-joined g gesture-fields #:delimiter ",")))
(define (list-of-gestures? x)
(every gesture? x))
(define (serialize-list-of-gestures name gestures)
#~(string-append
(string-join
(list #$@(map (λ (g) (serialize-gesture name g)) gestures))
"\n")
"\n")
;;; Binding sub-configuration ;;; Binding sub-configuration
(define-configuration binding (define-configuration binding
(flags (string "") (flags (string "")
@ -513,6 +569,7 @@
(misc (block '()) "Misc settings") (misc (block '()) "Misc settings")
(input (block '()) "Input settings") (input (block '()) "Input settings")
(gestures (block '()) "Gestures settings") (gestures (block '()) "Gestures settings")
(gestures-definitions (list-of-gestures '()) "Gestures definitions")
(group (block '()) "Group settings") (group (block '()) "Group settings")
(binds (block '()) "Binds settings") (binds (block '()) "Binds settings")
(xwayland (block '()) "XWayland settings") (xwayland (block '()) "XWayland settings")
@ -600,7 +657,8 @@
(animation "fadeLayersOut, 1, 1.39, almostLinear") (animation "fadeLayersOut, 1, 1.39, almostLinear")
(animation "workspaces, 1, 1.94, almostLinear, fade") (animation "workspaces, 1, 1.94, almostLinear, fade")
(animation "workspacesIn, 1, 1.21, almostLinear, fade") (animation "workspacesIn, 1, 1.21, almostLinear, fade")
(animation "workspacesOut, 1, 1.94, almostLinear, fade"))) (animation "workspacesOut, 1, 1.94, almostLinear, fade")
(animation "zoomFactor, 1, 7, quick")))
(define-public %default-hyprland-misc (define-public %default-hyprland-misc
'((force_default_wallpaper -1) '((force_default_wallpaper -1)
@ -619,8 +677,10 @@
(sensitivity 0) (sensitivity 0)
(touchpad ((natural_scroll #f))))) (touchpad ((natural_scroll #f)))))
(define-public %default-hyprland-gestures (define-public %default-hyprland-gestures-definitions
'((workspace_swipe #f))) (list (gesture (fingers 3)
(direction 'horizontal)
(action 'workspace))))
(define-public %default-hyprland-bindings (define-public %default-hyprland-bindings
(bindings (main-mod 'super) (bindings (main-mod 'super)
@ -746,7 +806,8 @@
(misc %default-hyprland-misc) (misc %default-hyprland-misc)
(input %default-hyprland-input) (input %default-hyprland-input)
(dwindle %default-hyprland-dwindle) (dwindle %default-hyprland-dwindle)
(gestures %default-hyprland-gestures) (gestures-definitions
%default-hyprland-gestures-definitions)
(bindings %default-hyprland-bindings))) (bindings %default-hyprland-bindings)))
;;; ;;;