<!-- 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>
% labwc-config(5)
% Johan Malm
-% 31 Aug, 2020
+% 15 Sept, 2020
# NAME
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)
#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;
int xdg_grab_offset;
- bool show_server_side_deco;
+ bool server_side_deco;
struct wl_listener map;
struct wl_listener unmap;
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"))
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)) {
if (!rc.font_name_activewindow)
rc.font_name_activewindow = strdup("sans");
- if (!rc.font_size_activewindow)
- rc.font_size_activewindow = 8;
set_title_height();
}
rcxml_init();
wl_list_init(&rc.keybinds);
+ pre_processing();
/*
* Reading file into buffer before parsing makes it easier to write
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)
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,
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);
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;
static bool has_ssd(struct view *view)
{
- if (rc.client_side_decorations)
+ if (!rc.xdg_shell_server_side_deco)
return false;
/*
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);
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);
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);