summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hoang <Enzime@users.noreply.github.com>2024-11-12 15:13:14 +0000
committerGitHub <noreply@github.com>2024-11-12 15:13:14 +0000
commite30d226a24e4079d068321f935dbf30626f08dc8 (patch)
treef1af62024c94c96474dfbb74db3c06f23b701ec0
parent5c74ab862c8070cbf6400128a1b56abb213656da (diff)
parent32df51bf2b82dab724b845f4ad2d45bc1a0d0b9e (diff)
Merge pull request #1163 from LucasMendesl/feature/controlcenter
defaults: add `controlcenter` and other options
-rw-r--r--modules/module-list.nix1
-rw-r--r--modules/system/defaults-write.nix4
-rw-r--r--modules/system/defaults/clock.nix8
-rw-r--r--modules/system/defaults/controlcenter.nix100
-rw-r--r--modules/system/defaults/dock.nix8
-rw-r--r--modules/system/defaults/finder.nix57
-rw-r--r--modules/system/defaults/screencapture.nix12
-rw-r--r--tests/fixtures/system-defaults-write/activate-user.txt80
-rw-r--r--tests/system-defaults-write.nix16
9 files changed, 282 insertions, 4 deletions
diff --git a/modules/module-list.nix b/modules/module-list.nix
index 3725c7e..aa190c7 100644
--- a/modules/module-list.nix
+++ b/modules/module-list.nix
@@ -14,6 +14,7 @@
./system/activation-scripts.nix
./system/applications.nix
./system/defaults-write.nix
+ ./system/defaults/controlcenter.nix
./system/defaults/LaunchServices.nix
./system/defaults/NSGlobalDomain.nix
./system/defaults/GlobalPreferences.nix
diff --git a/modules/system/defaults-write.nix b/modules/system/defaults-write.nix
index 7af972d..87b179b 100644
--- a/modules/system/defaults-write.nix
+++ b/modules/system/defaults-write.nix
@@ -34,9 +34,11 @@ let
universalaccess = defaultsToList "com.apple.universalaccess" cfg.universalaccess;
ActivityMonitor = defaultsToList "com.apple.ActivityMonitor" cfg.ActivityMonitor;
WindowManager = defaultsToList "com.apple.WindowManager" cfg.WindowManager;
+ controlcenter = defaultsToList "~/Library/Preferences/ByHost/com.apple.controlcenter" cfg.controlcenter;
CustomUserPreferences = flatten (mapAttrsToList (name: value: defaultsToList name value) cfg.CustomUserPreferences);
CustomSystemPreferences = flatten (mapAttrsToList (name: value: defaultsToList name value) cfg.CustomSystemPreferences);
+
mkIfAttrs = list: mkIf (any (attrs: attrs != { }) list);
in
@@ -89,6 +91,7 @@ in
ActivityMonitor
CustomUserPreferences
WindowManager
+ controlcenter
]
''
# Set defaults
@@ -113,6 +116,7 @@ in
${concatStringsSep "\n" ActivityMonitor}
${concatStringsSep "\n" CustomUserPreferences}
${concatStringsSep "\n" WindowManager}
+ ${concatStringsSep "\n" controlcenter}
${optionalString (length dock > 0) ''
# Only restart Dock if current user is logged in
diff --git a/modules/system/defaults/clock.nix b/modules/system/defaults/clock.nix
index 3fae464..50eb517 100644
--- a/modules/system/defaults/clock.nix
+++ b/modules/system/defaults/clock.nix
@@ -5,6 +5,14 @@ with lib;
{
options = {
+ system.defaults.menuExtraClock.FlashDateSeparators = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ When enabled, the clock indicator (which by default is the colon) will flash on and off each second. Default is null.
+ '';
+ };
+
system.defaults.menuExtraClock.IsAnalog = mkOption {
type = types.nullOr types.bool;
default = null;
diff --git a/modules/system/defaults/controlcenter.nix b/modules/system/defaults/controlcenter.nix
new file mode 100644
index 0000000..91532fa
--- /dev/null
+++ b/modules/system/defaults/controlcenter.nix
@@ -0,0 +1,100 @@
+{ config, lib, ... }:
+
+{
+ options = {
+
+ system.defaults.controlcenter.BatteryShowPercentage = lib.mkOption {
+ type = lib.types.nullOr lib.types.bool;
+ default = null;
+ description = ''
+ Apple menu > System Preferences > Control Center > Battery
+
+ Show a battery percentage in menu bar. Default is null.
+ '';
+ };
+
+ system.defaults.controlcenter.Sound = lib.mkOption {
+ type = lib.types.nullOr lib.types.bool;
+ apply = v: if v == null then null else if v == true then 18 else 24;
+ default = null;
+ description = ''
+ Apple menu > System Preferences > Control Center > Sound
+
+ Show a sound control in menu bar . Default is null.
+
+ 18 = Display icon in menu bar
+ 24 = Hide icon in menu bar
+ '';
+ };
+
+ system.defaults.controlcenter.Bluetooth = lib.mkOption {
+ type = lib.types.nullOr lib.types.bool;
+ apply = v: if v == null then null else if v == true then 18 else 24;
+ default = null;
+ description = ''
+ Apple menu > System Preferences > Control Center > Bluetooth
+
+ Show a bluetooth control in menu bar. Default is null.
+
+ 18 = Display icon in menu bar
+ 24 = Hide icon in menu bar
+ '';
+ };
+
+ system.defaults.controlcenter.AirDrop = lib.mkOption {
+ type = lib.types.nullOr lib.types.bool;
+ apply = v: if v == null then null else if v == true then 18 else 24;
+ default = null;
+ description = ''
+ Apple menu > System Preferences > Control Center > AirDrop
+
+ Show a AirDrop control in menu bar. Default is null.
+
+ 18 = Display icon in menu bar
+ 24 = Hide icon in menu bar
+ '';
+ };
+
+ system.defaults.controlcenter.Display = lib.mkOption {
+ type = lib.types.nullOr lib.types.bool;
+ apply = v: if v == null then null else if v == true then 18 else 24;
+ default = null;
+ description = ''
+ Apple menu > System Preferences > Control Center > Display
+
+ Show a Screen Brightness control in menu bar. Default is null.
+
+ 18 = Display icon in menu bar
+ 24 = Hide icon in menu bar
+ '';
+ };
+
+ system.defaults.controlcenter.FocusModes = lib.mkOption {
+ type = lib.types.nullOr lib.types.bool;
+ apply = v: if v == null then null else if v == true then 18 else 24;
+ default = null;
+ description = ''
+ Apple menu > System Preferences > Control Center > Focus
+
+ Show a Focus control in menu bar. Default is null.
+
+ 18 = Display icon in menu bar
+ 24 = Hide icon in menu bar
+ '';
+ };
+
+ system.defaults.controlcenter.NowPlaying = lib.mkOption {
+ type = lib.types.nullOr lib.types.bool;
+ apply = v: if v == null then null else if v == true then 18 else 24;
+ default = null;
+ description = ''
+ Apple menu > System Preferences > Control Center > Now Playing
+
+ Show a Now Playing control in menu bar. Default is null.
+
+ 18 = Display icon in menu bar
+ 24 = Hide icon in menu bar
+ '';
+ };
+ };
+}
diff --git a/modules/system/defaults/dock.nix b/modules/system/defaults/dock.nix
index 5c4a470..2d5c161 100644
--- a/modules/system/defaults/dock.nix
+++ b/modules/system/defaults/dock.nix
@@ -149,6 +149,14 @@ in {
else map (folder: { tile-data = { file-data = { _CFURLString = "file://" + folder; _CFURLStringType = 15; }; }; tile-type = if strings.hasInfix "." (last (splitString "/" folder)) then "file-tile" else "directory-tile"; }) value;
};
+ system.defaults.dock.scroll-to-open = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Scroll up on a Dock icon to show all Space's opened windows for an app, or open stack. The default is false.
+ '';
+ };
+
system.defaults.dock.show-process-indicators = mkOption {
type = types.nullOr types.bool;
default = null;
diff --git a/modules/system/defaults/finder.nix b/modules/system/defaults/finder.nix
index 51fff74..5004b2c 100644
--- a/modules/system/defaults/finder.nix
+++ b/modules/system/defaults/finder.nix
@@ -41,6 +41,15 @@ in
'';
};
+ system.defaults.finder.FXRemoveOldTrashItems = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Remove items in the trash after 30 days.
+ The default is false.
+ '';
+ };
+
system.defaults.finder.FXPreferredViewStyle = mkOption {
type = types.nullOr types.str;
default = null;
@@ -55,7 +64,7 @@ in
type = types.nullOr types.bool;
default = null;
description = ''
- Whether to always show file extensions. The default is false.
+ Whether to always show file extensions. The default is false.
'';
};
@@ -71,7 +80,39 @@ in
type = types.nullOr types.bool;
default = null;
description = ''
- Whether to allow quitting of the Finder. The default is false.
+ Whether to allow quitting of the Finder. The default is false.
+ '';
+ };
+
+ system.defaults.finder.ShowExternalHardDrivesOnDesktop = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Whether to show external disks on desktop. The default is true.
+ '';
+ };
+
+ system.defaults.finder.ShowHardDrivesOnDesktop = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Whether to show hard disks on desktop. The default is false.
+ '';
+ };
+
+ system.defaults.finder.ShowMountedServersOnDesktop = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Whether to show connected servers on desktop. The default is false.
+ '';
+ };
+
+ system.defaults.finder.ShowRemovableMediaOnDesktop = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Whether to show removable media (CDs, DVDs and iPods) on desktop. The default is true.
'';
};
@@ -79,7 +120,7 @@ in
type = types.nullOr types.bool;
default = null;
description = ''
- Whether to show the full POSIX filepath in the window title. The default is false.
+ Whether to show the full POSIX filepath in the window title. The default is false.
'';
};
@@ -91,11 +132,19 @@ in
'';
};
+ system.defaults.finder._FXSortFoldersFirstOnDesktop = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Keep folders on top when sorting by name on the desktop. The default is false.
+ '';
+ };
+
system.defaults.finder.FXEnableExtensionChangeWarning = mkOption {
type = types.nullOr types.bool;
default = null;
description = ''
- Whether to show warnings when change the file extension of files. The default is true.
+ Whether to show warnings when change the file extension of files. The default is true.
'';
};
diff --git a/modules/system/defaults/screencapture.nix b/modules/system/defaults/screencapture.nix
index b5efc22..80dcaab 100644
--- a/modules/system/defaults/screencapture.nix
+++ b/modules/system/defaults/screencapture.nix
@@ -29,6 +29,18 @@ with lib;
'';
};
+ system.defaults.screencapture.include-date = mkOption {
+ type = types.nullOr types.bool;
+ default = null;
+ description = ''
+ Include date and time in screenshot filenames. The default is true.
+ Screenshot 2024-01-09 at 13.27.20.png would be an example for true.
+
+ Screenshot.png
+ Screenshot 1.png would be an example for false.
+ '';
+ };
+
system.defaults.screencapture.show-thumbnail = mkOption {
type = types.nullOr types.bool;
default = null;
diff --git a/tests/fixtures/system-defaults-write/activate-user.txt b/tests/fixtures/system-defaults-write/activate-user.txt
index 51b7574..f6e9bba 100644
--- a/tests/fixtures/system-defaults-write/activate-user.txt
+++ b/tests/fixtures/system-defaults-write/activate-user.txt
@@ -205,6 +205,11 @@ defaults write .GlobalPreferences 'com.apple.sound.beep.sound' $'<?xml version="
<string>/System/Library/Sounds/Funk.aiff</string>
</plist>'
+defaults write com.apple.menuextra.clock 'FlashDateSeparators' $'<?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.menuextra.clock 'Show24Hour' $'<?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">
@@ -299,6 +304,11 @@ defaults write com.apple.dock 'persistent-others' $'<?xml version="1.0" encoding
</dict>
</array>
</plist>'
+defaults write com.apple.dock 'scroll-to-open' $'<?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.finder 'AppleShowAllExtensions' $'<?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">
@@ -329,6 +339,11 @@ defaults write com.apple.finder 'FXPreferredViewStyle' $'<?xml version="1.0" enc
<plist version="1.0">
<string>Flwv</string>
</plist>'
+defaults write com.apple.finder 'FXRemoveOldTrashItems' $'<?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.finder 'NewWindowTarget' $'<?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">
@@ -344,11 +359,31 @@ defaults write com.apple.finder 'QuitMenuItem' $'<?xml version="1.0" encoding="U
<plist version="1.0">
<true/>
</plist>'
+defaults write com.apple.finder 'ShowExternalHardDrivesOnDesktop' $'<?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.finder 'ShowHardDrivesOnDesktop' $'<?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.finder 'ShowMountedServersOnDesktop' $'<?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.finder 'ShowPathbar' $'<?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.finder 'ShowRemovableMediaOnDesktop' $'<?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.finder 'ShowStatusBar' $'<?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">
@@ -364,6 +399,11 @@ defaults write com.apple.finder '_FXSortFoldersFirst' $'<?xml version="1.0" enco
<plist version="1.0">
<true/>
</plist>'
+defaults write com.apple.finder '_FXSortFoldersFirstOnDesktop' $'<?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.HIToolbox 'AppleFnUsageType' $'<?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">
@@ -371,6 +411,11 @@ defaults write com.apple.HIToolbox 'AppleFnUsageType' $'<?xml version="1.0" enco
</plist>'
+defaults write com.apple.screencapture 'include-date' $'<?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.screencapture 'location' $'<?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">
@@ -489,3 +534,38 @@ defaults write com.apple.WindowManager 'StandardHideWidgets' $'<?xml version="1.
<plist version="1.0">
<true/>
</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'AirDrop' $'<?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">
+<integer>18</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'BatteryShowPercentage' $'<?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 ~/Library/Preferences/ByHost/com.apple.controlcenter 'Bluetooth' $'<?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">
+<integer>18</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'Display' $'<?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">
+<integer>24</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'FocusModes' $'<?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">
+<integer>24</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'NowPlaying' $'<?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">
+<integer>18</integer>
+</plist>'
+defaults write ~/Library/Preferences/ByHost/com.apple.controlcenter 'Sound' $'<?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">
+<integer>24</integer>
+</plist>' \ No newline at end of file
diff --git a/tests/system-defaults-write.nix b/tests/system-defaults-write.nix
index ab26ef1..078cf82 100644
--- a/tests/system-defaults-write.nix
+++ b/tests/system-defaults-write.nix
@@ -42,6 +42,7 @@
system.defaults.NSGlobalDomain."com.apple.springing.delay" = 0.0;
system.defaults.NSGlobalDomain."com.apple.swipescrolldirection" = true;
system.defaults.".GlobalPreferences"."com.apple.sound.beep.sound" = "/System/Library/Sounds/Funk.aiff";
+ system.defaults.menuExtraClock.FlashDateSeparators = false;
system.defaults.menuExtraClock.Show24Hour = false;
system.defaults.menuExtraClock.ShowDayOfWeek = true;
system.defaults.menuExtraClock.ShowDate = 2;
@@ -50,11 +51,13 @@
system.defaults.dock.orientation = "left";
system.defaults.dock.persistent-apps = ["MyApp.app" "Cool.app"];
system.defaults.dock.persistent-others = ["~/Documents" "~/Downloads/file.txt"];
+ system.defaults.dock.scroll-to-open = false;
system.defaults.finder.AppleShowAllFiles = true;
system.defaults.finder.ShowStatusBar = true;
system.defaults.finder.ShowPathbar = true;
system.defaults.finder.FXDefaultSearchScope = "SCcf";
system.defaults.finder.FXPreferredViewStyle = "Flwv";
+ system.defaults.finder.FXRemoveOldTrashItems = false;
system.defaults.finder.AppleShowAllExtensions = true;
system.defaults.finder.CreateDesktop = false;
system.defaults.finder.NewWindowTarget = "Other";
@@ -62,9 +65,15 @@
system.defaults.finder.QuitMenuItem = true;
system.defaults.finder._FXShowPosixPathInTitle = true;
system.defaults.finder._FXSortFoldersFirst = true;
+ system.defaults.finder._FXSortFoldersFirstOnDesktop = false;
system.defaults.finder.FXEnableExtensionChangeWarning = false;
+ system.defaults.finder.ShowExternalHardDrivesOnDesktop = false;
+ system.defaults.finder.ShowHardDrivesOnDesktop = false;
+ system.defaults.finder.ShowMountedServersOnDesktop = false;
+ system.defaults.finder.ShowRemovableMediaOnDesktop = false;
system.defaults.hitoolbox.AppleFnUsageType = "Show Emoji & Symbols";
system.defaults.screencapture.location = "/tmp";
+ system.defaults.screencapture.include-date = true;
system.defaults.screensaver.askForPassword = true;
system.defaults.screensaver.askForPasswordDelay = 5;
system.defaults.smb.NetBIOSName = "IMAC-000000";
@@ -94,6 +103,13 @@
true;
};
};
+ system.defaults.controlcenter.BatteryShowPercentage = true;
+ system.defaults.controlcenter.Sound = false;
+ system.defaults.controlcenter.Bluetooth = true;
+ system.defaults.controlcenter.AirDrop = true;
+ system.defaults.controlcenter.Display = false;
+ system.defaults.controlcenter.FocusModes = false;
+ system.defaults.controlcenter.NowPlaying = true;
test = lib.strings.concatMapStringsSep "\n"
(x: ''
echo >&2 "checking defaults write in /${x}"