From faccaf6112d923533512e1dd868ec4bf0d30e1b5 Mon Sep 17 00:00:00 2001 From: minus Date: Tue, 18 Aug 2015 23:38:34 +0200 Subject: added sway_assert function returns false on a failed assertion in release mode and raises SIGABRT in debug mode --- include/log.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/log.h b/include/log.h index d35b2a54..44f84940 100644 --- a/include/log.h +++ b/include/log.h @@ -1,5 +1,6 @@ #ifndef _SWAY_LOG_H #define _SWAY_LOG_H +#include typedef enum { L_SILENT = 0, @@ -10,7 +11,8 @@ typedef enum { void init_log(int verbosity); void sway_log_colors(int mode); -void sway_log(int verbosity, char* format, ...) __attribute__((format(printf,2,3))); -void sway_abort(char* format, ...)__attribute__((format(printf,1,2))); +void sway_log(int verbosity, const char* format, ...) __attribute__((format(printf,2,3))); +void sway_abort(const char* format, ...) __attribute__((format(printf,1,2))); +bool sway_assert(bool condition, const char* format, ...) __attribute__((format(printf,2,3))); #endif -- cgit v1.2.3 From 4c688cba4e3528921656d63a09f7015cae13cd0c Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Tue, 18 Aug 2015 23:53:57 +0200 Subject: Add support for gaps option --- include/config.h | 3 +++ include/container.h | 2 ++ 2 files changed, 5 insertions(+) (limited to 'include') diff --git a/include/config.h b/include/config.h index 9243bf35..c47eb683 100644 --- a/include/config.h +++ b/include/config.h @@ -41,6 +41,9 @@ struct sway_config { bool active; bool failed; bool reloading; + + int gaps_inner; + int gaps_outer; }; bool load_config(void); diff --git a/include/container.h b/include/container.h index 186ee8b6..6d64b490 100644 --- a/include/container.h +++ b/include/container.h @@ -48,6 +48,8 @@ struct sway_container { char *name; + int gaps; + list_t *children; list_t *floating; -- cgit v1.2.3 From 3c430688a8ffd35dc88ff23c4cb7a066a89fbd3f Mon Sep 17 00:00:00 2001 From: Luminarys Date: Tue, 18 Aug 2015 21:06:41 -0500 Subject: header update --- include/container.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/container.h b/include/container.h index 6d64b490..76ddec7e 100644 --- a/include/container.h +++ b/include/container.h @@ -79,5 +79,6 @@ void container_map(swayc_t *, void (*f)(swayc_t *, void *), void *); // Mappings void set_view_visibility(swayc_t *view, void *data); +void reset_gaps(swayc_t *view, void *data); #endif -- cgit v1.2.3 From e16a4015ff216594eeb237ef81534bfaea7533d6 Mon Sep 17 00:00:00 2001 From: taiyu Date: Wed, 19 Aug 2015 00:28:53 -0700 Subject: fixed focus key handler --- include/layout.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/layout.h b/include/layout.h index 282f92ee..98fdb531 100644 --- a/include/layout.h +++ b/include/layout.h @@ -10,6 +10,7 @@ extern swayc_t root_container; void init_layout(void); void add_child(swayc_t *parent, swayc_t *child); +void add_floating(swayc_t *ws, swayc_t *child); // Returns parent container which needs to be rearranged. swayc_t *add_sibling(swayc_t *sibling, swayc_t *child); swayc_t *replace_child(swayc_t *child, swayc_t *new_child); -- cgit v1.2.3 From c5a69828934bf07db9062bd5f24bb2ff94b45b4a Mon Sep 17 00:00:00 2001 From: taiyu Date: Wed, 19 Aug 2015 01:06:15 -0700 Subject: fixed some more bugs, moved layout_log into log.ch, restored focus_parent --- include/log.h | 2 ++ include/workspace.h | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/log.h b/include/log.h index 44f84940..7aea2ded 100644 --- a/include/log.h +++ b/include/log.h @@ -1,6 +1,7 @@ #ifndef _SWAY_LOG_H #define _SWAY_LOG_H #include +#include "container.h" typedef enum { L_SILENT = 0, @@ -15,4 +16,5 @@ void sway_log(int verbosity, const char* format, ...) __attribute__((format(prin void sway_abort(const char* format, ...) __attribute__((format(printf,1,2))); bool sway_assert(bool condition, const char* format, ...) __attribute__((format(printf,2,3))); +void layout_log(const swayc_t *c, int depth); #endif diff --git a/include/workspace.h b/include/workspace.h index 8ce39bbd..042a15d9 100644 --- a/include/workspace.h +++ b/include/workspace.h @@ -15,6 +15,5 @@ void workspace_output_next(); void workspace_next(); void workspace_output_prev(); void workspace_prev(); -void layout_log(const swayc_t *c, int depth); #endif -- cgit v1.2.3 From 470b4dfbae146d83c0061b39534c16b5aad90f1c Mon Sep 17 00:00:00 2001 From: taiyu Date: Wed, 19 Aug 2015 18:59:27 -0700 Subject: key_state.ch, and command conflicts resolved --- include/key_state.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 include/key_state.h (limited to 'include') diff --git a/include/key_state.h b/include/key_state.h new file mode 100644 index 00000000..a8fa8d5e --- /dev/null +++ b/include/key_state.h @@ -0,0 +1,18 @@ +#ifndef _SWAY_KEY_STATE_H +#define _SWAY_KEY_STATE_H +#include +#include + +typedef uint32_t keycode; + +// returns true if key has been pressed, otherwise false +bool check_key(keycode key); + +// sets a key as pressed +void press_key(keycode key); + +// unsets a key as pressed +void release_key(keycode key); + +#endif + -- cgit v1.2.3 From 5ff0619ca1cab044004df044c253c9170b8316c3 Mon Sep 17 00:00:00 2001 From: taiyu Date: Wed, 19 Aug 2015 20:22:15 -0700 Subject: input state, find_container_in_direction --- include/focus.h | 4 ++-- include/input_state.h | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ include/key_state.h | 18 ------------------ include/layout.h | 2 ++ 4 files changed, 53 insertions(+), 20 deletions(-) create mode 100644 include/input_state.h delete mode 100644 include/key_state.h (limited to 'include') diff --git a/include/focus.h b/include/focus.h index 410ed134..383993fa 100644 --- a/include/focus.h +++ b/include/focus.h @@ -1,7 +1,5 @@ #ifndef _SWAY_FOCUS_H #define _SWAY_FOCUS_H -#include "container.h" - enum movement_direction { MOVE_LEFT, MOVE_RIGHT, @@ -10,6 +8,8 @@ enum movement_direction { MOVE_PARENT }; +#include "container.h" + // focused_container - the container found by following the `focused` pointer // from a given container to a container with `is_focused` boolean set // --- diff --git a/include/input_state.h b/include/input_state.h new file mode 100644 index 00000000..782b4b19 --- /dev/null +++ b/include/input_state.h @@ -0,0 +1,49 @@ +#ifndef _SWAY_KEY_STATE_H +#define _SWAY_KEY_STATE_H +#include +#include +#include "container.h" + +/* Keyboard state */ + +typedef uint32_t keycode; + +// returns true if key has been pressed, otherwise false +bool check_key(keycode key); + +// sets a key as pressed +void press_key(keycode key); + +// unsets a key as pressed +void release_key(keycode key); + +/* Pointer state */ + +enum pointer_values { + M_LEFT_CLICK = 272, + M_RIGHT_CLICK = 273, + M_SCROLL_CLICK = 274, + M_SCROLL_UP = 275, + M_SCROLL_DOWN = 276, +}; + +extern struct pointer_state { + bool l_held; + bool r_held; + struct pointer_floating { + bool drag; + bool resize; + } floating; + struct pointer_lock { + bool left; + bool right; + bool top; + bool bottom; + } lock; +} pointer_state; + +void start_floating(swayc_t *view); +void reset_floating(swayc_t *view); + +#endif + diff --git a/include/key_state.h b/include/key_state.h deleted file mode 100644 index a8fa8d5e..00000000 --- a/include/key_state.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _SWAY_KEY_STATE_H -#define _SWAY_KEY_STATE_H -#include -#include - -typedef uint32_t keycode; - -// returns true if key has been pressed, otherwise false -bool check_key(keycode key); - -// sets a key as pressed -void press_key(keycode key); - -// unsets a key as pressed -void release_key(keycode key); - -#endif - diff --git a/include/layout.h b/include/layout.h index 98fdb531..75e72d2f 100644 --- a/include/layout.h +++ b/include/layout.h @@ -4,6 +4,7 @@ #include #include "list.h" #include "container.h" +#include "focus.h" extern swayc_t root_container; @@ -26,5 +27,6 @@ void focus_view_for(swayc_t *ancestor, swayc_t *container); swayc_t *get_focused_container(swayc_t *parent); swayc_t *get_swayc_for_handle(wlc_handle handle, swayc_t *parent); +swayc_t *get_swayc_in_direction(swayc_t *container, enum movement_direction dir); #endif -- cgit v1.2.3 From fbaa9111a8525daeef8a5534784da2f793917a36 Mon Sep 17 00:00:00 2001 From: taiyu Date: Thu, 20 Aug 2015 04:47:36 -0700 Subject: setup for resizable windows, drop weight --- include/container.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'include') diff --git a/include/container.h b/include/container.h index 76ddec7e..4f1877e3 100644 --- a/include/container.h +++ b/include/container.h @@ -44,8 +44,6 @@ struct sway_container { bool is_floating; bool is_focused; - int weight; - char *name; int gaps; -- cgit v1.2.3 From f5fde7c45c04b02406eabc34cbb4248189c6a26e Mon Sep 17 00:00:00 2001 From: taiyu Date: Thu, 20 Aug 2015 05:06:22 -0700 Subject: style --- include/container.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/container.h b/include/container.h index 4f1877e3..bd92058d 100644 --- a/include/container.h +++ b/include/container.h @@ -11,7 +11,7 @@ enum swayc_types{ C_WORKSPACE, C_CONTAINER, C_VIEW, - //Keep last + // Keep last C_TYPES, }; @@ -22,7 +22,7 @@ enum swayc_layouts{ L_STACKED, L_TABBED, L_FLOATING, - //Keep last + // Keep last L_LAYOUTS, }; -- cgit v1.2.3 From 579fe70ed92ce65d5a761ebdbb6c458b5f919687 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Thu, 20 Aug 2015 08:37:09 -0400 Subject: Add command line parsing Closes #6 --- include/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/config.h b/include/config.h index c47eb683..c23c3509 100644 --- a/include/config.h +++ b/include/config.h @@ -46,7 +46,7 @@ struct sway_config { int gaps_outer; }; -bool load_config(void); +bool load_config(const char *file); bool read_config(FILE *file, bool is_active); char *do_var_replacement(struct sway_config *config, char *str); -- cgit v1.2.3 From 8981b48cd2cdd0a59c1546f2816587b303538d77 Mon Sep 17 00:00:00 2001 From: minus Date: Sun, 16 Aug 2015 20:24:18 +0200 Subject: very basic IPC implementation simply executes the received data as command --- include/ipc.h | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 include/ipc.h (limited to 'include') diff --git a/include/ipc.h b/include/ipc.h new file mode 100644 index 00000000..aab9cf0c --- /dev/null +++ b/include/ipc.h @@ -0,0 +1,6 @@ +#ifndef _SWAY_IPC_H +#define _SWAY_IPC_H + +void init_ipc(void); + +#endif -- cgit v1.2.3 From 5d99215469088790d9b07a2932fd266133c8dc0b Mon Sep 17 00:00:00 2001 From: minus Date: Sun, 16 Aug 2015 22:02:16 +0200 Subject: added i3-ipc support/parsing --- include/ipc.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'include') diff --git a/include/ipc.h b/include/ipc.h index aab9cf0c..25d2fc61 100644 --- a/include/ipc.h +++ b/include/ipc.h @@ -1,6 +1,17 @@ #ifndef _SWAY_IPC_H #define _SWAY_IPC_H +enum ipc_command_type { + IPC_COMMAND = 0, + IPC_GET_WORKSPACES = 1, + IPC_SUBSCRIBE = 2, + IPC_GET_OUTPUTS = 3, + IPC_GET_TREE = 4, + IPC_GET_MARKS = 5, + IPC_GET_BAR_CONFIG = 6, + IPC_GET_VERSION = 7, +}; + void init_ipc(void); #endif -- cgit v1.2.3 From 773e85c681ee4faecf353de7066b536f1a50ff61 Mon Sep 17 00:00:00 2001 From: minus Date: Wed, 19 Aug 2015 01:35:01 +0200 Subject: properly handle IPC clients --- include/log.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/log.h b/include/log.h index 7aea2ded..47a83321 100644 --- a/include/log.h +++ b/include/log.h @@ -13,6 +13,7 @@ typedef enum { void init_log(int verbosity); void sway_log_colors(int mode); void sway_log(int verbosity, const char* format, ...) __attribute__((format(printf,2,3))); +void sway_log_errno(int verbosity, char* format, ...) __attribute__((format(printf,2,3))); void sway_abort(const char* format, ...) __attribute__((format(printf,1,2))); bool sway_assert(bool condition, const char* format, ...) __attribute__((format(printf,2,3))); -- cgit v1.2.3 From 91c08772645e2162015c3acf8a8ae7187502adb4 Mon Sep 17 00:00:00 2001 From: minus Date: Wed, 19 Aug 2015 01:52:46 +0200 Subject: properly exit sway - wlc_terminate() instead of exit(0) - unlink IPC socket --- include/ipc.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/ipc.h b/include/ipc.h index 25d2fc61..606c47ba 100644 --- a/include/ipc.h +++ b/include/ipc.h @@ -12,6 +12,7 @@ enum ipc_command_type { IPC_GET_VERSION = 7, }; -void init_ipc(void); +void ipc_init(void); +void ipc_shutdown(void); #endif -- cgit v1.2.3 From f26ed32e460f3007e623c529d28562f4a0b261cd Mon Sep 17 00:00:00 2001 From: minus Date: Thu, 20 Aug 2015 15:12:34 +0200 Subject: added sway_terminate to exit cleanly --- include/ipc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/ipc.h b/include/ipc.h index 606c47ba..0b6441f6 100644 --- a/include/ipc.h +++ b/include/ipc.h @@ -13,6 +13,6 @@ enum ipc_command_type { }; void ipc_init(void); -void ipc_shutdown(void); +void ipc_terminate(void); #endif -- cgit v1.2.3 From f8787ce69e35be4569aa76a2e35f540b20ed40a4 Mon Sep 17 00:00:00 2001 From: minus Date: Thu, 20 Aug 2015 15:23:52 +0200 Subject: added missing header file --- include/sway.h | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 include/sway.h (limited to 'include') diff --git a/include/sway.h b/include/sway.h new file mode 100644 index 00000000..6499c81d --- /dev/null +++ b/include/sway.h @@ -0,0 +1,6 @@ +#ifndef _SWAY_SWAY_H +#define _SWAY_SWAY_H + +void sway_terminate(void); + +#endif -- cgit v1.2.3 From 36e07e9ebc55b3fc8a8b8cd76ee743202691ad56 Mon Sep 17 00:00:00 2001 From: taiyu Date: Thu, 20 Aug 2015 09:52:54 -0700 Subject: find_parent_by_type --- include/container.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'include') diff --git a/include/container.h b/include/container.h index bd92058d..fd621490 100644 --- a/include/container.h +++ b/include/container.h @@ -55,6 +55,7 @@ struct sway_container { struct sway_container *focused; }; +// Container Creation swayc_t *new_output(wlc_handle handle); swayc_t *new_workspace(swayc_t *output, const char *name); @@ -65,13 +66,23 @@ swayc_t *new_view(swayc_t *sibling, wlc_handle handle); // Creates view as a new floating view which is in the active workspace swayc_t *new_floating_view(wlc_handle handle); +// Container Destroying swayc_t *destroy_output(swayc_t *output); // Destroys workspace if empty and returns parent pointer, else returns NULL swayc_t *destroy_workspace(swayc_t *workspace); +// Destroyes container and all parent container if they are empty, returns +// topmost non-empty parent. returns NULL otherwise swayc_t *destroy_container(swayc_t *container); +// Destroys view and all empty parent containers. return topmost non-empty +// parent swayc_t *destroy_view(swayc_t *view); +// Container Lookup + +swayc_t *swayc_parent_by_type(swayc_t *container, enum swayc_types); +swayc_t *swayc_parent_by_layout(swayc_t *container, enum swayc_layouts); + swayc_t *find_container(swayc_t *container, bool (*test)(swayc_t *view, void *data), void *data); void container_map(swayc_t *, void (*f)(swayc_t *, void *), void *); -- cgit v1.2.3 From 754793aad4c0f0b93e30804c70807e9984741ae0 Mon Sep 17 00:00:00 2001 From: minus Date: Thu, 20 Aug 2015 21:08:13 +0200 Subject: added IPC messages get_workspaces and get_outputs No escaping on container names is done yet, as well as some values are hardcoded because they don't exist yet. --- include/stringop.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/stringop.h b/include/stringop.h index a5346829..4300f9ed 100644 --- a/include/stringop.h +++ b/include/stringop.h @@ -10,5 +10,6 @@ char *code_strchr(const char *string, char delimiter); char *code_strstr(const char *haystack, const char *needle); int unescape_string(char *string); char *join_args(char **argv, int argc); +char *join_list(list_t *list, char *separator); #endif -- cgit v1.2.3