aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-06-26 20:32:09 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2018-07-01 09:58:18 -0400
commitacd79e1505c06089e4fb9fb6c0c6e1d351ba9176 (patch)
tree9f677ebac9604075e3138788fb72d6db423e1f17 /include
parentMerge pull request #2180 from martinetd/xdg_fullscreen (diff)
downloadsway-acd79e1505c06089e4fb9fb6c0c6e1d351ba9176.tar.gz
sway-acd79e1505c06089e4fb9fb6c0c6e1d351ba9176.tar.zst
sway-acd79e1505c06089e4fb9fb6c0c6e1d351ba9176.zip
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.
Diffstat (limited to 'include')
-rw-r--r--include/sway/config.h11
-rw-r--r--include/sway/tree/workspace.h5
2 files changed, 5 insertions, 11 deletions
diff --git a/include/sway/config.h b/include/sway/config.h
index e75b0664..9b583323 100644
--- a/include/sway/config.h
+++ b/include/sway/config.h
@@ -1,6 +1,5 @@
1#ifndef _SWAY_CONFIG_H 1#ifndef _SWAY_CONFIG_H
2#define _SWAY_CONFIG_H 2#define _SWAY_CONFIG_H
3#define PID_WORKSPACE_TIMEOUT 60
4#include <libinput.h> 3#include <libinput.h>
5#include <stdint.h> 4#include <stdint.h>
6#include <string.h> 5#include <string.h>
@@ -143,12 +142,6 @@ struct workspace_output {
143 char *workspace; 142 char *workspace;
144}; 143};
145 144
146struct pid_workspace {
147 pid_t *pid;
148 char *workspace;
149 time_t *time_added;
150};
151
152struct bar_config { 145struct bar_config {
153 /** 146 /**
154 * One of "dock", "hide", "invisible" 147 * One of "dock", "hide", "invisible"
@@ -300,7 +293,6 @@ struct sway_config {
300 list_t *bars; 293 list_t *bars;
301 list_t *cmd_queue; 294 list_t *cmd_queue;
302 list_t *workspace_outputs; 295 list_t *workspace_outputs;
303 list_t *pid_workspaces;
304 list_t *output_configs; 296 list_t *output_configs;
305 list_t *input_configs; 297 list_t *input_configs;
306 list_t *seat_configs; 298 list_t *seat_configs;
@@ -384,9 +376,6 @@ struct sway_config {
384 } handler_context; 376 } handler_context;
385}; 377};
386 378
387void pid_workspace_add(struct pid_workspace *pw);
388void free_pid_workspace(struct pid_workspace *pw);
389
390/** 379/**
391 * Loads the main config from the given path. is_active should be true when 380 * Loads the main config from the given path. is_active should be true when
392 * reloading the config. 381 * reloading the config.
diff --git a/include/sway/tree/workspace.h b/include/sway/tree/workspace.h
index c72a4ac0..d84e4a02 100644
--- a/include/sway/tree/workspace.h
+++ b/include/sway/tree/workspace.h
@@ -42,4 +42,9 @@ void workspace_output_add_priority(struct sway_container *workspace,
42 42
43struct sway_container *workspace_output_get_highest_available( 43struct sway_container *workspace_output_get_highest_available(
44 struct sway_container *ws, struct sway_container *exclude); 44 struct sway_container *ws, struct sway_container *exclude);
45
46struct sway_container *workspace_for_pid(pid_t pid);
47
48void workspace_record_pid(pid_t pid);
49
45#endif 50#endif