summaryrefslogtreecommitdiff
path: root/plugins/xsettings
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/xsettings
parent7a53cc78e1418f37593055fa8c7a1ce0cbd5643f (diff)
downloadmate-settings-daemon-537e98c4ca8dc78f25d796af12f7f3a25b070e9b.tar.bz2
mate-settings-daemon-537e98c4ca8dc78f25d796af12f7f3a25b070e9b.tar.xz
Initial Wayland support
Diffstat (limited to 'plugins/xsettings')
-rw-r--r--plugins/xsettings/msd-xsettings-manager.c51
-rw-r--r--plugins/xsettings/wm-common.c23
2 files changed, 54 insertions, 20 deletions
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 */