summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston Sequoia <jeremyhu@apple.com>2022-11-24 10:58:26 -0800
committerJeremy Huddleston Sequoia <jeremyhu@apple.com>2022-11-24 11:38:42 -0800
commit3dee0aac2c0ed4538880b65ee528e4633d103592 (patch)
tree948bb16165c04cba75742409593863a5b5a2b308
parent5d302c378d9d21b34db2434425b766ac4f05de89 (diff)
downloadxserver-3dee0aac2c0ed4538880b65ee528e4633d103592.tar.gz
xquartz: Move default applications list outside of the main executable
This will allow side-wide customization. Fixes: https://github.com/XQuartz/XQuartz/issues/274 Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> (cherry picked from commit e654de80ed560c480efc072d876808b1d78da052)
-rw-r--r--hw/xquartz/Makefile.am2
-rw-r--r--hw/xquartz/NSUserDefaults+XQuartzDefaults.m9
-rw-r--r--hw/xquartz/defaults.plist17
-rw-r--r--hw/xquartz/meson.build6
-rw-r--r--hw/xquartz/pbproxy/Makefile.am2
-rw-r--r--hw/xquartz/pbproxy/meson.build5
6 files changed, 34 insertions, 7 deletions
diff --git a/hw/xquartz/Makefile.am b/hw/xquartz/Makefile.am
index 9c9311917..9db38c403 100644
--- a/hw/xquartz/Makefile.am
+++ b/hw/xquartz/Makefile.am
@@ -2,6 +2,7 @@ noinst_LTLIBRARIES = libXquartz.la
AM_CFLAGS = $(DIX_CFLAGS)
AM_OBJCFLAGS = $(DIX_CFLAGS)
AM_CPPFLAGS = \
+ -DXQUARTZ_DATA_DIR=\"$(datadir)/X11/XQuartz\" \
-DXSERVER_VERSION=\"$(VERSION)\" \
-DBUNDLE_ID_PREFIX=\"$(BUNDLE_ID_PREFIX)\" \
-DUSE_NEW_CLUT \
@@ -44,6 +45,7 @@ EXTRA_DIST = \
darwin.h \
darwinfb.h \
darwinEvents.h \
+ defaults.plist \
keysym2ucs.h \
quartz.h \
quartzKeyboard.h \
diff --git a/hw/xquartz/NSUserDefaults+XQuartzDefaults.m b/hw/xquartz/NSUserDefaults+XQuartzDefaults.m
index bd5dd2305..ecc192197 100644
--- a/hw/xquartz/NSUserDefaults+XQuartzDefaults.m
+++ b/hw/xquartz/NSUserDefaults+XQuartzDefaults.m
@@ -96,10 +96,6 @@ NSString * const XQuartzPrefKeySyncPrimaryOnSelect = @"sync_primary_on_select";
defaults = [[[NSUserDefaults alloc] initWithSuiteName:defaultsDomain] retain];
}
- NSArray * const defaultAppsMenu = @[
- @[NSLocalizedString(@"Terminal", @"Terminal"), @"xterm", @"n"],
- ];
-
NSString *defaultWindowItemModifiers = @"command";
NSString * const defaultWindowItemModifiersLocalized = NSLocalizedString(@"window item modifiers", @"window item modifiers");
if (![defaultWindowItemModifiersLocalized isEqualToString:@"window item modifiers"]) {
@@ -107,7 +103,6 @@ NSString * const XQuartzPrefKeySyncPrimaryOnSelect = @"sync_primary_on_select";
}
NSDictionary<NSString *, id> * const defaultDefaultsDict = @{
- XQuartzPrefKeyAppsMenu : defaultAppsMenu,
XQuartzPrefKeyFakeButtons : @(NO),
// XQuartzPrefKeyFakeButton2 nil default
// XQuartzPrefKeyFakeButton3 nil default
@@ -141,6 +136,10 @@ NSString * const XQuartzPrefKeySyncPrimaryOnSelect = @"sync_primary_on_select";
};
[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;
diff --git a/hw/xquartz/defaults.plist b/hw/xquartz/defaults.plist
new file mode 100644
index 000000000..957b1e0c7
--- /dev/null
+++ b/hw/xquartz/defaults.plist
@@ -0,0 +1,17 @@
+<?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">
+
+<!-- This file contains system-wide defaults for XQuartz -->
+
+<plist version="1.0">
+<dict>
+ <key>apps_menu</key>
+ <array>
+ <array>
+ <string>Terminal</string>
+ <string>xterm</string>
+ <string>n</string>
+ </array>
+ </array>
+</dict>
+</plist>
diff --git a/hw/xquartz/meson.build b/hw/xquartz/meson.build
index 14f48e06e..83e79eae8 100644
--- a/hw/xquartz/meson.build
+++ b/hw/xquartz/meson.build
@@ -23,6 +23,7 @@ endif
bundle_id_def = '-DBUNDLE_ID_PREFIX="@0@"'.format(bundle_id_prefix)
bundle_root = join_paths(apple_applications_dir, apple_application_name + '.app')
+xquartz_data_dir = join_paths(get_option('prefix'), get_option('datadir'),'X11', 'XQuartz')
# using sparkle update framework?
build_sparkle = xquartz_sparkle_feed_url != '' and xquartz_sparkle_public_edkey != ''
@@ -60,6 +61,7 @@ libxquartz_defs = [
'-DUSE_NEW_CLUT',
'-DXFree86Server',
'-DXQUARTZ',
+ '-DXQUARTZ_DATA_DIR="@0@"'.format(xquartz_data_dir),
'-DXSERVER_VERSION="@0@"'.format(meson.project_version()),
bundle_id_def,
sparkle_defs,
@@ -93,3 +95,7 @@ xquartz_man = configure_file(
configuration: manpage_config,
)
install_man(xquartz_man)
+
+install_data('defaults.plist',
+ install_dir: xquartz_data_dir,
+ install_mode: 'rw-r--r--')
diff --git a/hw/xquartz/pbproxy/Makefile.am b/hw/xquartz/pbproxy/Makefile.am
index 3314855d7..b26b8e273 100644
--- a/hw/xquartz/pbproxy/Makefile.am
+++ b/hw/xquartz/pbproxy/Makefile.am
@@ -1,4 +1,4 @@
-AM_CPPFLAGS=-I..
+AM_CPPFLAGS=-I.. -DXQUARTZ_DATA_DIR=\"$(datadir)/X11/XQuartz\"
AM_CFLAGS=$(XPBPROXY_CFLAGS)
AM_OBJCFLAGS=$(XPBPROXY_CFLAGS)
diff --git a/hw/xquartz/pbproxy/meson.build b/hw/xquartz/pbproxy/meson.build
index eebb9fd70..206cbdca3 100644
--- a/hw/xquartz/pbproxy/meson.build
+++ b/hw/xquartz/pbproxy/meson.build
@@ -1,6 +1,9 @@
build_standalone_pbproxy = get_option('xpbproxy')
-pbproxy_defs = [bundle_id_def]
+pbproxy_defs = [
+ '-DXQUARTZ_DATA_DIR="@0@"'.format(xquartz_data_dir),
+ bundle_id_def
+]
if build_standalone_pbproxy
pbproxy_defs += ['-DSTANDALONE_XPBPROXY']
endif