mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Merge pull request #3000 from Robinhuett/workspace_address_output_by_name
Use output identifier for workspace config
This commit is contained in:
		
						commit
						e3a0e3322b
					
				
					 3 changed files with 24 additions and 1 deletions
				
			
		| 
						 | 
					@ -86,6 +86,8 @@ void output_damage_whole_container(struct sway_output *output,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct sway_output *output_by_name(const char *name);
 | 
					struct sway_output *output_by_name(const char *name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct sway_output *output_by_identifier(const char *identifier);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void output_sort_workspaces(struct sway_output *output);
 | 
					void output_sort_workspaces(struct sway_output *output);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct output_config *output_find_config(struct sway_output *output);
 | 
					struct output_config *output_find_config(struct sway_output *output);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,6 +39,19 @@ struct sway_output *output_by_name(const char *name) {
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct sway_output *output_by_identifier(const char *identifier) {
 | 
				
			||||||
 | 
						for (int i = 0; i < root->outputs->length; ++i) {
 | 
				
			||||||
 | 
							struct sway_output *output = root->outputs->items[i];
 | 
				
			||||||
 | 
							char output_identifier[128];
 | 
				
			||||||
 | 
							snprintf(output_identifier, sizeof(output_identifier), "%s %s %s", output->wlr_output->make,
 | 
				
			||||||
 | 
								output->wlr_output->model, output->wlr_output->serial);
 | 
				
			||||||
 | 
							if (strcasecmp(output_identifier, identifier) == 0) {
 | 
				
			||||||
 | 
								return output;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Rotate a child's position relative to a parent. The parent size is (pw, ph),
 | 
					 * Rotate a child's position relative to a parent. The parent size is (pw, ph),
 | 
				
			||||||
 * the child position is (*sx, *sy) and its size is (sw, sh).
 | 
					 * the child position is (*sx, *sy) and its size is (sw, sh).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,10 @@ struct sway_output *workspace_get_initial_output(const char *name) {
 | 
				
			||||||
	struct workspace_config *wsc = workspace_find_config(name);
 | 
						struct workspace_config *wsc = workspace_find_config(name);
 | 
				
			||||||
	if (wsc && wsc->output) {
 | 
						if (wsc && wsc->output) {
 | 
				
			||||||
		struct sway_output *output = output_by_name(wsc->output);
 | 
							struct sway_output *output = output_by_name(wsc->output);
 | 
				
			||||||
 | 
							if (!output) {
 | 
				
			||||||
 | 
								output = output_by_identifier(wsc->output);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		if (output) {
 | 
							if (output) {
 | 
				
			||||||
			return 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,
 | 
					static bool workspace_valid_on_output(const char *output_name,
 | 
				
			||||||
		const char *ws_name) {
 | 
							const char *ws_name) {
 | 
				
			||||||
	struct workspace_config *wsc = workspace_find_config(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,
 | 
					static void workspace_name_from_binding(const struct sway_binding * binding,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue