diff options
| author | Sunderland93 <[email protected]> | 2026-08-01 11:17:58 +0400 |
|---|---|---|
| committer | Luke from DC <[email protected]> | 2026-08-19 19:15:44 +0000 |
| commit | 537e98c4ca8dc78f25d796af12f7f3a25b070e9b (patch) | |
| tree | c55a8fc7ed9ce3f8178ce50eb4a16f2a4c16ce85 /plugins | |
| parent | 7a53cc78e1418f37593055fa8c7a1ce0cbd5643f (diff) | |
| download | mate-settings-daemon-537e98c4ca8dc78f25d796af12f7f3a25b070e9b.tar.bz2 mate-settings-daemon-537e98c4ca8dc78f25d796af12f7f3a25b070e9b.tar.xz | |
Initial Wayland support
Diffstat (limited to 'plugins')
22 files changed, 287 insertions, 30 deletions
diff --git a/plugins/a11y-keyboard/a11y-keyboard.mate-settings-plugin.desktop.in b/plugins/a11y-keyboard/a11y-keyboard.mate-settings-plugin.desktop.in index 51a59a2..9a1793e 100644 --- a/plugins/a11y-keyboard/a11y-keyboard.mate-settings-plugin.desktop.in +++ b/plugins/a11y-keyboard/a11y-keyboard.mate-settings-plugin.desktop.in @@ -1,6 +1,7 @@ [MATE Settings Plugin] Module=a11y-keyboard IAge=0 +X11Only=true Name=Accessibility Keyboard Description=Accessibility keyboard plugin Authors=Jody Goldberg diff --git a/plugins/a11y-keyboard/msd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/msd-a11y-keyboard-manager.c index d354db5..7ffe863 100644 --- a/plugins/a11y-keyboard/msd-a11y-keyboard-manager.c +++ b/plugins/a11y-keyboard/msd-a11y-keyboard-manager.c @@ -35,7 +35,9 @@ #include <glib.h> #include <glib/gi18n.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gtk/gtk.h> #include <gio/gio.h> @@ -1149,6 +1151,20 @@ msd_a11y_keyboard_manager_start (MsdA11yKeyboardManager *manager, { mate_settings_profile_start (NULL); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "X11 display is required for the a11y_keyboard plugin"); + mate_settings_profile_end (NULL); + return FALSE; + } +#else + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "The a11y_keyboard plugin was built without X11 support"); + mate_settings_profile_end (NULL); + return FALSE; +#endif /* GDK_WINDOWING_X11 */ + /* give our initialization a lower priority over msd-keyoboard so it * restores the numlock state before we might start monitoring it */ g_idle_add_full (G_PRIORITY_LOW, @@ -1195,6 +1211,11 @@ msd_a11y_keyboard_manager_stop (MsdA11yKeyboardManager *manager) g_debug ("Stopping a11y_keyboard manager"); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; +#endif /* GDK_WINDOWING_X11 */ + gdk_window_remove_filter (NULL, devicepresence_filter, manager); if (p->status_icon) diff --git a/plugins/background/background.mate-settings-plugin.desktop.in b/plugins/background/background.mate-settings-plugin.desktop.in index 3c7a6a2..ae5fc48 100644 --- a/plugins/background/background.mate-settings-plugin.desktop.in +++ b/plugins/background/background.mate-settings-plugin.desktop.in @@ -1,6 +1,7 @@ [MATE Settings Plugin] Module=background IAge=0 +X11Only=true Name=Background Description=Background plugin Authors= diff --git a/plugins/background/msd-background-manager.c b/plugins/background/msd-background-manager.c index 5264bfa..5b8acea 100644 --- a/plugins/background/msd-background-manager.c +++ b/plugins/background/msd-background-manager.c @@ -37,7 +37,9 @@ #include <glib.h> #include <glib/gi18n.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gio/gio.h> #define MATE_DESKTOP_USE_UNSTABLE_API @@ -241,6 +243,20 @@ msd_background_manager_start (MsdBackgroundManager *manager, g_debug ("Starting background manager"); mate_settings_profile_start (NULL); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "X11 display is required for the background plugin"); + mate_settings_profile_end (NULL); + return FALSE; + } +#else + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "The background plugin was built without X11 support"); + mate_settings_profile_end (NULL); + return FALSE; +#endif /* GDK_WINDOWING_X11 */ + manager->settings = g_settings_new (MATE_BG_SCHEMA); manager->bg = mate_bg_new(); @@ -265,6 +281,11 @@ msd_background_manager_stop (MsdBackgroundManager *manager) { g_debug ("Stopping background manager"); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; +#endif /* GDK_WINDOWING_X11 */ + disconnect_screen_signals (manager); if (manager->settings != NULL) { diff --git a/plugins/clipboard/clipboard.mate-settings-plugin.desktop.in b/plugins/clipboard/clipboard.mate-settings-plugin.desktop.in index 3b81564..3641bb4 100644 --- a/plugins/clipboard/clipboard.mate-settings-plugin.desktop.in +++ b/plugins/clipboard/clipboard.mate-settings-plugin.desktop.in @@ -1,6 +1,7 @@ [MATE Settings Plugin] Module=clipboard IAge=0 +X11Only=true Name=Clipboard Description=Clipboard plugin Authors=Matthias Clasen diff --git a/plugins/clipboard/msd-clipboard-manager.c b/plugins/clipboard/msd-clipboard-manager.c index ef4007a..c1b68a2 100644 --- a/plugins/clipboard/msd-clipboard-manager.c +++ b/plugins/clipboard/msd-clipboard-manager.c @@ -36,8 +36,11 @@ #include <glib.h> #include <glib/gi18n.h> +#include <gio/gio.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <X11/Xlib.h> #include <X11/Xatom.h> @@ -930,11 +933,25 @@ start_clipboard_idle_cb (MsdClipboardManager *manager) } gboolean -msd_clipboard_manager_start (MsdClipboardManager *manager, + msd_clipboard_manager_start (MsdClipboardManager *manager, GError **error) { mate_settings_profile_start (NULL); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "X11 display is required for the clipboard plugin"); + mate_settings_profile_end (NULL); + return FALSE; + } +#else + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "The clipboard plugin was built without X11 support"); + mate_settings_profile_end (NULL); + return FALSE; +#endif /* GDK_WINDOWING_X11 */ + g_idle_add ((GSourceFunc) start_clipboard_idle_cb, manager); mate_settings_profile_end (NULL); @@ -947,6 +964,11 @@ msd_clipboard_manager_stop (MsdClipboardManager *manager) { g_debug ("Stopping clipboard manager"); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; +#endif /* GDK_WINDOWING_X11 */ + clipboard_manager_watch_cb (manager, manager->priv->window, FALSE, @@ -974,8 +996,14 @@ msd_clipboard_manager_init (MsdClipboardManager *manager) { manager->priv = msd_clipboard_manager_get_instance_private (manager); - manager->priv->display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); - +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + manager->priv->display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); + else + manager->priv->display = NULL; +#else + manager->priv->display = NULL; +#endif /* GDK_WINDOWING_X11 */ } static void diff --git a/plugins/common/eggaccelerators.c b/plugins/common/eggaccelerators.c index 0f924d3..77f320b 100644 --- a/plugins/common/eggaccelerators.c +++ b/plugins/common/eggaccelerators.c @@ -23,7 +23,9 @@ #include <stdlib.h> #include <string.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gdk/gdkkeysyms.h> #include <gtk/gtk.h> @@ -566,6 +568,7 @@ static void reload_modmap (GdkKeymap *keymap, EggModmap *modmap) { +#ifdef GDK_WINDOWING_X11 XModifierKeymap *xmodmap; int map_size; int i; @@ -629,6 +632,11 @@ reload_modmap (GdkKeymap *keymap, g_free (keys); } + XFreeModifiermap (xmodmap); +#else + memset (modmap->mapping, 0, sizeof (modmap->mapping)); +#endif /* GDK_WINDOWING_X11 */ + /* Add in the not-really-virtual fixed entries */ modmap->mapping[EGG_MODMAP_ENTRY_SHIFT] |= EGG_VIRTUAL_SHIFT_MASK; modmap->mapping[EGG_MODMAP_ENTRY_CONTROL] |= EGG_VIRTUAL_CONTROL_MASK; @@ -638,8 +646,6 @@ reload_modmap (GdkKeymap *keymap, modmap->mapping[EGG_MODMAP_ENTRY_MOD3] |= EGG_VIRTUAL_MOD3_MASK; modmap->mapping[EGG_MODMAP_ENTRY_MOD4] |= EGG_VIRTUAL_MOD4_MASK; modmap->mapping[EGG_MODMAP_ENTRY_MOD5] |= EGG_VIRTUAL_MOD5_MASK; - - XFreeModifiermap (xmodmap); } const EggModmap* diff --git a/plugins/common/msd-input-helper.c b/plugins/common/msd-input-helper.c index 05fad76..b6ca524 100644 --- a/plugins/common/msd-input-helper.c +++ b/plugins/common/msd-input-helper.c @@ -22,7 +22,9 @@ #include "config.h" #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <sys/types.h> #include <X11/Xatom.h> @@ -32,13 +34,20 @@ gboolean supports_xinput_devices (void) { +#ifdef GDK_WINDOWING_X11 gint op_code, event, error; + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return FALSE; + return XQueryExtension (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "XInputExtension", &op_code, &event, &error); +#else + return FALSE; +#endif /* GDK_WINDOWING_X11 */ } static gboolean @@ -78,6 +87,9 @@ device_is_touchpad (XDeviceInfo *deviceinfo) display = gdk_display_get_default (); + if (!GDK_IS_X11_DISPLAY (display)) + return NULL; + if (deviceinfo->type != XInternAtom (GDK_DISPLAY_XDISPLAY (display), XI_TOUCHPAD, True)) return NULL; @@ -103,6 +115,9 @@ touchpad_is_present (void) guint i; gboolean retval; + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return FALSE; + if (supports_xinput_devices () == FALSE) return TRUE; diff --git a/plugins/common/msd-keygrab.c b/plugins/common/msd-keygrab.c index 0ea0cc1..184aa21 100644 --- a/plugins/common/msd-keygrab.c +++ b/plugins/common/msd-keygrab.c @@ -24,7 +24,9 @@ #include "config.h" #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #ifdef HAVE_X11_EXTENSIONS_XKB_H #include <X11/XKBlib.h> #include <X11/extensions/XKB.h> @@ -74,6 +76,10 @@ grab_key_real (guint keycode, gboolean grab, int mask) { +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; + if (grab) { XGrabKey (GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), keycode, @@ -88,6 +94,9 @@ grab_key_real (guint keycode, mask, GDK_WINDOW_XID (root)); } +#else + g_warning ("Key grabbing is not supported without X11"); +#endif /* GDK_WINDOWING_X11 */ } /* Grab the key. In order to ignore MSD_IGNORED_MODS we need to grab @@ -203,6 +212,7 @@ key_uses_keycode (const Key *key, guint keycode) return FALSE; } +#ifdef GDK_WINDOWING_X11 gboolean match_key (Key *key, XEvent *event) { @@ -215,11 +225,9 @@ match_key (Key *key, XEvent *event) setup_modifiers (); -#ifdef HAVE_X11_EXTENSIONS_XKB_H if (have_xkb (event->xkey.display)) group = XkbGroupForCoreState (event->xkey.state); else -#endif group = (event->xkey.state & GDK_KEY_Mode_switch) ? 1 : 0; /* Check if we find a keysym that matches our current state */ @@ -244,3 +252,10 @@ match_key (Key *key, XEvent *event) return (key->state == (event->xkey.state & msd_used_mods) && key_uses_keycode (key, event->xkey.keycode)); } +#else /* !GDK_WINDOWING_X11 */ +gboolean +match_key (Key *key, XEvent *event) +{ + return FALSE; +} +#endif /* GDK_WINDOWING_X11 */ diff --git a/plugins/common/msd-osd-window.c b/plugins/common/msd-osd-window.c index d241cfb..5ac99a4 100644 --- a/plugins/common/msd-osd-window.c +++ b/plugins/common/msd-osd-window.c @@ -36,7 +36,7 @@ #include <glib.h> #include <glib/gi18n.h> #include <gtk/gtk.h> -#include <gdk/gdkx.h> +#include <gdk/gdk.h> #include "msd-osd-window.h" @@ -455,8 +455,8 @@ msd_osd_window_init (MsdOsdWindow *window) gtk_style_context_add_class (style, "window-frame"); /* assume 110x110 on a 640x480 display and scale from there */ - scalew = WidthOfScreen (gdk_x11_screen_get_xscreen (screen)) / (640.0 * window->priv->scale_factor); - scaleh = HeightOfScreen (gdk_x11_screen_get_xscreen (screen)) / (480.0 * window->priv->scale_factor); + scalew = gdk_screen_get_width (screen) / (640.0 * window->priv->scale_factor); + scaleh = gdk_screen_get_height (screen) / (480.0 * window->priv->scale_factor); scale = MIN (scalew, scaleh); size = 110 * MAX (1, scale); diff --git a/plugins/keybindings/keybindings.mate-settings-plugin.desktop.in b/plugins/keybindings/keybindings.mate-settings-plugin.desktop.in index c668e3f..dbed8b9 100644 --- a/plugins/keybindings/keybindings.mate-settings-plugin.desktop.in +++ b/plugins/keybindings/keybindings.mate-settings-plugin.desktop.in @@ -1,6 +1,7 @@ [MATE Settings Plugin] Module=keybindings IAge=0 +X11Only=true Name=Keybindings Description=Keybindings plugin Authors=AUTHOR diff --git a/plugins/keybindings/msd-keybindings-manager.c b/plugins/keybindings/msd-keybindings-manager.c index 5ce7f0d..324a976 100644 --- a/plugins/keybindings/msd-keybindings-manager.c +++ b/plugins/keybindings/msd-keybindings-manager.c @@ -34,7 +34,9 @@ #include <glib.h> #include <glib/gi18n.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gtk/gtk.h> #include <X11/keysym.h> #include <gio/gio.h> @@ -519,6 +521,7 @@ gboolean msd_keybindings_manager_start (MsdKeybindingsManager *manager, GError **error) { +#ifdef GDK_WINDOWING_X11 GdkDisplay *dpy; GdkScreen *screen; GdkWindow *window; @@ -530,6 +533,15 @@ msd_keybindings_manager_start (MsdKeybindingsManager *manager, mate_settings_profile_start (NULL); dpy = gdk_display_get_default (); + + if (!GDK_IS_X11_DISPLAY (dpy)) { + g_set_error (error, + G_IO_ERROR, + G_IO_ERROR_FAILED, + "Keybindings are only supported on X11"); + return FALSE; + } + xdpy = GDK_DISPLAY_XDISPLAY (dpy); screen = gdk_display_get_default_screen (dpy); @@ -559,6 +571,13 @@ msd_keybindings_manager_start (MsdKeybindingsManager *manager, mate_settings_profile_end (NULL); return TRUE; +#else /* !GDK_WINDOWING_X11 */ + g_set_error (error, + G_IO_ERROR, + G_IO_ERROR_FAILED, + "Keybindings are only supported on X11"); + return FALSE; +#endif /* GDK_WINDOWING_X11 */ } void @@ -569,6 +588,11 @@ msd_keybindings_manager_stop (MsdKeybindingsManager *manager) g_debug ("Stopping keybindings manager"); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; +#endif /* GDK_WINDOWING_X11 */ + if (p->client != NULL) { g_object_unref (p->client); p->client = NULL; diff --git a/plugins/keyboard/keyboard.mate-settings-plugin.desktop.in b/plugins/keyboard/keyboard.mate-settings-plugin.desktop.in index 00bd1d9..562f21d 100644 --- a/plugins/keyboard/keyboard.mate-settings-plugin.desktop.in +++ b/plugins/keyboard/keyboard.mate-settings-plugin.desktop.in @@ -1,6 +1,7 @@ [MATE Settings Plugin] Module=keyboard IAge=0 +X11Only=true Name=Keyboard Description=Keyboard plugin Authors= diff --git a/plugins/keyboard/msd-keyboard-manager.c b/plugins/keyboard/msd-keyboard-manager.c index 06bc322..7e7d3ae 100644 --- a/plugins/keyboard/msd-keyboard-manager.c +++ b/plugins/keyboard/msd-keyboard-manager.c @@ -34,8 +34,11 @@ #include <glib.h> #include <glib/gi18n.h> +#include <gio/gio.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #ifdef HAVE_X11_EXTENSIONS_XKB_H #include <X11/XKBlib.h> @@ -310,6 +313,20 @@ msd_keyboard_manager_start (MsdKeyboardManager *manager, { mate_settings_profile_start (NULL); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "X11 display is required for the keyboard plugin"); + mate_settings_profile_end (NULL); + return FALSE; + } +#else + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "The keyboard plugin was built without X11 support"); + mate_settings_profile_end (NULL); + return FALSE; +#endif /* GDK_WINDOWING_X11 */ + g_idle_add ((GSourceFunc) start_keyboard_idle_cb, manager); mate_settings_profile_end (NULL); @@ -324,6 +341,11 @@ msd_keyboard_manager_stop (MsdKeyboardManager *manager) g_debug ("Stopping keyboard manager"); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; +#endif /* GDK_WINDOWING_X11 */ + if (p->settings != NULL) { g_object_unref (p->settings); p->settings = NULL; diff --git a/plugins/media-keys/media-keys.mate-settings-plugin.desktop.in b/plugins/media-keys/media-keys.mate-settings-plugin.desktop.in index 733bd10..05d2456 100644 --- a/plugins/media-keys/media-keys.mate-settings-plugin.desktop.in +++ b/plugins/media-keys/media-keys.mate-settings-plugin.desktop.in @@ -1,6 +1,7 @@ [MATE Settings Plugin] Module=media-keys IAge=0 +X11Only=true Name=Media keys Description=Media keys plugin Authors= diff --git a/plugins/media-keys/msd-media-keys-manager.c b/plugins/media-keys/msd-media-keys-manager.c index 5ab8946..2d5428e 100644 --- a/plugins/media-keys/msd-media-keys-manager.c +++ b/plugins/media-keys/msd-media-keys-manager.c @@ -26,7 +26,9 @@ #include <glib.h> #include <glib/gi18n.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gtk/gtk.h> #include <gio/gio.h> @@ -1605,6 +1607,20 @@ msd_media_keys_manager_start (MsdMediaKeysManager *manager, GError **error) { mate_settings_profile_start (NULL); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "X11 display is required for the media_keys plugin"); + mate_settings_profile_end (NULL); + return FALSE; + } +#else + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "The media_keys plugin was built without X11 support"); + mate_settings_profile_end (NULL); + return FALSE; +#endif /* GDK_WINDOWING_X11 */ + #ifdef HAVE_LIBMATEMIXER if (G_LIKELY (mate_mixer_is_initialized ())) { mate_settings_profile_start ("mate_mixer_context_new"); @@ -1653,6 +1669,11 @@ msd_media_keys_manager_stop (MsdMediaKeysManager *manager) g_debug ("Stopping media_keys manager"); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; +#endif /* GDK_WINDOWING_X11 */ + for (ls = priv->screens; ls != NULL; ls = ls->next) { gdk_window_remove_filter (gdk_screen_get_root_window (ls->data), (GdkFilterFunc) acme_filter_events, diff --git a/plugins/mouse/mouse.mate-settings-plugin.desktop.in b/plugins/mouse/mouse.mate-settings-plugin.desktop.in index ae66d36..8b688f5 100644 --- a/plugins/mouse/mouse.mate-settings-plugin.desktop.in +++ b/plugins/mouse/mouse.mate-settings-plugin.desktop.in @@ -1,6 +1,7 @@ [MATE Settings Plugin] Module=mouse IAge=0 +X11Only=true Name=Mouse Description=Mouse plugin Authors= diff --git a/plugins/mouse/msd-mouse-manager.c b/plugins/mouse/msd-mouse-manager.c index 92a5f0a..fb4c35c 100644 --- a/plugins/mouse/msd-mouse-manager.c +++ b/plugins/mouse/msd-mouse-manager.c @@ -36,7 +36,9 @@ #include <glib/gi18n.h> #include <gtk/gtk.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gdk/gdkkeysyms.h> #include <X11/keysym.h> #include <X11/Xatom.h> @@ -1795,6 +1797,20 @@ msd_mouse_manager_start (MsdMouseManager *manager, { mate_settings_profile_start (NULL); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "X11 display is required for the mouse plugin"); + mate_settings_profile_end (NULL); + return FALSE; + } +#else + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "The mouse plugin was built without X11 support"); + mate_settings_profile_end (NULL); + return FALSE; +#endif /* GDK_WINDOWING_X11 */ + if (!supports_xinput_devices ()) { g_debug ("XInput is not supported, not applying any settings"); return TRUE; @@ -1814,6 +1830,11 @@ msd_mouse_manager_stop (MsdMouseManager *manager) g_debug ("Stopping mouse manager"); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; +#endif /* GDK_WINDOWING_X11 */ + if (p->settings_mouse != NULL) { g_object_unref(p->settings_mouse); p->settings_mouse = NULL; diff --git a/plugins/xrandr/msd-xrandr-manager.c b/plugins/xrandr/msd-xrandr-manager.c index 4402fd9..f49db50 100644 --- a/plugins/xrandr/msd-xrandr-manager.c +++ b/plugins/xrandr/msd-xrandr-manager.c @@ -36,7 +36,9 @@ #include <glib.h> #include <glib/gi18n.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gtk/gtk.h> #include <gio/gio.h> @@ -2582,6 +2584,20 @@ msd_xrandr_manager_start (MsdXrandrManager *manager, g_debug ("Starting xrandr manager"); mate_settings_profile_start (NULL); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "X11 display is required for the xrandr plugin"); + mate_settings_profile_end (NULL); + return FALSE; + } +#else + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "The xrandr plugin was built without X11 support"); + mate_settings_profile_end (NULL); + return FALSE; +#endif /* GDK_WINDOWING_X11 */ + log_open (); log_msg ("------------------------------------------------------------\nSTARTING XRANDR PLUGIN\n"); @@ -2663,6 +2679,11 @@ msd_xrandr_manager_stop (MsdXrandrManager *manager) g_debug ("Stopping xrandr manager"); +#ifdef GDK_WINDOWING_X11 + if (!GDK_IS_X11_DISPLAY (gdk_display_get_default ())) + return; +#endif /* GDK_WINDOWING_X11 */ + manager->priv->running = FALSE; display = gdk_display_get_default (); diff --git a/plugins/xrandr/xrandr.mate-settings-plugin.desktop.in b/plugins/xrandr/xrandr.mate-settings-plugin.desktop.in index 1c49e42..411489a 100644 --- a/plugins/xrandr/xrandr.mate-settings-plugin.desktop.in +++ b/plugins/xrandr/xrandr.mate-settings-plugin.desktop.in @@ -1,6 +1,7 @@ [MATE Settings Plugin] Module=xrandr IAge=0 +X11Only=true Name=XRandR Description=Set up screen size and rotation settings Authors=Various diff --git a/plugins/xsettings/msd-xsettings-manager.c b/plugins/xsettings/msd-xsettings-manager.c index 86ff376..6656ccb 100644 --- a/plugins/xsettings/msd-xsettings-manager.c +++ b/plugins/xsettings/msd-xsettings-manager.c @@ -36,7 +36,9 @@ #include <glib.h> #include <glib/gi18n.h> #include <gdk/gdk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#endif /* GDK_WINDOWING_X11 */ #include <gtk/gtk.h> #include <gio/gio.h> @@ -108,6 +110,7 @@ struct _TranslationEntry { struct MateXSettingsManagerPrivate { XSettingsManager **managers; + Display *xdisplay; GHashTable *gsettings; GSettings *gsettings_font; GSettings *plugin_settings; @@ -249,6 +252,10 @@ get_window_scale_auto (void) display = gdk_display_get_default (); monitor = gdk_display_get_primary_monitor (display); + /* If no monitor is available, use the current value as the default */ + if (monitor == NULL) + return 1; + /* Use current value as the default */ window_scale = 1; @@ -322,10 +329,10 @@ get_dpi_from_x_server (void) if (screen != NULL) { double width_dpi, height_dpi; - Screen *xscreen = gdk_x11_screen_get_xscreen (screen); - - width_dpi = dpi_from_pixels_and_mm (WidthOfScreen (xscreen), WidthMMOfScreen (xscreen)); - height_dpi = dpi_from_pixels_and_mm (HeightOfScreen (xscreen), HeightMMOfScreen (xscreen)); + width_dpi = dpi_from_pixels_and_mm (gdk_screen_get_width (screen), + gdk_screen_get_width_mm (screen)); + height_dpi = dpi_from_pixels_and_mm (gdk_screen_get_height (screen), + gdk_screen_get_height_mm (screen)); if (width_dpi < DPI_LOW_REASONABLE_VALUE || width_dpi > DPI_HIGH_REASONABLE_VALUE || height_dpi < DPI_LOW_REASONABLE_VALUE || height_dpi > DPI_HIGH_REASONABLE_VALUE) { @@ -628,7 +635,11 @@ xft_settings_set_xresources (MateXftSettings *settings) /* get existing properties */ dpy = XOpenDisplay (NULL); - g_return_if_fail (dpy != NULL); + if (dpy == NULL) { + g_warning ("Unable to open X display for X resources"); + mate_settings_profile_end (NULL); + return; + } add_string = g_string_new (XResourceManagerString (dpy)); g_debug("xft_settings_set_xresources: orig res '%s'", add_string->str); @@ -871,29 +882,30 @@ terminate_cb (void *data) static gboolean setup_xsettings_managers (MateXSettingsManager *manager) { - GdkDisplay *display; - gboolean res; - gboolean terminated; + Display *xdisplay; + gboolean res; + gboolean terminated; - display = gdk_display_get_default (); + xdisplay = XOpenDisplay (NULL); + if (xdisplay == NULL) { + g_warning ("Unable to open X display; xsettings manager disabled"); + return FALSE; + } - res = xsettings_manager_check_running (gdk_x11_display_get_xdisplay (display), - gdk_x11_screen_get_screen_number (gdk_screen_get_default ())); + res = xsettings_manager_check_running (xdisplay, DefaultScreen (xdisplay)); if (res) { g_warning ("You can only run one xsettings manager at a time; exiting"); + XCloseDisplay (xdisplay); return FALSE; } + manager->priv->xdisplay = xdisplay; manager->priv->managers = g_new0 (XSettingsManager *, 2); terminated = FALSE; - GdkScreen *screen; - - screen = gdk_display_get_default_screen (display); - - manager->priv->managers [0] = xsettings_manager_new (gdk_x11_display_get_xdisplay (display), - gdk_x11_screen_get_screen_number (screen), + manager->priv->managers [0] = xsettings_manager_new (xdisplay, + DefaultScreen (xdisplay), terminate_cb, &terminated); if (! manager->priv->managers [0]) { @@ -1011,6 +1023,11 @@ mate_xsettings_manager_stop (MateXSettingsManager *manager) p->managers = NULL; } + if (p->xdisplay != NULL) { + XCloseDisplay (p->xdisplay); + p->xdisplay = NULL; + } + if (p->gsettings != NULL) { g_hash_table_destroy (p->gsettings); p->gsettings = NULL; diff --git a/plugins/xsettings/wm-common.c b/plugins/xsettings/wm-common.c index 8b5be13..804a727 100644 --- a/plugins/xsettings/wm-common.c +++ b/plugins/xsettings/wm-common.c @@ -1,11 +1,13 @@ - #include <X11/Xatom.h> -#include <gdk/gdkx.h> -#include <gdk/gdk.h> #include <string.h> #include <glib.h> #include <glib-object.h> #include "wm-common.h" +#ifdef GDK_WINDOWING_X11 +#include <X11/Xatom.h> +#include <gdk/gdkx.h> +#include <gdk/gdk.h> + /* Our WM Window */ static Window wm_window = None; @@ -112,3 +114,18 @@ wm_common_update_window () { update_wm_window(); } + +#else /* !GDK_WINDOWING_X11 */ + +gchar* +wm_common_get_current_window_manager (void) +{ + return g_strdup (WM_COMMON_UNKNOWN); +} + +void +wm_common_update_window () +{ +} + +#endif /* GDK_WINDOWING_X11 */ |
