149 lines
6.2 KiB
Mathematica
149 lines
6.2 KiB
Mathematica
|
//
|
||
|
// NSUserDefaults+XQuartzDefaults.m
|
||
|
// XQuartz
|
||
|
//
|
||
|
// Created by Jeremy Huddleston Sequoia on 2021.02.19.
|
||
|
// Copyright (c) 2021 Apple Inc. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#import "NSUserDefaults+XQuartzDefaults.h"
|
||
|
#import <dispatch/dispatch.h>
|
||
|
|
||
|
NSString * const XQuartzPrefKeyAppsMenu = @"apps_menu";
|
||
|
NSString * const XQuartzPrefKeyFakeButtons = @"enable_fake_buttons";
|
||
|
NSString * const XQuartzPrefKeyFakeButton2 = @"fake_button2";
|
||
|
NSString * const XQuartzPrefKeyFakeButton3 = @"fake_button3";
|
||
|
NSString * const XQuartzPrefKeyKeyEquivs = @"enable_key_equivalents";
|
||
|
NSString * const XQuartzPrefKeyFullscreenHotkeys = @"fullscreen_hotkeys";
|
||
|
NSString * const XQuartzPrefKeyFullscreenMenu = @"fullscreen_menu";
|
||
|
NSString * const XQuartzPrefKeySyncKeymap = @"sync_keymap";
|
||
|
NSString * const XQuartzPrefKeyDepth = @"depth";
|
||
|
NSString * const XQuartzPrefKeyNoAuth = @"no_auth";
|
||
|
NSString * const XQuartzPrefKeyNoTCP = @"nolisten_tcp";
|
||
|
NSString * const XQuartzPrefKeyDoneXinitCheck = @"done_xinit_check";
|
||
|
NSString * const XQuartzPrefKeyNoQuitAlert = @"no_quit_alert";
|
||
|
NSString * const XQuartzPrefKeyNoRANDRAlert = @"no_randr_alert";
|
||
|
NSString * const XQuartzPrefKeyOptionSendsAlt = @"option_sends_alt";
|
||
|
NSString * const XQuartzPrefKeyAppKitModifiers = @"appkit_modifiers";
|
||
|
NSString * const XQuartzPrefKeyWindowItemModifiers = @"window_item_modifiers";
|
||
|
NSString * const XQuartzPrefKeyRootless = @"rootless";
|
||
|
NSString * const XQuartzPrefKeyRENDERExtension = @"enable_render_extension";
|
||
|
NSString * const XQuartzPrefKeyTESTExtension = @"enable_test_extensions";
|
||
|
NSString * const XQuartzPrefKeyLoginShell = @"login_shell";
|
||
|
NSString * const XQuartzPrefKeyUpdateFeed = @"update_feed";
|
||
|
NSString * const XQuartzPrefKeyClickThrough = @"wm_click_through";
|
||
|
NSString * const XQuartzPrefKeyFocusFollowsMouse = @"wm_ffm";
|
||
|
NSString * const XQuartzPrefKeyFocusOnNewWindow = @"wm_focus_on_new_window";
|
||
|
|
||
|
NSString * const XQuartzPrefKeyScrollInDeviceDirection = @"scroll_in_device_direction";
|
||
|
NSString * const XQuartzPrefKeySyncPasteboard = @"sync_pasteboard";
|
||
|
NSString * const XQuartzPrefKeySyncPasteboardToClipboard = @"sync_pasteboard_to_clipboard";
|
||
|
NSString * const XQuartzPrefKeySyncPasteboardToPrimary = @"sync_pasteboard_to_primary";
|
||
|
NSString * const XQuartzPrefKeySyncClipboardToPasteBoard = @"sync_clipboard_to_pasteboard";
|
||
|
NSString * const XQuartzPrefKeySyncPrimaryOnSelect = @"sync_primary_on_select";
|
||
|
|
||
|
@implementation NSUserDefaults (XQuartzDefaults)
|
||
|
|
||
|
+ (NSUserDefaults *)globalDefaults
|
||
|
{
|
||
|
static dispatch_once_t once;
|
||
|
static NSUserDefaults *defaults;
|
||
|
|
||
|
dispatch_once(&once, ^{
|
||
|
NSString * const defaultsDomain = @".GlobalPreferences";
|
||
|
defaults = [[[NSUserDefaults alloc] initWithSuiteName:defaultsDomain] retain];
|
||
|
|
||
|
NSDictionary<NSString *, id> * const defaultDefaultsDict = @{
|
||
|
@"AppleSpacesSwitchOnActivate" : @(YES),
|
||
|
};
|
||
|
|
||
|
[defaults registerDefaults:defaultDefaultsDict];
|
||
|
});
|
||
|
|
||
|
return defaults;
|
||
|
}
|
||
|
|
||
|
+ (NSUserDefaults *)dockDefaults
|
||
|
{
|
||
|
static dispatch_once_t once;
|
||
|
static NSUserDefaults *defaults;
|
||
|
|
||
|
dispatch_once(&once, ^{
|
||
|
NSString * const defaultsDomain = @"com.apple.dock";
|
||
|
defaults = [[[NSUserDefaults alloc] initWithSuiteName:defaultsDomain] retain];
|
||
|
|
||
|
NSDictionary<NSString *, id> * const defaultDefaultsDict = @{
|
||
|
@"workspaces" : @(NO),
|
||
|
};
|
||
|
|
||
|
[defaults registerDefaults:defaultDefaultsDict];
|
||
|
});
|
||
|
|
||
|
return defaults;
|
||
|
}
|
||
|
|
||
|
+ (NSUserDefaults *)xquartzDefaults
|
||
|
{
|
||
|
static dispatch_once_t once;
|
||
|
static NSUserDefaults *defaults;
|
||
|
|
||
|
dispatch_once(&once, ^{
|
||
|
NSString * const defaultsDomain = @(BUNDLE_ID_PREFIX ".X11");
|
||
|
NSString * const defaultDefaultsDomain = NSBundle.mainBundle.bundleIdentifier;
|
||
|
if ([defaultsDomain isEqualToString:defaultDefaultsDomain]) {
|
||
|
defaults = [NSUserDefaults.standardUserDefaults retain];
|
||
|
} else {
|
||
|
defaults = [[[NSUserDefaults alloc] initWithSuiteName:defaultsDomain] retain];
|
||
|
}
|
||
|
|
||
|
NSString *defaultWindowItemModifiers = @"command";
|
||
|
NSString * const defaultWindowItemModifiersLocalized = NSLocalizedString(@"window item modifiers", @"window item modifiers");
|
||
|
if (![defaultWindowItemModifiersLocalized isEqualToString:@"window item modifiers"]) {
|
||
|
defaultWindowItemModifiers = defaultWindowItemModifiersLocalized;
|
||
|
}
|
||
|
|
||
|
NSDictionary<NSString *, id> * const defaultDefaultsDict = @{
|
||
|
XQuartzPrefKeyFakeButtons : @(NO),
|
||
|
// XQuartzPrefKeyFakeButton2 nil default
|
||
|
// XQuartzPrefKeyFakeButton3 nil default
|
||
|
XQuartzPrefKeyKeyEquivs : @(YES),
|
||
|
XQuartzPrefKeyFullscreenHotkeys : @(NO),
|
||
|
XQuartzPrefKeyFullscreenMenu : @(NO),
|
||
|
XQuartzPrefKeySyncKeymap : @(NO),
|
||
|
XQuartzPrefKeyDepth : @(-1),
|
||
|
XQuartzPrefKeyNoAuth : @(NO),
|
||
|
XQuartzPrefKeyNoTCP : @(NO),
|
||
|
XQuartzPrefKeyDoneXinitCheck : @(NO),
|
||
|
XQuartzPrefKeyNoQuitAlert : @(NO),
|
||
|
XQuartzPrefKeyNoRANDRAlert : @(NO),
|
||
|
XQuartzPrefKeyOptionSendsAlt : @(NO),
|
||
|
// XQuartzPrefKeyAppKitModifiers nil default
|
||
|
XQuartzPrefKeyWindowItemModifiers : defaultWindowItemModifiers,
|
||
|
XQuartzPrefKeyRootless : @(YES),
|
||
|
XQuartzPrefKeyRENDERExtension : @(YES),
|
||
|
XQuartzPrefKeyTESTExtension : @(NO),
|
||
|
XQuartzPrefKeyLoginShell : @"/bin/sh",
|
||
|
XQuartzPrefKeyClickThrough : @(NO),
|
||
|
XQuartzPrefKeyFocusFollowsMouse : @(NO),
|
||
|
XQuartzPrefKeyFocusOnNewWindow : @(YES),
|
||
|
|
||
|
XQuartzPrefKeyScrollInDeviceDirection : @(NO),
|
||
|
XQuartzPrefKeySyncPasteboard : @(YES),
|
||
|
XQuartzPrefKeySyncPasteboardToClipboard : @(YES),
|
||
|
XQuartzPrefKeySyncPasteboardToPrimary : @(YES),
|
||
|
XQuartzPrefKeySyncClipboardToPasteBoard : @(YES),
|
||
|
XQuartzPrefKeySyncPrimaryOnSelect : @(NO),
|
||
|
};
|
||
|
|
||
|
[defaults registerDefaults:defaultDefaultsDict];
|
||
|
|
||
|
NSString * const systemDefaultsPlistPath = [@(XQUARTZ_DATA_DIR) stringByAppendingPathComponent:@"defaults.plist"];
|
||
|
NSDictionary <NSString *, id> * const systemDefaultsDict = [NSDictionary dictionaryWithContentsOfFile:systemDefaultsPlistPath];
|
||
|
[defaults registerDefaults:systemDefaultsDict];
|
||
|
});
|
||
|
|
||
|
return defaults;
|
||
|
}
|
||
|
|
||
|
@end
|