From patchwork Mon May 26 21:19:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomas Volf <~@wolfsden.cz> X-Patchwork-Id: 42917 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id B222427BC4A; Mon, 26 May 2025 22:20:20 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-5.6 required=5.0 tests=BAYES_00,DKIM_ADSP_ALL, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 95DA127BC49 for ; Mon, 26 May 2025 22:20:18 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uJfEt-0003pf-Qu; Mon, 26 May 2025 17:20:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uJfEs-0003pL-VK for guix-patches@gnu.org; Mon, 26 May 2025 17:20:06 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uJfEs-0001G0-GT; Mon, 26 May 2025 17:20:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=5UxCZFLIT28LfIKVDdC/R0Xhv4FQUl3xb9madpkeXdg=; b=VxFMmcqqaoaZjtHGfl26A8q9BtH3ws5d/5F0wq29ckt203x+X+QnA3WS/nTQrp8/G/icWc56Ue2BB+AkkEGcguRmAAKSJfC5fBCReXgl1677OArsYw2OE/NIRivtaxxjuiGB0SMbwtkO4vm4ZZ+Lgj0Fsgjz0A91F1Vym6inftCrAoQPFx+8kj+kposeMAiBcpgQKEnbHGqivnb61p75ICREGqfHrpWZcM30tnmoP+bFQKAxnz/2FUTZ4iJLYn2apySwOwk4+lvN05arps67Br3RS+i+lMJPO404Qdj8FN9U1rfSyJat8LAny1kC8lva66fHTcVXxkW++D569K1b0w==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1uJfEo-0001Ta-CE; Mon, 26 May 2025 17:20:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#78597] [PATCH 2/2] home-mpv-configuration: Support file-like for file fields. Resent-From: Tomas Volf <~@wolfsden.cz> Original-Sender: "Debbugs-submit" Resent-CC: andrew@trop.in, gabriel@erlikon.ch, hako@ultrarare.space, janneke@gnu.org, ludo@gnu.org, maxim.cournoyer@gmail.com, tanguy@bioneland.org, guix-patches@gnu.org Resent-Date: Mon, 26 May 2025 21:20:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78597 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 78597@debbugs.gnu.org Cc: Tomas Volf <~@wolfsden.cz>, Sergey Trofimov , Andrew Tropin , Gabriel Wicki , Hilton Chain , Janneke Nieuwenhuizen , Ludovic =?utf-8?q?Court=C3=A8s?= , Maxim Cournoyer , Tanguy Le Carrour X-Debbugs-Original-Xcc: Andrew Tropin , Gabriel Wicki , Hilton Chain , Janneke Nieuwenhuizen , Ludovic =?utf-8?q?Court=C3=A8s?= , Maxim Cournoyer , Tanguy Le Carrour Received: via spool by 78597-submit@debbugs.gnu.org id=B78597.17482943675578 (code B ref 78597); Mon, 26 May 2025 21:20:02 +0000 Received: (at 78597) by debbugs.gnu.org; 26 May 2025 21:19:27 +0000 Received: from localhost ([127.0.0.1]:60902 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uJfEE-0001Rt-PZ for submit@debbugs.gnu.org; Mon, 26 May 2025 17:19:27 -0400 Received: from wolfsden.cz ([37.205.8.62]:58922) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <~@wolfsden.cz>) id 1uJfE8-0001RE-S1 for 78597@debbugs.gnu.org; Mon, 26 May 2025 17:19:22 -0400 Received: by wolfsden.cz (Postfix, from userid 104) id D72A5362873; Mon, 26 May 2025 21:19:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1748294359; bh=18vR4yAt3tTOvn77WZRkI0j3fySZuIIxb6QIywKKE+Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=toMh3uvPJ+R1ZB7+bMwHjfptf+A/EJormbNgboil2nqb35jXpiGxbOK8ie4og2NDH Y5uDXWlJ1+ZeNOub/W1CaU8T4HWXm/mYjVemNIszEV1AgtusF8ewc5AFoyZygS2KAH Drq2xZ0g6hqh33xo8y6ob0o3TJglhuEpjCRdwwaLvVBSWmmsyhrd8cnJA3HbeiqxeQ 7OeYNXXK9Bf2OTRrzHkp+XayxEx2uJAKywEFX5G+hi0otS3F4T/endtZJGlt0m8wFE dkUnB10y6zL2zQgbyxN/wIWH+XDdjo7P47DOpfyceNy+F5MsnMp/7BVFnqzCaRnOVS mnaF/WFYmI6BFEPaKCb8WcRTh8pGE93YPK5tMfpq0/VMrMPLM21za/Bi1gVoPCt4f5 ivto3wIqEepRulaM0MxrPuAenBng+rkMQnbDiWs/0qLr9nq2Ul2KVAdS8dXLRra+yh QZHu/YHsntOwGbbZdNi9PB4uKqRX7Son07QH+7snYDvNuw2pNxG7YsQoXSyqBXkpBT FKePCJVQC4iwEDc34+yQreiqju2ysWcrzARnvy76BrqsrBqrJIcvZmKqQvSGFd1s6K xMFd/rKMc+4L8zx8AI77RQuZXQNfargmvMErURnz3ST9pSbXvazRpMi8lRx6+AaKqS z6Iup9ZLMG/LCrk5j64/bfUs= Received: from localhost (unknown [128.0.188.242]) by wolfsden.cz (Postfix) with ESMTPSA id C06733644B3; Mon, 26 May 2025 21:19:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1748294358; bh=18vR4yAt3tTOvn77WZRkI0j3fySZuIIxb6QIywKKE+Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=q2nfpa9lRhDc97L7c0Yvg6qOnTZ2L020nlrgDUMxv1e4r0fwIJ1sr+dVxb0Kjl2s1 ChvDNjyzvZoINkizymqDk4ChumHPslWkN8yTvSQXNyQYPVkgTcmxsTHQREIYfXdj+R mQDXrtQmW2rCBDEtcqQgdZ3X8gyYFo1SnBZEIOOTYFn1pbmX96wj3LkK3bINY4oHSU 0cdrdl9tJJZph/rRaFlfNPNiScj2wNvwJrKlbaYlfQlVsukqVwtYpGlQdKfFTa6YPB QIPE9zLDOh+667G6YdUkIDO6L5UBPMMMpPWKT7bV633V4uUGfzGAbjUGx6AcSmRuVe X5Vz9E3d7lQtqszfiS12O7mbFs7Nml8rsDDidWpth2cXUJiW9K4ougB+NWjqlBp2mN eE2IXPuWswan6cgOXO4CfTP22bXfhvuBvZ6+MnFukNz7ZvOmvVwR2Z6l8jxjq8xKyP diSSS0RyplVRdW3DmyEnfM7+Ntl0BqC3h2LPuAPc14jXNKJuB6qN6iJzE8f1jj7r8E nbACMKnHMEam/OL6LJ9QBBXrgkKm/cITwfZ79daFJ/pajJvpPU2b1e6K5CmdQlZ0+d dcMiirPwHGANno0rs9NTQiWR601CwsV1whhTl9fYTwMyurXbi5JYLg+fak1+wMABlq 3WdSalRpNpn0bCZCG/Vxkonc= From: Tomas Volf <~@wolfsden.cz> Date: Mon, 26 May 2025 23:19:02 +0200 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/home/services/mpv.scm (serialize-mpv/file, mpv/file?): New procedures. (ao-null-latency, audio-file-paths, audio-files, bluray-device, cdda-device) (chapters-file, cookies-file, cover-art-files, demuxer-cache-dir, dump-stats) (dvbin-file, dvd-device, external-files, glsl-shaders, gpu-shader-cache-dir) (icc-cache-dir, icc-profile, image-lut, include, input-conf, input-ipc-server) (log-file, lut, ordered-chapters-files, osd-fonts-dir, screenshot-directory) (scripts, stream-dump, sub-ass-styles, sub-file-paths, sub-files) (sub-fonts-dir, target-lut, tls-ca-file, tls-cert-file, tls-key-file): (vo-image-outdir, watch-history-path, watch-later-directory): Change type. * doc/guix.texi (mpv Media Player): Document it. Reported-by: Sergey Trofimov Change-Id: I7e55b306104c235d165ab138397b767f1af5c124 --- doc/guix.texi | 3 +- gnu/home/services/mpv.scm | 94 +++++++++++++++++++++++---------------- 2 files changed, 57 insertions(+), 40 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 40a1bddf52..4c513f500c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -51131,7 +51131,8 @@ mpv Media Player Other types accept strings, with validation of the values where possible (e.g. type @samp{Color} is validated, but type @samp{Audio channels or -channel map} is not). +channel map} is not). If an option is marked as taking a file, values +satisfying @code{file-like?} can also be used. The full list of currently supported keyword arguments is below. For the types, allowed values and full description please refer to the diff --git a/gnu/home/services/mpv.scm b/gnu/home/services/mpv.scm index b6c640a38b..50d3f06c46 100644 --- a/gnu/home/services/mpv.scm +++ b/gnu/home/services/mpv.scm @@ -87,6 +87,14 @@ (define (serialize-mpv/string field-name value) (define mpv/string? string?) +(define (serialize-mpv/file field-name value) + #~(string-append #$(symbol->string field-name) + "=" + #$value + "\n")) +(define (mpv/file? value) + (or (file-like? value) (string? value))) + (define (serialize-mpv/float field-name value) #~(string-append #$(symbol->string field-name) "=" @@ -216,6 +224,14 @@ (define (serialize-mpv/list-of-string field-name lst) (define (mpv/list-of-string? lst) (every mpv/string? lst)) +(define (serialize-mpv/list-of-file field-name lst) + #~(string-append #$(symbol->string field-name) + "=" + (string-join '#$lst ",") + "\n")) +(define (mpv/list-of-file? lst) + (every mpv/file? lst)) + (define (serialize-mpv/list-of-key-value field-name lst) #~(string-append #$(symbol->string field-name) "=" @@ -378,7 +394,7 @@ (define-opt (<= val 10000)) (define-opt ao-null-untimed? boolean) (define-opt ao-pcm-append? boolean) -(define-opt ao-pcm-file string) +(define-opt ao-pcm-file file) (define-opt ao-pcm-waveheader? boolean) (define-opt archive-exts list-of-string) (define-opt @@ -414,8 +430,8 @@ (define-opt audio-file-auto enumeration (memq val '(no exact fuzzy all))) -(define-opt audio-file-paths list-of-string) -(define-opt audio-files list-of-string) +(define-opt audio-file-paths list-of-file) +(define-opt audio-files list-of-file) (define-opt audio-format audio-format) (define-opt audio-normalize-downmix? boolean) (define-opt audio-pitch-correction? boolean) @@ -479,7 +495,7 @@ (define-opt blend-subtitles enumeration (memq val '(no yes video))) -(define-opt bluray-device string) +(define-opt bluray-device file) (define-opt border? boolean) (define-opt border-background @@ -504,7 +520,7 @@ (define-opt (<= val 3.4028234663853e38)) (define-opt cache-secs double (>= val 0)) (define-opt cdda-cdtext? boolean) -(define-opt cdda-device string) +(define-opt cdda-device file) (define-opt cdda-overlap integer @@ -535,7 +551,7 @@ (define-opt (>= val 0) (<= val 10000)) (define-opt chapter-seek-threshold double) -(define-opt chapters-file string) +(define-opt chapters-file file) (define-opt clipboard-backends list-of-object-setting) @@ -551,7 +567,7 @@ (define-opt (>= val -100) (<= val 100)) (define-opt cookies? boolean) -(define-opt cookies-file string) +(define-opt cookies-file file) (define-opt corner-rounding float @@ -563,7 +579,7 @@ (define-opt cover-art-auto enumeration (memq val '(no exact fuzzy all))) -(define-opt cover-art-files list-of-string) +(define-opt cover-art-files list-of-file) (define-opt cover-art-whitelist list-of-string) (define-opt cscale @@ -692,7 +708,7 @@ (define-opt demuxer-backward-playback-step double (>= val 0)) -(define-opt demuxer-cache-dir string) +(define-opt demuxer-cache-dir file) (define-opt demuxer-cache-unlink-files enumeration @@ -955,14 +971,14 @@ (define-opt float (>= val 0) (<= val 1)) -(define-opt dump-stats string) +(define-opt dump-stats file) (define-opt dvbin-card integer (>= val 0) (<= val 15)) (define-opt dvbin-channel-switch-offset integer) -(define-opt dvbin-file string) +(define-opt dvbin-file file) (define-opt dvbin-full-transponder? boolean) (define-opt dvbin-prog string) (define-opt @@ -975,7 +991,7 @@ (define-opt integer (>= val 1) (<= val 99)) -(define-opt dvd-device string) +(define-opt dvd-device file) (define-opt dvd-speed integer) (define-opt edition @@ -1002,7 +1018,7 @@ (define-opt end relative-time-or-percent-position) (define-opt error-diffusion string) -(define-opt external-files list-of-string) +(define-opt external-files list-of-file) (define-opt fbo-format string) (define-opt focus-on @@ -1065,7 +1081,7 @@ (define-opt (memq val '(no yes weak))) (define-opt geometry window-geometry) (define-opt glsl-shader-opts list-of-key-value) -(define-opt glsl-shaders list-of-string) +(define-opt glsl-shaders list-of-file) (define-opt gpu-api list-of-object-setting) (define-opt gpu-context list-of-object-setting) (define-opt gpu-debug? boolean) @@ -1075,7 +1091,7 @@ (define-opt (memq val '(auto yes no))) (define-opt gpu-hwdec-interop string) (define-opt gpu-shader-cache? boolean) -(define-opt gpu-shader-cache-dir string) +(define-opt gpu-shader-cache-dir file) (define-opt gpu-sw? boolean) (define-opt gpu-tex-pad-x @@ -1155,14 +1171,14 @@ (define-opt (<= val 2147483647)))) (define-opt icc-3dlut-size string) (define-opt icc-cache? boolean) -(define-opt icc-cache-dir string) +(define-opt icc-cache-dir file) (define-opt icc-force-contrast enumeration (or (memq val '(no inf)) (and (integer? val) (>= val 0) (<= val 1000000)))) (define-opt icc-intent integer) -(define-opt icc-profile string) +(define-opt icc-profile file) (define-opt icc-profile-auto? boolean) (define-opt icc-use-luma? boolean) (define-opt @@ -1177,13 +1193,13 @@ (define-opt double (>= val 0)) (define-opt image-exts list-of-string) -(define-opt image-lut string) +(define-opt image-lut file) (define-opt image-lut-type enumeration (memq val '(auto native normalized conversion))) (define-opt image-subs-video-resolution? boolean) -(define-opt include string) +(define-opt include file) (define-opt index enumeration @@ -1194,7 +1210,7 @@ (define-opt input-ar-rate integer) (define-opt input-builtin-bindings? boolean) (define-opt input-builtin-dragging? boolean) (define-opt input-commands list-of-string) -(define-opt input-conf string) +(define-opt input-conf file) (define-opt input-cursor? boolean) (define-opt input-cursor-passthrough? boolean) (define-opt input-default-bindings? boolean) @@ -1206,7 +1222,7 @@ (define-opt (define-opt input-dragging-deadzone integer) (define-opt input-ime? boolean) (define-opt input-ipc-client string) -(define-opt input-ipc-server string) +(define-opt input-ipc-server file) (define-opt input-key-fifo-size integer @@ -1256,7 +1272,7 @@ (define-opt load-scripts? boolean) (define-opt load-select? boolean) (define-opt load-stats-overlay? boolean) (define-opt load-unsafe-playlists? boolean) -(define-opt log-file string) +(define-opt log-file file) (define-opt loop-file enumeration @@ -1267,7 +1283,7 @@ (define-opt enumeration (or (memq val '(no inf yes force)) (and (integer? val) (>= val 1) (<= val 10000)))) -(define-opt lut string) +(define-opt lut file) (define-opt lut-type enumeration @@ -1328,7 +1344,7 @@ (define-opt opengl-swapinterval integer) (define-opt opengl-waitvsync? boolean) (define-opt orawts? boolean) (define-opt ordered-chapters? boolean) -(define-opt ordered-chapters-files string) +(define-opt ordered-chapters-files file) (define-opt oremove-metadata list-of-string) (define-opt osc? boolean) (define-opt @@ -1407,7 +1423,7 @@ (define-opt float (>= val 1) (<= val 9000)) -(define-opt osd-fonts-dir string) +(define-opt osd-fonts-dir file) (define-opt osd-fractions? boolean) (define-opt osd-italic? boolean) (define-opt @@ -1640,7 +1656,7 @@ (define-opt screenshot-avif-opts list-of-key-value) (define-opt screenshot-avif-pixfmt string) -(define-opt screenshot-directory string) +(define-opt screenshot-directory file) (define-opt screenshot-format enumeration @@ -1689,7 +1705,7 @@ (define-opt (>= val 0) (<= val 100)) (define-opt script-opts list-of-key-value) -(define-opt scripts list-of-string) +(define-opt scripts list-of-file) (define-opt secondary-sid enumeration @@ -1752,7 +1768,7 @@ (define-opt byte-size (>= val 4096) (<= val 536870912)) -(define-opt stream-dump string) +(define-opt stream-dump file) (define-opt stream-lavf-o list-of-key-value) (define-opt stream-record string) (define-opt stretch-dvd-subs? boolean) @@ -1782,7 +1798,7 @@ (define-opt sub-ass-scale-with-window? boolean) (define-opt sub-ass-style-overrides list-of-string) -(define-opt sub-ass-styles string) +(define-opt sub-ass-styles file) (define-opt sub-ass-use-video-data enumeration @@ -1819,8 +1835,8 @@ (define-opt sub-color color) (define-opt sub-create-cc-track? boolean) (define-opt sub-delay float) (define-opt sub-demuxer string) -(define-opt sub-file-paths list-of-string) -(define-opt sub-files list-of-string) +(define-opt sub-file-paths list-of-file) +(define-opt sub-files list-of-file) (define-opt sub-filter-jsre list-of-string) (define-opt sub-filter-regex list-of-string) (define-opt sub-filter-regex-enable? boolean) @@ -1840,7 +1856,7 @@ (define-opt float (>= val 1) (<= val 9000)) -(define-opt sub-fonts-dir string) +(define-opt sub-fonts-dir file) (define-opt sub-forced-events-only? boolean) (define-opt sub-fps float) (define-opt @@ -1993,7 +2009,7 @@ (define-opt film-c aces-ap0 aces-ap1))) -(define-opt target-lut string) +(define-opt target-lut file) (define-opt target-peak enumeration @@ -2064,9 +2080,9 @@ (define-opt term-title string) (define-opt terminal? boolean) (define-opt title string) (define-opt title-bar? boolean) -(define-opt tls-ca-file string) -(define-opt tls-cert-file string) -(define-opt tls-key-file string) +(define-opt tls-ca-file file) +(define-opt tls-cert-file file) +(define-opt tls-key-file file) (define-opt tls-verify? boolean) (define-opt tone-mapping @@ -2373,7 +2389,7 @@ (define-opt integer (>= val 1) (<= val 9)) -(define-opt vo-image-outdir string) +(define-opt vo-image-outdir file) (define-opt vo-image-png-compression integer @@ -2521,8 +2537,8 @@ (define-opt enumeration (memq val '(auto fifo fifo-relaxed mailbox immediate))) -(define-opt watch-history-path string) -(define-opt watch-later-directory string) +(define-opt watch-history-path file) +(define-opt watch-later-directory file) (define-opt watch-later-options list-of-string) (define-opt wayland-app-id string) (define-opt