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>* *<theme><cornerRadius>*
The radius of server side decoration top corners. Default is 8. 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] *<theme><keepBorder>* [yes|no]
Even when disabling server side decorations via ToggleDecorations, Even when disabling server side decorations via ToggleDecorations,
keep a small border (and resize area) around the window. Default is yes. keep a small border (and resize area) around the window. Default is yes.

View file

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

View file

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

View file

@ -838,6 +838,8 @@ entry(xmlNode *node, char *nodename, char *content)
rc.theme_name = xstrdup(content); rc.theme_name = xstrdup(content);
} else if (!strcmp(nodename, "cornerradius.theme")) { } else if (!strcmp(nodename, "cornerradius.theme")) {
rc.corner_radius = atoi(content); rc.corner_radius = atoi(content);
} else if (!strcmp(nodename, "titlebar.theme")) {
set_bool(content, &rc.ssd_titlebar);
} else if (!strcasecmp(nodename, "keepBorder.theme")) { } else if (!strcasecmp(nodename, "keepBorder.theme")) {
set_bool(content, &rc.ssd_keep_border); set_bool(content, &rc.ssd_keep_border);
} else if (!strcmp(nodename, "name.font.theme")) { } else if (!strcmp(nodename, "name.font.theme")) {
@ -1146,6 +1148,7 @@ rcxml_init(void)
rc.placement_policy = LAB_PLACE_CENTER; rc.placement_policy = LAB_PLACE_CENTER;
rc.xdg_shell_server_side_deco = true; rc.xdg_shell_server_side_deco = true;
rc.ssd_titlebar = true;
rc.ssd_keep_border = true; rc.ssd_keep_border = true;
rc.corner_radius = 8; 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->workspace = server->workspace_current;
view->ssd_titlebar_hidden = !rc.ssd_titlebar;
view->scene_tree = wlr_scene_tree_create(view->workspace->tree); view->scene_tree = wlr_scene_tree_create(view->workspace->tree);
wlr_scene_node_set_enabled(&view->scene_tree->node, false); 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; xsurface->data = view;
view->workspace = server->workspace_current; view->workspace = server->workspace_current;
view->ssd_titlebar_hidden = !rc.ssd_titlebar;
view->scene_tree = wlr_scene_tree_create(view->workspace->tree); view->scene_tree = wlr_scene_tree_create(view->workspace->tree);
node_descriptor_create(&view->scene_tree->node, LAB_NODE_DESC_VIEW, view); node_descriptor_create(&view->scene_tree->node, LAB_NODE_DESC_VIEW, view);