mirror of
https://github.com/swaywm/sway.git
synced 2024-11-27 02:11:28 +00:00
Merge pull request #156 from Luminarys/master
Added in workspace_auto_back_and_forth
This commit is contained in:
commit
4d9b05e649
|
@ -52,6 +52,7 @@ struct sway_config {
|
||||||
bool active;
|
bool active;
|
||||||
bool failed;
|
bool failed;
|
||||||
bool reloading;
|
bool reloading;
|
||||||
|
bool auto_back_and_forth;
|
||||||
|
|
||||||
int gaps_inner;
|
int gaps_inner;
|
||||||
int gaps_outer;
|
int gaps_outer;
|
||||||
|
|
|
@ -852,6 +852,16 @@ static bool cmd_workspace(struct sway_config *config, int argc, char **argv) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool cmd_ws_auto_back_and_forth(struct sway_config *config, int argc, char **argv) {
|
||||||
|
if (!checkarg(argc, "workspace_auto_back_and_forth", EXPECTED_EQUAL_TO, 1)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (strcasecmp(argv[0], "yes") == 0) {
|
||||||
|
config->auto_back_and_forth = true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* Keep alphabetized */
|
/* Keep alphabetized */
|
||||||
static struct cmd_handler handlers[] = {
|
static struct cmd_handler handlers[] = {
|
||||||
{ "bindsym", cmd_bindsym },
|
{ "bindsym", cmd_bindsym },
|
||||||
|
@ -877,7 +887,8 @@ static struct cmd_handler handlers[] = {
|
||||||
{ "split", cmd_split },
|
{ "split", cmd_split },
|
||||||
{ "splith", cmd_splith },
|
{ "splith", cmd_splith },
|
||||||
{ "splitv", cmd_splitv },
|
{ "splitv", cmd_splitv },
|
||||||
{ "workspace", cmd_workspace }
|
{ "workspace", cmd_workspace },
|
||||||
|
{ "workspace_auto_back_and_forth", cmd_ws_auto_back_and_forth }
|
||||||
};
|
};
|
||||||
|
|
||||||
static char **split_directive(char *line, int *argc) {
|
static char **split_directive(char *line, int *argc) {
|
||||||
|
|
|
@ -36,6 +36,7 @@ void config_defaults(struct sway_config *config) {
|
||||||
config->reloading = false;
|
config->reloading = false;
|
||||||
config->active = false;
|
config->active = false;
|
||||||
config->failed = false;
|
config->failed = false;
|
||||||
|
config->auto_back_and_forth = false;
|
||||||
|
|
||||||
config->gaps_inner = 0;
|
config->gaps_inner = 0;
|
||||||
config->gaps_outer = 0;
|
config->gaps_outer = 0;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include "focus.h"
|
#include "focus.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
char *prev_workspace_name;
|
char *prev_workspace_name = "";
|
||||||
|
|
||||||
char *workspace_next_name(void) {
|
char *workspace_next_name(void) {
|
||||||
sway_log(L_DEBUG, "Workspace: Generating new name");
|
sway_log(L_DEBUG, "Workspace: Generating new name");
|
||||||
|
@ -182,7 +182,11 @@ void workspace_switch(swayc_t *workspace) {
|
||||||
if (!workspace) {
|
if (!workspace) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!prev_workspace_name || strcmp(prev_workspace_name, swayc_active_workspace()->name) != 0) {
|
if (strcmp(prev_workspace_name, swayc_active_workspace()->name) != 0 && swayc_active_workspace() != workspace) {
|
||||||
|
prev_workspace_name = malloc(strlen(swayc_active_workspace()->name) + 1);
|
||||||
|
strcpy(prev_workspace_name, swayc_active_workspace()->name);
|
||||||
|
} else if (config->auto_back_and_forth && swayc_active_workspace() == workspace && strlen(prev_workspace_name) != 0) {
|
||||||
|
workspace = workspace_by_name(prev_workspace_name) ? workspace_by_name(prev_workspace_name) : workspace_create(prev_workspace_name);
|
||||||
prev_workspace_name = malloc(strlen(swayc_active_workspace()->name) + 1);
|
prev_workspace_name = malloc(strlen(swayc_active_workspace()->name) + 1);
|
||||||
strcpy(prev_workspace_name, swayc_active_workspace()->name);
|
strcpy(prev_workspace_name, swayc_active_workspace()->name);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue