rcxml: s/csd/xdg_shell_server_side_deco

This commit is contained in:
Johan Malm 2020-09-15 21:10:02 +01:00
parent 090e78b85a
commit 35ff6e5bb0
11 changed files with 27 additions and 21 deletions

View 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>

View 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)

View 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;

View 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;

View 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

View 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)

View 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,

View 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);

View file

@ -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);

View 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);

View 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);