summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hoang <Enzime@users.noreply.github.com>2024-08-02 16:34:32 +0200
committerGitHub <noreply@github.com>2024-08-02 16:34:32 +0200
commitf7142b8024d6b70c66fd646e1d099d3aa5bfec49 (patch)
tree48595c3b5c05e89c9578892660caa29c344f9062
parentb47af8628624856ad6853168298f1f96364d92d6 (diff)
parent3dd14e466c78e1a5e90ffeff5cf37b40c3a82a53 (diff)
Merge pull request #1002 from malko42/window-manager
(feature) Add Stage Manager (com.apple.WindowManager) settings
-rw-r--r--modules/module-list.nix1
-rw-r--r--modules/system/defaults-write.nix3
-rw-r--r--modules/system/defaults/WindowManager.nix76
-rw-r--r--tests/fixtures/system-defaults-write/activate-user.txt40
-rw-r--r--tests/system-defaults-write.nix8
5 files changed, 128 insertions, 0 deletions
diff --git a/modules/module-list.nix b/modules/module-list.nix
index d6116d9..0b62158 100644
--- a/modules/module-list.nix
+++ b/modules/module-list.nix
@@ -32,6 +32,7 @@
./system/defaults/trackpad.nix
./system/defaults/universalaccess.nix
./system/defaults/ActivityMonitor.nix
+ ./system/defaults/WindowManager.nix
./system/etc.nix
./system/keyboard.nix
./system/launchd.nix
diff --git a/modules/system/defaults-write.nix b/modules/system/defaults-write.nix
index 18be408..827a7d3 100644
--- a/modules/system/defaults-write.nix
+++ b/modules/system/defaults-write.nix
@@ -32,6 +32,7 @@ let
trackpadBluetooth = defaultsToList "com.apple.driver.AppleBluetoothMultitouch.trackpad" cfg.trackpad;
universalaccess = defaultsToList "com.apple.universalaccess" cfg.universalaccess;
ActivityMonitor = defaultsToList "com.apple.ActivityMonitor" cfg.ActivityMonitor;
+ WindowManager = defaultsToList "com.apple.WindowManager" cfg.WindowManager;
CustomUserPreferences = flatten (mapAttrsToList (name: value: defaultsToList name value) cfg.CustomUserPreferences);
CustomSystemPreferences = flatten (mapAttrsToList (name: value: defaultsToList name value) cfg.CustomSystemPreferences);
@@ -85,6 +86,7 @@ in
universalaccess
ActivityMonitor
CustomUserPreferences
+ WindowManager
]
''
# Set defaults
@@ -107,6 +109,7 @@ in
${concatStringsSep "\n" universalaccess}
${concatStringsSep "\n" ActivityMonitor}
${concatStringsSep "\n" CustomUserPreferences}
+ ${concatStringsSep "\n" WindowManager}
${optionalString (length dock > 0) ''
# Only restart Dock if current user is logged in
diff --git a/modules/system/defaults/WindowManager.nix b/modules/system/defaults/WindowManager.nix
new file mode 100644
index 0000000..38fbaa3
--- /dev/null
+++ b/modules/system/defaults/WindowManager.nix
@@ -0,0 +1,76 @@
+{ config, lib, ... }:
+
+with lib;
+{
+ options = {
+ system.defaults.WindowManager.GloballyEnabled = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Enable Stage Manager
+ Stage Manager arranges your recent windows into a single strip for reduced clutter and quick access. Default is false.
+ '';
+ };
+
+ system.defaults.WindowManager.EnableStandardClickToShowDesktop = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Click wallpaper to reveal desktop
+ Clicking your wallpaper will move all windows out of the way to allow access to your desktop items and widgets. Default is true.
+ false means "Only in Stage Manager"
+ true means "Always"
+ '';
+ };
+
+ system.defaults.WindowManager.AutoHide = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Auto hide stage strip showing recent apps. Default is false.
+ '';
+ };
+
+ system.defaults.WindowManager.AppWindowGroupingBehavior = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Grouping strategy when showing windows from an application.
+ false means "One at a time"
+ true means "All at once"
+ '';
+ };
+
+ system.defaults.WindowManager.StandardHideDesktopIcons = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Hide items on desktop.
+ '';
+ };
+
+ system.defaults.WindowManager.HideDesktop = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Hide items in Stage Manager.
+ '';
+ };
+
+ system.defaults.WindowManager.StandardHideWidgets = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Hide widgets on desktop.
+ '';
+ };
+
+ system.defaults.WindowManager.StageManagerHideWidgets = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Hide widgets in Stage Manager.
+ '';
+ };
+ };
+}
diff --git a/tests/fixtures/system-defaults-write/activate-user.txt b/tests/fixtures/system-defaults-write/activate-user.txt
index d324a8d..4824a11 100644
--- a/tests/fixtures/system-defaults-write/activate-user.txt
+++ b/tests/fixtures/system-defaults-write/activate-user.txt
@@ -375,3 +375,43 @@ defaults write com.apple.Safari 'com.apple.Safari.ContentPageGroupIdentifier.Web
<plist version="1.0">
<true/>
</plist>'
+defaults write com.apple.WindowManager 'AppWindowGroupingBehavior' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.WindowManager 'AutoHide' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'EnableStandardClickToShowDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'GloballyEnabled' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'HideDesktop' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'StageManagerHideWidgets' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
+defaults write com.apple.WindowManager 'StandardHideDesktopIcons' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<false/>
+</plist>'
+defaults write com.apple.WindowManager 'StandardHideWidgets' $'<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<true/>
+</plist>'
diff --git a/tests/system-defaults-write.nix b/tests/system-defaults-write.nix
index 6a95b55..f91aabe 100644
--- a/tests/system-defaults-write.nix
+++ b/tests/system-defaults-write.nix
@@ -64,6 +64,14 @@
system.defaults.ActivityMonitor.SortColumn = "CPUUsage";
system.defaults.ActivityMonitor.SortDirection = 0;
system.defaults.ActivityMonitor.OpenMainWindow = true;
+ system.defaults.WindowManager.GloballyEnabled = false;
+ system.defaults.WindowManager.EnableStandardClickToShowDesktop = false;
+ system.defaults.WindowManager.AutoHide = false;
+ system.defaults.WindowManager.AppWindowGroupingBehavior = true;
+ system.defaults.WindowManager.StandardHideDesktopIcons = false;
+ system.defaults.WindowManager.HideDesktop = false;
+ system.defaults.WindowManager.StandardHideWidgets = true;
+ system.defaults.WindowManager.StageManagerHideWidgets = true;
system.defaults.CustomUserPreferences = {
"NSGlobalDomain" = { "TISRomanSwitchState" = 1; };
"com.apple.Safari" = {