Implement pid->workspace tracking

When you spawn a process with the exec command, sway now notes the
workspace you had focused and the pid of the child process, then assigns
that workspace to the child when its window appears.

Some of this is carried over from sway 0.15, but with some major
refactoring and centralization of state.
This commit is contained in:
Drew DeVault 2018-06-26 20:32:09 -04:00
parent 62a7b762ac
commit acd79e1505
10 changed files with 154 additions and 33 deletions

View file

@ -1,6 +1,5 @@
#ifndef _SWAY_CONFIG_H
#define _SWAY_CONFIG_H
#define PID_WORKSPACE_TIMEOUT 60
#include <libinput.h>
#include <stdint.h>
#include <string.h>
@ -143,12 +142,6 @@ struct workspace_output {
char *workspace;
};
struct pid_workspace {
pid_t *pid;
char *workspace;
time_t *time_added;
};
struct bar_config {
/**
* One of "dock", "hide", "invisible"
@ -300,7 +293,6 @@ struct sway_config {
list_t *bars;
list_t *cmd_queue;
list_t *workspace_outputs;
list_t *pid_workspaces;
list_t *output_configs;
list_t *input_configs;
list_t *seat_configs;
@ -384,9 +376,6 @@ struct sway_config {
} handler_context;
};
void pid_workspace_add(struct pid_workspace *pw);
void free_pid_workspace(struct pid_workspace *pw);
/**
* Loads the main config from the given path. is_active should be true when
* reloading the config.