From e67118c80ad411ac46b7096aae2635510c80ea6d Mon Sep 17 00:00:00 2001 From: Jonny Lamb Date: Tue, 12 Aug 2014 15:07:51 +0200 Subject: desktop-shell: add option to avoid creating the panel This option is so we can disable showing any panel at all. The default is to continue showing the panel and no example is added to weston.ini because it's an uncommon request. Tested-by: Pekka Paalanen --- --- a/clients/desktop-shell.c 2015-11-05 11:51:26.272052133 +0000 +++ b/clients/desktop-shell.c 2015-11-05 11:56:19.666887702 +0000 @@ -1130,7 +1130,8 @@ output_destroy(struct output *output) { background_destroy(output->background); - panel_destroy(output->panel); + if (output->panel) + panel_destroy(output->panel); wl_output_destroy(output->output); wl_list_remove(&output->link); @@ -1160,7 +1161,8 @@ { struct output *output = data; - window_set_buffer_transform(output->panel->window, transform); + if (output->panel) + window_set_buffer_transform(output->panel->window, transform); window_set_buffer_transform(output->background->window, transform); } @@ -1187,7 +1189,8 @@ { struct output *output = data; - window_set_buffer_scale(output->panel->window, scale); + if (output->panel) + window_set_buffer_scale(output->panel->window, scale); window_set_buffer_scale(output->background->window, scale); } @@ -1198,15 +1201,36 @@ output_handle_scale }; +static int +want_panel(struct desktop *desktop) +{ + struct weston_config_section *s; + char *location = NULL; + int ret = 1; + + s = weston_config_get_section(desktop->config, "shell", NULL, NULL); + weston_config_section_get_string(s, "panel-location", + &location, "top"); + + if (strcmp(location, "top") != 0) + ret = 0; + + free(location); + + return ret; +} + static void output_init(struct output *output, struct desktop *desktop) { struct wl_surface *surface; - output->panel = panel_create(desktop); - surface = window_get_wl_surface(output->panel->window); - desktop_shell_set_panel(desktop->shell, - output->output, surface); + if (want_panel(desktop)) { + output->panel = panel_create(desktop); + surface = window_get_wl_surface(output->panel->window); + desktop_shell_set_panel(desktop->shell, + output->output, surface); + } output->background = background_create(desktop); surface = window_get_wl_surface(output->background->window); --- a/man/weston.ini.man 2015-11-05 11:56:36.763111313 +0000 +++ b/man/weston.ini.man 2015-11-05 12:06:57.097226512 +0000 @@ -186,6 +186,11 @@ .fi .RE .TP 7 +.BI "panel-location=" top +sets the location of the panel (string). Can be +.B top, +.B none. +.TP 7 .BI "locking=" true enables screen locking (boolean). .TP 7