diff --git a/sway/commands.c b/sway/commands.c index 725eaf15..b7794087 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -217,6 +217,19 @@ int cmd_log_colors(struct sway_config *config, int argc, char **argv) { return 0; } +int cmd_fullscreen(struct sway_config *config, int argc, char **argv) { + if (argc != 1) { + sway_log(L_ERROR, "Invalid fullscreen command (expected 1 arguments, got %d)", argc); + return 1; + } + + swayc_t *container = get_focused_container(&root_container); + wlc_view_set_state(container->handle, WLC_BIT_FULLSCREEN, true); + arrange_windows(container, -1, -1); + + return 1; +} + /* Keep alphabetized */ struct cmd_handler handlers[] = { { "bindsym", cmd_bindsym }, @@ -224,6 +237,7 @@ struct cmd_handler handlers[] = { { "exit", cmd_exit }, { "focus", cmd_focus }, { "focus_follows_mouse", cmd_focus_follows_mouse }, + { "fullscreen", cmd_fullscreen }, { "layout", cmd_layout }, { "log_colors", cmd_log_colors }, { "set", cmd_set }, diff --git a/sway/layout.c b/sway/layout.c index b320e8ad..7dbe686a 100644 --- a/sway/layout.c +++ b/sway/layout.c @@ -42,6 +42,10 @@ void arrange_windows(swayc_t *container, int width, int height) { return; case C_VIEW: sway_log(L_DEBUG, "Setting view to %d x %d @ %d, %d", width, height, container->x, container->y); + // If the view is fullscreen, we need to tell wlc to draw it as such + if (wlc_view_get_state(container->handle) & WLC_BIT_FULLSCREEN > 0) { + sway_log(L_DEBUG, "window is fullscreen!"); + } struct wlc_geometry geometry = { .origin = { .x = container->x, diff --git a/sway/log.c b/sway/log.c index 7a88b6d1..f439e3b2 100644 --- a/sway/log.c +++ b/sway/log.c @@ -48,7 +48,8 @@ void sway_log(int verbosity, char* format, ...) { va_end(args); if (colored) { - fprintf(stderr, "\x1B[0m\n"); + fprintf(stderr, "\x1B[0m"); } + fprintf(stderr, "\n"); } }