diff --git a/include/sway/commands.h b/include/sway/commands.h index 270585870..ff44d54c1 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h @@ -124,6 +124,7 @@ sway_cmd cmd_create_output; sway_cmd cmd_default_border; sway_cmd cmd_default_floating_border; sway_cmd cmd_default_orientation; +sway_cmd cmd_disable_titlebar; sway_cmd cmd_exec; sway_cmd cmd_exec_always; sway_cmd cmd_exit; diff --git a/include/sway/config.h b/include/sway/config.h index 69ca44661..db84aaa7a 100644 --- a/include/sway/config.h +++ b/include/sway/config.h @@ -508,7 +508,7 @@ struct sway_config { int font_height; int font_baseline; bool pango_markup; - bool hide_titlebar; + int titlebar_border_thickness; int titlebar_h_padding; int titlebar_v_padding; @@ -533,6 +533,7 @@ struct sway_config { bool validating; bool auto_back_and_forth; bool show_marks; + bool disable_titlebar; enum alignment title_align; bool primary_selection; @@ -542,7 +543,7 @@ struct sway_config { enum smart_gaps_mode smart_gaps; int gaps_inner; struct side_gaps gaps_outer; - + list_t *config_chain; bool user_config_path; const char *current_config_path; diff --git a/sway/commands.c b/sway/commands.c index 6becf3c85..b47d5b46b 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -58,6 +58,7 @@ static const struct cmd_handler handlers[] = { { "client.urgent", cmd_client_urgent }, { "default_border", cmd_default_border }, { "default_floating_border", cmd_default_floating_border }, + { "disable_titlebar", cmd_disable_titlebar }, { "exec", cmd_exec }, { "exec_always", cmd_exec_always }, { "floating_maximum_size", cmd_floating_maximum_size }, diff --git a/sway/commands/disable_titlebar.c b/sway/commands/disable_titlebar.c new file mode 100644 index 000000000..e05b4b8c3 --- /dev/null +++ b/sway/commands/disable_titlebar.c @@ -0,0 +1,14 @@ +#include "sway/commands.h" +#include "sway/config.h" +#include "util.h" + +struct cmd_results *cmd_disable_titlebar(int argc, char **argv) { + struct cmd_results *error = NULL; + if ((error = checkarg(argc, "disable_titlebar", EXPECTED_EQUAL_TO, 1))) { + return error; + } + + config->disable_titlebar = parse_boolean(argv[0], config->disable_titlebar); + + return cmd_results_new(CMD_SUCCESS, NULL); +} diff --git a/sway/config.c b/sway/config.c index 51b7f04c1..690e4decd 100644 --- a/sway/config.c +++ b/sway/config.c @@ -249,7 +249,6 @@ static void config_defaults(struct sway_config *config) { config->popup_during_fullscreen = POPUP_SMART; config->xwayland = XWAYLAND_MODE_LAZY; - config->hide_titlebar = false; config->titlebar_border_thickness = 1; config->titlebar_h_padding = 5; config->titlebar_v_padding = 4; @@ -271,6 +270,7 @@ static void config_defaults(struct sway_config *config) { config->auto_back_and_forth = false; config->reading = false; config->show_marks = true; + config->disable_titlebar = false; config->title_align = ALIGN_LEFT; config->tiling_drag = true; config->tiling_drag_threshold = 9; diff --git a/sway/desktop/render.c b/sway/desktop/render.c index dc3587e6b..97d16c736 100644 --- a/sway/desktop/render.c +++ b/sway/desktop/render.c @@ -716,7 +716,7 @@ static void render_containers_linear(struct render_context *ctx, struct parent_d marks_texture = child->marks_unfocused; } - if (state->border == B_NORMAL && !config->hide_titlebar) { + if (state->border == B_NORMAL && !config->disable_titlebar) { render_titlebar(ctx, child, floor(state->x), floor(state->y), state->width, colors, title_texture, marks_texture); @@ -790,7 +790,7 @@ static void render_containers_tabbed(struct render_context *ctx, struct parent_d tab_width = parent->box.width - tab_width * i; } - if (!config->hide_titlebar) { + if (!config->disable_titlebar) { render_titlebar(ctx, child, x, parent->box.y, tab_width, colors, title_texture, marks_texture); } @@ -853,7 +853,7 @@ static void render_containers_stacked(struct render_context *ctx, struct parent_ marks_texture = child->marks_unfocused; } - if (!config->hide_titlebar) { + if (!config->disable_titlebar) { int y = parent->box.y + titlebar_height * i; render_titlebar(ctx, child, parent->box.x, y, parent->box.width, colors, title_texture, marks_texture); @@ -953,7 +953,7 @@ static void render_floating_container(struct render_context *ctx, marks_texture = con->marks_unfocused; } - if (con->current.border == B_NORMAL && !config->hide_titlebar) { + if (con->current.border == B_NORMAL && !config->disable_titlebar) { render_titlebar(ctx, con, floor(con->current.x), floor(con->current.y), con->current.width, colors, title_texture, marks_texture); diff --git a/sway/meson.build b/sway/meson.build index 3abd778db..4ec9c6096 100644 --- a/sway/meson.build +++ b/sway/meson.build @@ -51,6 +51,7 @@ sway_sources = files( 'commands/default_border.c', 'commands/default_floating_border.c', 'commands/default_orientation.c', + 'commands/disable_titlebar.c', 'commands/exit.c', 'commands/exec.c', 'commands/exec_always.c', diff --git a/sway/sway.5.scd b/sway/sway.5.scd index 7e58b5286..152a533df 100644 --- a/sway/sway.5.scd +++ b/sway/sway.5.scd @@ -726,6 +726,9 @@ The default colors are: should be greater than titlebar_border_thickness. If _vertical_ value is not specified it is set to the _horizontal_ value. +*disable_titlebar* yes|no. + Remove titlebar. Default is _no_. + *for_window* Whenever a window that matches _criteria_ appears, run list of commands. See *CRITERIA* for more details. @@ -747,7 +750,7 @@ The default colors are: tabbed and stacked containers with one child. The _smart_|_smart_no_gaps_ options are equivalent to setting _smart_borders_ smart|no_gaps and _hide_edge_borders_ none. - + *input* For details on input subcommands, see *sway-input*(5). @@ -850,6 +853,7 @@ The default colors are: to _yes_, the marks will be shown on the _left_ side instead of the _right_ side. + *unbindswitch* : Removes a binding for when changes to . diff --git a/sway/tree/container.c b/sway/tree/container.c index fdfd6969e..d4d023902 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -670,7 +670,7 @@ void container_update_representation(struct sway_container *con) { } size_t container_titlebar_height(void) { - if(config->hide_titlebar) { + if(config->disable_titlebar) { return 0; }