diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/commands.h | 16 | ||||
-rw-r--r-- | include/config.h | 4 | ||||
-rw-r--r-- | include/container.h | 139 | ||||
-rw-r--r-- | include/stringop.h | 2 | ||||
-rw-r--r-- | include/workspace.h | 16 |
5 files changed, 59 insertions, 118 deletions
diff --git a/include/commands.h b/include/commands.h index 69ab1380..5c87be51 100644 --- a/include/commands.h +++ b/include/commands.h @@ -3,21 +3,19 @@ #include <stdbool.h> #include "config.h" -typedef enum cmd_status { - CMD_SUCCESS, - CMD_FAILURE, - CMD_DEFER, -} sway_cmd(char *criteria, int argc, char **argv); - struct cmd_handler { - const char*command; - sway_cmd *handle; + char *command; + enum cmd_status { + CMD_SUCCESS, + CMD_FAILURE, + CMD_DEFER, + } (*handle)(int argc, char **argv); }; enum cmd_status handle_command(char *command); // Handles commands during config enum cmd_status config_command(char *command); -void remove_view_from_scratchpad(swayc_t *view); +void remove_view_from_scratchpad(); #endif diff --git a/include/config.h b/include/config.h index 04db3e5c..676218c8 100644 --- a/include/config.h +++ b/include/config.h @@ -63,10 +63,6 @@ bool load_config(const char *file); bool read_config(FILE *file, bool is_active); char *do_var_replacement(char *str); -// Find workspace_output from config by workspace or output name -struct workspace_output *wsop_find_workspace(const char *); -struct workspace_output *wsop_find_output(const char *); - extern struct sway_config *config; #endif diff --git a/include/container.h b/include/container.h index b164af95..ae9a9fc5 100644 --- a/include/container.h +++ b/include/container.h @@ -2,25 +2,29 @@ #define _SWAY_CONTAINER_H #include <wlc/wlc.h> typedef struct sway_container swayc_t; + #include "layout.h" -enum swayc_types { - C_ROOT = 1 << 0, - C_OUTPUT = 1 << 1, - C_WORKSPACE = 1 << 2, - C_CONTAINER = 1 << 3, - C_VIEW = 1 << 4, - C_TYPES = 5, +enum swayc_types{ + C_ROOT, + C_OUTPUT, + C_WORKSPACE, + C_CONTAINER, + C_VIEW, + // Keep last + C_TYPES, }; -enum swayc_layouts { - L_NONE = 1 << 0, - L_HORIZ = 1 << 1, - L_VERT = 1 << 2, - L_STACKED = 1 << 3, - L_TABBED = 1 << 4, - L_FLOATING = 1 << 5, - L_LAYOUTS = 6, + +enum swayc_layouts{ + L_NONE, + L_HORIZ, + L_VERT, + L_STACKED, + L_TABBED, + L_FLOATING, + // Keep last + L_LAYOUTS, }; struct sway_container { @@ -31,16 +35,13 @@ struct sway_container { // Not including borders or margins double width, height; - double x, y; // Used for setting floating geometry int desired_width, desired_height; - enum visibility_mask { - INVISIBLE = false, - VISIBLE = true, - } visible; + double x, y; + bool visible; bool is_floating; bool is_focused; @@ -55,120 +56,70 @@ struct sway_container { struct sway_container *focused; }; -// swayc Creation +enum visibility_mask { + VISIBLE = true +} visible; -/* Creates and returns new, or an already created output. - * If it creates a new output, it also creates a workspace using - * `new_workspace(outputname, NULL);` */ -swayc_t *new_output(wlc_handle handle); +// Container Creation -/* Creates workspace with given name, under given output. - * If workspace with that name already exists, returns that workspace - * If name is NULL, it will choose a name automatically. - * If output is NULL, it will choose an output automatically. */ +swayc_t *new_output(wlc_handle handle); swayc_t *new_workspace(swayc_t *output, const char *name); - // Creates container Around child (parent child) -> (parent (container child)) swayc_t *new_container(swayc_t *child, enum swayc_layouts layout); - // Creates view as a sibling of current focused container, or as child of a workspace 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 -// Destroys output and moves workspaces to another output -swayc_t *destroy_output(swayc_t *output); +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 Mapping and testing functions -typedef bool swayc_test_func(swayc_t *view, void *data); -typedef void swayc_map_func(swayc_t *view, void *data); - -// Returns the first swayc that matches test() -swayc_t *swayc_by_test_r(swayc_t *root, swayc_test_func test, void *data); -swayc_t *swayc_by_test(swayc_test_func test, void *data); - -// Calls func for all children. -void swayc_map_r(swayc_t *root, swayc_map_func func, void *data); -void swayc_map(swayc_map_func func, void *data); - - -// Call func on container if test passes -void swayc_map_by_test_r(swayc_t *root, - swayc_map_func func, swayc_test_func test, - void *funcdata, void *testdata); -void swayc_map_by_test( - swayc_map_func func, swayc_test_func test, - void *funcdata, void *testdata); - -// Map functions -swayc_map_func set_gaps; -swayc_map_func add_gaps; - -// Test functions -// generic swayc tests -swayc_test_func test_name; -swayc_test_func test_name_regex; -swayc_test_func test_layout; -swayc_test_func test_type; -swayc_test_func test_visibility; -swayc_test_func test_handle; - -// C_VIEW tests -// See wlc_view_*_bit enums -swayc_test_func test_view_state; -swayc_test_func test_view_type; -swayc_test_func test_view_title; -swayc_test_func test_view_class; -swayc_test_func test_view_appid; -swayc_test_func test_view_title_regex; -swayc_test_func test_view_class_regex; -swayc_test_func test_view_appid_regex; - -// functions for test_*_regex -void *compile_regex(const char *regex); -void free_regex(void *); - -// these take a NULL terminated array of test_list struct. -struct test_list { swayc_test_func *test; void *data ; }; -swayc_test_func test_and; -swayc_test_func test_or; +// Container Lookup +swayc_t *swayc_by_test(swayc_t *container, bool (*test)(swayc_t *view, void *data), void *data); swayc_t *swayc_parent_by_type(swayc_t *container, enum swayc_types); swayc_t *swayc_parent_by_layout(swayc_t *container, enum swayc_layouts); // Follow focused until type/layout swayc_t *swayc_focus_by_type(swayc_t *container, enum swayc_types); swayc_t *swayc_focus_by_layout(swayc_t *container, enum swayc_layouts); + +swayc_t *swayc_by_handle(wlc_handle handle); +swayc_t *swayc_by_name(const char *name); swayc_t *swayc_active_output(void); swayc_t *swayc_active_workspace(void); swayc_t *swayc_active_workspace_for(swayc_t *view); // Container information -// if `parent` is the parent of `child` + +bool swayc_is_fullscreen(swayc_t *view); +bool swayc_is_active(swayc_t *view); +// Is `parent` the parent of `child` bool swayc_is_parent_of(swayc_t *parent, swayc_t *child); -// If `child` is a child of `parent` +// Is `child` a child of `parent` bool swayc_is_child_of(swayc_t *child, swayc_t *parent); // Return gap of specified container int swayc_gap(swayc_t *container); -bool swayc_is_fullscreen(swayc_t *view); -bool swayc_is_active(swayc_t *view); +// Mapping functions + +void container_map(swayc_t *, void (*f)(swayc_t *, void *), void *); +// Mappings +void set_view_visibility(swayc_t *view, void *data); +// Set or add to gaps +void set_gaps(swayc_t *view, void *amount); +void add_gaps(swayc_t *view, void *amount); -// Specialized mapping functions void update_visibility(swayc_t *container); #endif diff --git a/include/stringop.h b/include/stringop.h index 6e80e729..dde50f13 100644 --- a/include/stringop.h +++ b/include/stringop.h @@ -19,7 +19,7 @@ void free_argv(int argc, char **argv); 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(int argc, char **argv); +char *join_args(char **argv, int argc); char *join_list(list_t *list, char *separator); char *strdup(const char *); diff --git a/include/workspace.h b/include/workspace.h index 3a63ea38..7343b055 100644 --- a/include/workspace.h +++ b/include/workspace.h @@ -7,17 +7,13 @@ extern char *prev_workspace_name; -// Search for available workspace name on output from config -const char *workspace_output_open_name(swayc_t *output); -// Search for any available workspace name -const char *workspace_next_name(void); - - +char *workspace_next_name(void); +swayc_t *workspace_create(const char*); swayc_t *workspace_by_name(const char*); void workspace_switch(swayc_t*); -swayc_t *workspace_output_next(void); -swayc_t *workspace_next(void); -swayc_t *workspace_output_prev(void); -swayc_t *workspace_prev(void); +swayc_t *workspace_output_next(); +swayc_t *workspace_next(); +swayc_t *workspace_output_prev(); +swayc_t *workspace_prev(); #endif |