|
|
|
@ -134,32 +134,39 @@ swayc_t *new_output(wlc_handle handle) {
|
|
|
|
|
|
|
|
|
|
// Create workspace
|
|
|
|
|
char *ws_name = NULL;
|
|
|
|
|
swayc_t *ws = NULL;
|
|
|
|
|
|
|
|
|
|
if (name) {
|
|
|
|
|
for (i = 0; i < config->workspace_outputs->length; ++i) {
|
|
|
|
|
struct workspace_output *wso = config->workspace_outputs->items[i];
|
|
|
|
|
if (strcasecmp(wso->output, name) == 0) {
|
|
|
|
|
sway_log(L_DEBUG, "Matched workspace to output: %s for %s", wso->workspace, wso->output);
|
|
|
|
|
// Check if any other workspaces are using this name
|
|
|
|
|
if (workspace_by_name(wso->workspace)) {
|
|
|
|
|
sway_log(L_DEBUG, "But it's already taken");
|
|
|
|
|
break;
|
|
|
|
|
if ((ws = workspace_by_name(wso->workspace))) {
|
|
|
|
|
// if yes, move those to this output, because they should be here
|
|
|
|
|
move_workspace_to(ws, output);
|
|
|
|
|
} else if (!ws_name) {
|
|
|
|
|
// set a workspace name in case we need to create a default one
|
|
|
|
|
ws_name = strdup(wso->workspace);
|
|
|
|
|
}
|
|
|
|
|
sway_log(L_DEBUG, "So we're going to use it");
|
|
|
|
|
ws_name = strdup(wso->workspace);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!ws_name) {
|
|
|
|
|
ws_name = workspace_next_name(output->name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// create and initialize default workspace
|
|
|
|
|
swayc_t *ws = new_workspace(output, ws_name);
|
|
|
|
|
ws->is_focused = true;
|
|
|
|
|
if (output->children->length == 0) {
|
|
|
|
|
if (!ws_name) {
|
|
|
|
|
ws_name = workspace_next_name(output->name);
|
|
|
|
|
}
|
|
|
|
|
// create and initialize default workspace
|
|
|
|
|
sway_log(L_DEBUG, "Creating default workspace %s", ws_name);
|
|
|
|
|
ws = new_workspace(output, ws_name);
|
|
|
|
|
ws->is_focused = true;
|
|
|
|
|
} else {
|
|
|
|
|
sort_workspaces(output);
|
|
|
|
|
set_focused_container(output->children->items[0]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
free(ws_name);
|
|
|
|
|
|
|
|
|
|
return output;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|