summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorSunderland93 <[email protected]>2026-08-01 11:17:58 +0400
committerLuke from DC <[email protected]>2026-08-19 19:15:44 +0000
commit537e98c4ca8dc78f25d796af12f7f3a25b070e9b (patch)
treec55a8fc7ed9ce3f8178ce50eb4a16f2a4c16ce85 /plugins
parent7a53cc78e1418f37593055fa8c7a1ce0cbd5643f (diff)
downloadmate-settings-daemon-537e98c4ca8dc78f25d796af12f7f3a25b070e9b.tar.bz2
mate-settings-daemon-537e98c4ca8dc78f25d796af12f7f3a25b070e9b.tar.xz
Initial Wayland support
Diffstat (limited to 'plugins')
-rw-r--r--plugins/a11y-keyboard/a11y-keyboard.mate-settings-plugin.desktop.in1
-rw-r--r--plugins/a11y-keyboard/msd-a11y-keyboard-manager.c21
-rw-r--r--plugins/background/background.mate-settings-plugin.desktop.in1
-rw-r--r--plugins/background/msd-background-manager.c21
-rw-r--r--plugins/clipboard/clipboard.mate-settings-plugin.desktop.in1
-rw-r--r--plugins/clipboard/msd-clipboard-manager.c34
-rw-r--r--plugins/common/eggaccelerators.c10
-rw-r--r--plugins/common/msd-input-helper.c15
-rw-r--r--plugins/common/msd-keygrab.c19
-rw-r--r--plugins/common/msd-osd-window.c6
-rw-r--r--plugins/keybindings/keybindings.mate-settings-plugin.desktop.in1
-rw-r--r--plugins/keybindings/msd-keybindings-manager.c24
-rw-r--r--plugins/keyboard/keyboard.mate-settings-plugin.desktop.in1
-rw-r--r--plugins/keyboard/msd-keyboard-manager.c22
-rw-r--r--plugins/media-keys/media-keys.mate-settings-plugin.desktop.in1
-rw-r--r--plugins/media-keys/msd-media-keys-manager.c21
-rw-r--r--plugins/mouse/mouse.mate-settings-plugin.desktop.in1
-rw-r--r--plugins/mouse/msd-mouse-manager.c21
-rw-r--r--plugins/xrandr/msd-xrandr-manager.c21
-rw-r--r--plugins/xrandr/xrandr.mate-settings-plugin.desktop.in1
-rw-r--r--plugins/xsettings/msd-xsettings-manager.c51
-rw-r--r--plugins/xsettings/wm-common.c23
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 */