decorations: allow to globally disable titlebars

This commit is contained in:
Tobias Bengfort 2024-04-18 23:58:07 +02:00
parent a8f98cb90b
commit 9627af691f
6 changed files with 11 additions and 0 deletions

View file

@ -397,6 +397,10 @@ extending outward from the snapped edge.
*<theme><cornerRadius>*
The radius of server side decoration top corners. Default is 8.
*<theme><titlebar>* [yes|no]
Set this to 'no' to only keep a small border (and resize area)
around the window. Default is yes.
*<theme><keepBorder>* [yes|no]
Even when disabling server side decorations via ToggleDecorations,
keep a small border (and resize area) around the window. Default is yes.

View file

@ -23,6 +23,7 @@
<theme>
<name></name>
<cornerRadius>8</cornerRadius>
<titlebar>yes</titlebar>
<keepBorder>yes</keepBorder>
<font place="ActiveWindow">
<name>sans</name>

View file

@ -63,6 +63,7 @@ struct rcxml {
/* theme */
char *theme_name;
int corner_radius;
bool ssd_titlebar;
bool ssd_keep_border;
struct font font_activewindow;
struct font font_inactivewindow;

View file

@ -838,6 +838,8 @@ entry(xmlNode *node, char *nodename, char *content)
rc.theme_name = xstrdup(content);
} else if (!strcmp(nodename, "cornerradius.theme")) {
rc.corner_radius = atoi(content);
} else if (!strcmp(nodename, "titlebar.theme")) {
set_bool(content, &rc.ssd_titlebar);
} else if (!strcasecmp(nodename, "keepBorder.theme")) {
set_bool(content, &rc.ssd_keep_border);
} else if (!strcmp(nodename, "name.font.theme")) {
@ -1146,6 +1148,7 @@ rcxml_init(void)
rc.placement_policy = LAB_PLACE_CENTER;
rc.xdg_shell_server_side_deco = true;
rc.ssd_titlebar = true;
rc.ssd_keep_border = true;
rc.corner_radius = 8;

View file

@ -735,6 +735,7 @@ xdg_surface_new(struct wl_listener *listener, void *data)
}
view->workspace = server->workspace_current;
view->ssd_titlebar_hidden = !rc.ssd_titlebar;
view->scene_tree = wlr_scene_tree_create(view->workspace->tree);
wlr_scene_node_set_enabled(&view->scene_tree->node, false);

View file

@ -869,6 +869,7 @@ xwayland_view_create(struct server *server,
xsurface->data = view;
view->workspace = server->workspace_current;
view->ssd_titlebar_hidden = !rc.ssd_titlebar;
view->scene_tree = wlr_scene_tree_create(view->workspace->tree);
node_descriptor_create(&view->scene_tree->node, LAB_NODE_DESC_VIEW, view);