]> git.mdlowis.com Git - proto/labwc.git/commitdiff
rcxml: s/csd/xdg_shell_server_side_deco
authorJohan Malm <jgm323@gmail.com>
Tue, 15 Sep 2020 20:10:02 +0000 (21:10 +0100)
committerJohan Malm <jgm323@gmail.com>
Tue, 15 Sep 2020 20:10:02 +0000 (21:10 +0100)
data/rc.xml
docs/labwc-config.5.md
include/config/rcxml.h
include/labwc.h
src/config/rcxml.c
src/desktop.c
src/output.c
src/server.c
src/xdg.c
src/xwayland.c
tests/t1000-rcxml-simple-parse.c

index 894865293b435ba2823a3e1a2e0f9714b8db5545..dc3464eace45a2fea99ea352b063d6c931b93c52 100644 (file)
@@ -5,8 +5,8 @@
 
 <!-- labwc specific settings - additional to openbox -->
 <lab>
-  <!-- Use client-side decorations for xdg-shell views -->
-  <csd>no</csd>
+  <!-- Use server-side decorations for xdg-shell views where CSD can be disabled -->
+  <xdg_shell_server_side_deco>yes</xdg_shell_server_side_deco>
 
   <!-- See xkeyboard-config(7) for details on these keyboard settings -->
   <keyboard>
index 57ecf2d77c86c0542ca06f402dd12c60af69226e..947d14a3677f3561568e3b7e6a63a4a19b3ffee7 100644 (file)
@@ -1,6 +1,6 @@
 % labwc-config(5)
 % Johan Malm
-% 31 Aug, 2020
+% 15 Sept, 2020
 
 # NAME
 
@@ -22,15 +22,16 @@ be searched for in the following order:
 Labwc specific settings which are not present in Openbox.
 
     <lab>
-      <csd></csd>
+      <xdg_shell_server_side_deco></xdg_shell_server_side_deco>
       <keyboard>
         <layout></layout>
       </keyboard>
     </lab>
 
-`csd` (__boolean__; default no)
+`xdg_shell_server_side_deco` (__boolean__; default yes)
 
-:   Use client-side decorations for xdg-shell views.
+:   Use server-side decorations for xdg-shell views where it is possible to
+    turn of CSD
 
 `keyboard-layout` (__string__; not set by default)
 
index e540db48cba687e8c10e5e9166ba008cc0e51546..9fa31339a0bd0c8a0453f5d319067b230afc3acc 100644 (file)
@@ -8,7 +8,7 @@
 #include "common/buf.h"
 
 struct rcxml {
-       bool client_side_decorations;
+       bool xdg_shell_server_side_deco;
        char *theme_name;
        char *font_name_activewindow;
        int font_size_activewindow;
index c86deccd77f8e37e7844a0132dd7a2aa2d9a57b1..c76a6684109c767e862627310b1adc1fc1e8869c 100644 (file)
@@ -147,7 +147,7 @@ struct view {
 
        int xdg_grab_offset;
 
-       bool show_server_side_deco;
+       bool server_side_deco;
 
        struct wl_listener map;
        struct wl_listener unmap;
index 835bea195c3a89750b7578caf0bc051a83c45c2d..1c5f7da5e974b380b7048663645227511b36b2fa 100644 (file)
@@ -120,8 +120,8 @@ static void entry(xmlNode *node, char *nodename, char *content)
        if (is_attribute && !strcmp(nodename, "place.font.theme"))
                font_place = enum_font_place(content);
 
-       if (!strcmp(nodename, "csd.lab"))
-               rc.client_side_decorations = get_bool(content);
+       if (!strcmp(nodename, "xdg_shell_server_side_deco.lab"))
+               rc.xdg_shell_server_side_deco = get_bool(content);
        else if (!strcmp(nodename, "layout.keyboard.lab"))
                setenv("XKB_DEFAULT_LAYOUT", content, 1);
        else if (!strcmp(nodename, "name.theme"))
@@ -240,6 +240,12 @@ static void set_title_height(void)
        rc.title_height = font_height(buf);
 }
 
+static void pre_processing(void)
+{
+       rc.xdg_shell_server_side_deco = true;
+       rc.font_size_activewindow = 8;
+}
+
 static void post_processing(void)
 {
        if (!wl_list_length(&rc.keybinds)) {
@@ -255,8 +261,6 @@ static void post_processing(void)
        if (!rc.font_name_activewindow)
                rc.font_name_activewindow = strdup("sans");
 
-       if (!rc.font_size_activewindow)
-               rc.font_size_activewindow = 8;
        set_title_height();
 }
 
@@ -277,6 +281,7 @@ void rcxml_read(const char *filename)
 
        rcxml_init();
        wl_list_init(&rc.keybinds);
+       pre_processing();
 
        /*
         * Reading file into buffer before parsing makes it easier to write
index 268e8951fa244029cf33d964d11903e1ed897f67..5bae409c671fdfa11d06ace536f8e24e75b959be 100644 (file)
@@ -182,7 +182,7 @@ struct view *desktop_view_at(struct server *server, double lx, double ly,
                        continue;
                if (_view_at(view, lx, ly, surface, sx, sy))
                        return view;
-               if (!view->show_server_side_deco)
+               if (!view->server_side_deco)
                        continue;
                *view_area = deco_at(view, lx, ly);
                if (*view_area != LAB_DECO_NONE)
index 3cd37f84cc95d1e6b898966a5f43a9f57bd183db..b51fad0b1e79ff43b5ebff1d8b9aafe0261cf018 100644 (file)
@@ -86,7 +86,7 @@ static void render_icon(struct draw_data *d, struct wlr_box box,
 
 static void render_decorations(struct wlr_output *output, struct view *view)
 {
-       if (!view->show_server_side_deco)
+       if (!view->server_side_deco)
                return;
        struct draw_data ddata = {
                .renderer = view->server->renderer,
index 838712288a0f0ff4357580b1d0f645cd69a0eeab..0014d59aeb7301b8c2589c66ba1d2b7c54682201 100644 (file)
@@ -217,7 +217,7 @@ void server_init(struct server *server)
                exit(EXIT_FAILURE);
        }
        wlr_server_decoration_manager_set_default_mode(
-               deco_mgr, !rc.client_side_decorations ?
+               deco_mgr, rc.xdg_shell_server_side_deco ?
                                  WLR_SERVER_DECORATION_MANAGER_MODE_SERVER :
                                  WLR_SERVER_DECORATION_MANAGER_MODE_CLIENT);
 
index 595613de57fc9b9b33e9fec2a2c6c5655908732c..48117dfbc4077cc94c03f389e138d7a4786d9f7c 100644 (file)
--- a/src/xdg.c
+++ b/src/xdg.c
@@ -23,7 +23,7 @@ static void xdg_deco_request_mode(struct wl_listener *listener, void *data)
        struct xdg_deco *xdg_deco;
        xdg_deco = wl_container_of(listener, xdg_deco, request_mode);
        enum wlr_xdg_toplevel_decoration_v1_mode mode;
-       if (!rc.client_side_decorations)
+       if (rc.xdg_shell_server_side_deco)
                mode = WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE;
        else
                mode = WLR_XDG_TOPLEVEL_DECORATION_V1_MODE_CLIENT_SIDE;
@@ -50,7 +50,7 @@ void xdg_toplevel_decoration(struct wl_listener *listener, void *data)
 
 static bool has_ssd(struct view *view)
 {
-       if (rc.client_side_decorations)
+       if (!rc.xdg_shell_server_side_deco)
                return false;
 
        /*
@@ -147,8 +147,8 @@ static void xdg_toplevel_view_map(struct view *view)
        view->mapped = true;
        view->surface = view->xdg_surface->surface;
        if (!view->been_mapped) {
-               view->show_server_side_deco = has_ssd(view);
-               if (view->show_server_side_deco) {
+               view->server_side_deco = has_ssd(view);
+               if (view->server_side_deco) {
                        view->margin = deco_max_extents(view);
                } else {
                        view->margin = xdg_shell_border(view);
index c40976b406f142705593cfd4246c039202353646..cdb842e49ef66bac3ded3bcdc21000fd3bad4105 100644 (file)
@@ -69,7 +69,7 @@ static void map(struct view *view)
        view->w = view->xwayland_surface->width;
        view->h = view->xwayland_surface->height;
        view->surface = view->xwayland_surface->surface;
-       view->show_server_side_deco = want_deco(view);
+       view->server_side_deco = want_deco(view);
 
        view->margin = deco_max_extents(view);
 
index f6fdfd8f066738d85982ee359ace4441ba85ade5..7495b4d7d1e0c8d5767ea1f646b866e1ef56697c 100644 (file)
@@ -33,7 +33,7 @@ int main(int argc, char **argv)
        unlink(template);
 
        diag("Simple parse rc.xml");
-       ok1(rc.client_side_decorations);
+       ok1(rc.xdg_shell_server_side_deco);
 
        rcxml_finish();
        pango_cairo_font_map_set_default(NULL);