From 25fb52710582c19ad811d1ac9a2fe9d8920c0a66 Mon Sep 17 00:00:00 2001 From: Filip Kania Date: Sat, 28 Dec 2024 23:30:47 +0100 Subject: [PATCH 1/3] feat: add screencapture.target option --- modules/system/defaults/screencapture.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/system/defaults/screencapture.nix b/modules/system/defaults/screencapture.nix index 80dcaabb9..795cd034f 100644 --- a/modules/system/defaults/screencapture.nix +++ b/modules/system/defaults/screencapture.nix @@ -48,5 +48,20 @@ with lib; Show thumbnail after screencapture before writing to file. The default is true. ''; }; + + system.defaults.screencapture.target = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Target to which screencapture should save screenshot to. The default is "file". + Valid values include: + + * `file`: Saves as a file in location specified by `system.defaults.screencapture.location` + * `clipboard`: Saves screenshot to clipboard + * `preview`: Opens screenshot in Preview app + * `mail` + * `messages` + ''; + }; }; } From 19bc0d6cbeacb20c5ca865d06c274152c42ffd22 Mon Sep 17 00:00:00 2001 From: Filip Kania Date: Sun, 29 Dec 2024 00:14:48 +0100 Subject: [PATCH 2/3] tests: add screencapture.target test case --- tests/fixtures/system-defaults-write/activate-user.txt | 5 +++++ tests/system-defaults-write.nix | 1 + 2 files changed, 6 insertions(+) diff --git a/tests/fixtures/system-defaults-write/activate-user.txt b/tests/fixtures/system-defaults-write/activate-user.txt index e09f689b3..3656a47bf 100644 --- a/tests/fixtures/system-defaults-write/activate-user.txt +++ b/tests/fixtures/system-defaults-write/activate-user.txt @@ -426,6 +426,11 @@ defaults write com.apple.screencapture 'location' $' /tmp ' +defaults write com.apple.screencapture 'target' $' + + +file +' defaults write com.apple.screensaver 'askForPassword' $' diff --git a/tests/system-defaults-write.nix b/tests/system-defaults-write.nix index fae08de38..1a29aa2df 100644 --- a/tests/system-defaults-write.nix +++ b/tests/system-defaults-write.nix @@ -74,6 +74,7 @@ system.defaults.finder.ShowRemovableMediaOnDesktop = false; system.defaults.hitoolbox.AppleFnUsageType = "Show Emoji & Symbols"; system.defaults.screencapture.location = "/tmp"; + system.defaults.screencapture.target = "file"; system.defaults.screencapture.include-date = true; system.defaults.screensaver.askForPassword = true; system.defaults.screensaver.askForPasswordDelay = 5; From b8e184ebf271367cf1c93d942e71ae51d2a248cb Mon Sep 17 00:00:00 2001 From: Filip Kania Date: Sun, 29 Dec 2024 10:58:47 +0100 Subject: [PATCH 3/3] refactor: use enum as option type --- modules/system/defaults/screencapture.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/defaults/screencapture.nix b/modules/system/defaults/screencapture.nix index 795cd034f..351ca5f2f 100644 --- a/modules/system/defaults/screencapture.nix +++ b/modules/system/defaults/screencapture.nix @@ -50,7 +50,7 @@ with lib; }; system.defaults.screencapture.target = mkOption { - type = types.nullOr types.str; + type = types.nullOr (types.enum [ "file" "clipboard" "preview" "mail" "messages" ]); default = null; description = '' Target to which screencapture should save screenshot to. The default is "file".