Age | Commit message (Collapse) | Author | |
---|---|---|---|
2018-10-13 | fix_edge_gaps: Allow negative values for outer gaps. | Tarmack | |
While allowing negative values for the outer gaps it is still prevented that negative values move windows out of the container. This replaces the non-i3 option for edge_gaps. | |||
2018-09-29 | Make gaps implementation consistent with i3-gaps | Ryan Dwyer | |
This changes our gaps implementation to behave like i3-gaps. Our previous implementation allowed you to set gaps on a per container basis. This isn't supported by i3-gaps and doesn't seem to have a practical use case. The gaps_outer and gaps_inner properties on containers are now removed as they just read the gaps_inner from the workspace. `gaps inner|outer <px>` no longer changes the gaps for all workspaces. It only sets defaults for new workspaces. `gaps inner|outer current|workspace|all set|plus|minus <px>` is now runtime only, and the workspace option is now removed. `current` now sets gaps for the current workspace as opposed to the current container. `workspace <ws> gaps inner|outer <px>` is now implemented. This sets defaults for a workspace. This also fixes a bug where changing the layout of a split container from linear to tabbed would cause gaps to not be applied to it until you switch to another workspace and back. | |||
2018-09-28 | Rename workspace_outputs to workspace_configs and fix memory leak | Ryan Dwyer | |
When we eventually implement `workspace <ws> gaps inner|outer <px>`, we'll need to store the gaps settings for workspaces before they're created. Rather than create a workspace_gaps struct, the approach I'm taking is to rename workspace_outputs to workspace_configs and then add gaps settings to that. I've added a lookup function workspace_find_config. Note that we have a similar thing for outputs (output_config struct and output_find_config). Lastly, when freeing config it would create a memory leak by freeing the list items but not the workspace or output names inside them. This has been rectified using a free_workspace_config function. | |||
2018-09-05 | Implement type safe arguments and demote sway_container | Ryan Dwyer | |
This commit changes the meaning of sway_container so that it only refers to layout containers and view containers. Workspaces, outputs and the root are no longer known as containers. Instead, root, outputs, workspaces and containers are all a type of node, and containers come in two types: layout containers and view containers. In addition to the above, this implements type safe variables. This means we use specific types such as sway_output and sway_workspace instead of generic containers or nodes. However, it's worth noting that in a few places places (eg. seat focus and transactions) referring to them in a generic way is unavoidable which is why we still use nodes in some places. If you want a TL;DR, look at node.h, as well as the struct definitions for root, output, workspace and container. Note that sway_output now contains a workspaces list, and workspaces now contain a tiling and floating list, and containers now contain a pointer back to the workspace. There are now functions for seat_get_focused_workspace and seat_get_focused_container. The latter will return NULL if a workspace itself is focused. Most other seat functions like seat_get_focus and seat_set_focus now accept and return nodes. In the config->handler_context struct, current_container has been replaced with three pointers: node, container and workspace. node is the same as what current_container was, while workspace is the workspace that the node resides on and container is the actual container, which may be NULL if a workspace itself is focused. The global root_container variable has been replaced with one simply called root, which is a pointer to the sway_root instance. The way outputs are created, enabled, disabled and destroyed has changed. Previously we'd wrap the sway_output in a container when it is enabled, but as we don't have containers any more it needs a different approach. The output_create and output_destroy functions previously created/destroyed the container, but now they create/destroy the sway_output. There is a new function output_disable to disable an output without destroying it. Containers have a new view property. If this is populated then the container is a view container, otherwise it's a layout container. Like before, this property is immutable for the life of the container. Containers have both a `sway_container *parent` and `sway_workspace *workspace`. As we use specific types now, parent cannot point to a workspace so it'll be NULL for containers which are direct children of the workspace. The workspace property is set for all containers, except those which are hidden in the scratchpad as they have no workspace. In some cases we need to refer to workspaces in a container-like way. For example, workspaces have layout and children, but when using specific types this makes it difficult. Likewise, it's difficult for a container to get its parent's layout when the parent could be another container or a workspace. To make it easier, some helper functions have been created: container_parent_layout and container_get_siblings. container_remove_child has been renamed to container_detach and container_replace_child has been renamed to container_replace. `container_handle_fullscreen_reparent(con, old_parent)` has had the old_parent removed. We now unfullscreen the workspace when detaching the container, so this function is simplified and only needs one argument now. container_notify_subtree_changed has been renamed to container_update_representation. This is more descriptive of its purpose. I also wanted to be able to call it with whatever container was changed rather than the container's parent, which makes bubbling up to the workspace easier. There are now state structs per node thing. ie. sway_output_state, sway_workspace_state and sway_container_state. The focus, move and layout commands have been completely refactored to work with the specific types. I considered making these a separate PR, but I'd be backporting my changes only to replace them again, and it's easier just to test everything at once. | |||
2018-08-18 | commands: saner workspace number handling | Ian Fan | |
2018-08-06 | commands: check for special workspaces in workspace & move commands | Ian Fan | |
2018-08-06 | commands: complete workspace implementation | Ian Fan | |
Allow optional --no-auto-back-and-forth flag, as well as refactoring some logic | |||
2018-07-09 | Update for swaywm/wlroots#1126 | emersion | |
2018-06-01 | Fix cmd_workspace crash when a surface has focus | Brian Ashworth | |
2018-04-03 | move workspace create to workspace.c | Tony Crisci | |
2018-04-03 | unify workspace create functions | Tony Crisci | |
2018-04-02 | rename seat functions | Tony Crisci | |
2018-03-29 | Revert "Merge pull request #1653 from swaywm/revert-1647-refactor-tree" | Tony Crisci | |
This reverts commit 472e81f35d689d67cda241acafda91c688d61046, reversing changes made to 6b7841b11ff4cd35f54d69dc92029855893e5ce0. | |||
2018-03-29 | Revert "Refactor tree" | Drew DeVault | |
2018-03-29 | more renaming things | Tony Crisci | |
2018-03-29 | rename container functions | Tony Crisci | |
2018-03-29 | move tree includes to their own directory | Tony Crisci | |
2018-02-07 | separate seat get focus and seat get focus inactive | Tony Crisci | |
2018-02-04 | basic focus overhaul | Tony Crisci | |
2018-01-30 | Implement workspaces | Drew DeVault | |
2017-11-18 | Move everything to sway/old/ | Drew DeVault | |
2017-03-18 | remove unnecessary todo item | Zandr Martin | |
As best I can tell this todo was intended to add workspace movement to the given output with the `workspace <ws> output <op>` command, but i3 does not behave this way. | |||
2017-03-10 | UnGNUify the codebase | Drew DeVault | |
2017-03-08 | fix workspace output assignment | Zandr Martin | |
2017-03-01 | Fix #1099: Allow spaces in worspace names | Calvin Lee | |
This commit allows unquoted spaces in worspace names in order to keep compatability with i3. The names _must not_ contain the string "output" which is documented in 'sway.5' because how sway detects the `move <workspace> output <output>` command. Also I documented that "number" may be used before the worspace name without affecting how the name is evaluated. | |||
2016-12-15 | Handle calloc failures | Drew DeVault | |
2016-09-25 | Implement default name for workspace command | Ryan Dwyer | |
This implements commands such as: workspace number 9: test If a workspace with the given number exists then it will be focused, otherwise a new workspace with the given name will be created. | |||
2016-09-02 | merge in latest commits | Zandr Martin | |
2016-09-01 | refactor commands.c | Zandr Martin | |