diff options
Diffstat (limited to 'sway/tree')
| -rw-r--r-- | sway/tree/output.c | 15 | ||||
| -rw-r--r-- | sway/tree/workspace.c | 10 | 
2 files changed, 16 insertions, 9 deletions
| diff --git a/sway/tree/output.c b/sway/tree/output.c index 9d523997..632501e1 100644 --- a/sway/tree/output.c +++ b/sway/tree/output.c @@ -65,7 +65,14 @@ void output_enable(struct sway_output *output, struct output_config *oc) {  		return;  	}  	struct wlr_output *wlr_output = output->wlr_output; +	size_t len = sizeof(output->layers) / sizeof(output->layers[0]); +	for (size_t i = 0; i < len; ++i) { +		wl_list_init(&output->layers[i]); +	} +	wl_signal_init(&output->events.destroy); +  	output->enabled = true; +	apply_output_config(oc, output);  	list_add(root->outputs, output);  	output->lx = wlr_output->lx; @@ -91,14 +98,6 @@ void output_enable(struct sway_output *output, struct output_config *oc) {  		ipc_event_workspace(NULL, ws, "init");  	} -	size_t len = sizeof(output->layers) / sizeof(output->layers[0]); -	for (size_t i = 0; i < len; ++i) { -		wl_list_init(&output->layers[i]); -	} -	wl_signal_init(&output->events.destroy); - -	apply_output_config(oc, output); -  	input_manager_configure_xcursor();  	wl_signal_add(&wlr_output->events.mode, &output->mode); diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index 27e9ac7a..05cda5c0 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -35,6 +35,10 @@ struct sway_output *workspace_get_initial_output(const char *name) {  	struct workspace_config *wsc = workspace_find_config(name);  	if (wsc && wsc->output) {  		struct sway_output *output = output_by_name(wsc->output); +		if (!output) { +			output = output_by_identifier(wsc->output); +		} +		  		if (output) {  			return output;  		} @@ -143,7 +147,11 @@ void workspace_consider_destroy(struct sway_workspace *ws) {  static bool workspace_valid_on_output(const char *output_name,  		const char *ws_name) {  	struct workspace_config *wsc = workspace_find_config(ws_name); -	return !wsc || !wsc->output || strcmp(wsc->output, output_name) == 0; +	char identifier[128]; +	struct sway_output *output = output_by_name(output_name); +	output_get_identifier(identifier, sizeof(identifier), output); +		 +	return !wsc || !wsc->output || strcmp(wsc->output, output_name) == 0 || strcasecmp(identifier, output_name) == 0;  }  static void workspace_name_from_binding(const struct sway_binding * binding, | 
