aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2019-02-25ipc-client: free payload after sending it over the socketRouven Czerwinski-0/+1
Fixes memory leaks in the form of: Direct leak of 20 byte(s) in 1 object(s) allocated from: #0 0x7f5f7c2f4f30 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xedf30) #1 0x563c7995b36a in join_args ../common/stringop.c:268 #2 0x563c798a6a1a in main ../sway/main.c:348 #3 0x7f5f7b4d609a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
2019-02-25output_evacuate: call workspace_consider_destroyBrian Ashworth-0/+9
This calls `workspace_consider_destroy` on the workspace that was visible on an output that a workspace was just evacuated to. This prevents having hidden empty workspaces.
2019-02-25layout cmd: always operate on parent container, like i3Fixes #3724Eric Drechsel-4/+2
2019-02-25Don't use SOCK_CLOEXECemersion-9/+27
Manually set the CLOEXEC flag instead, since SOCK_CLOEXEC isn't POSIX.
2019-02-25Add 'visible' key to view json responseYorick van Pelt-0/+3
2019-02-25Fix drag icon map listener not removedemersion-0/+1
2019-02-18Use container under cursor for mouse bindings1.0-rc3Brian Ashworth-9/+24
This matches i3's behavior of executing mouse bindings in regards to the container under the cursor instead of what is focused.
2019-02-18seat_cmd_cursor: fix typo in expected syntaxBrian Ashworth-1/+1
This just fixes a typo in the expected syntax for seat_cmd_cursor
2019-02-18workspace_next_name: fallback to next available numberBrian Ashworth-10/+7
This changes `workspace_next_name` to use the next available number as the workspace name instead of the number of outputs. This fixes the case where a number that is already in use could be returned. The workspace numbers in use have no relation to the number of outputs so it makes more sense to use the lowest available number
2019-02-18Remove refs to unimplemented debuglog commandDrew DeVault-5/+0
Closes #3695
2019-02-18Disconnect swaybg instead of killing itemersion-26/+80
This is much more reliable. This also fixes race conditions when killing swaybg while it's doing a wl_display_roundtrip.
2019-02-18Fix Meson subproject boolean default optionsemersion-1/+1
2019-02-18sway-input.5: document wildcard and identifier troubleshootingBrian Ashworth-1/+14
This documents the wildcard character for both inputs and seats. There is also a tip added on trying the wildcard to verify a setting if the identifier does not appear to be working.
2019-02-18Remove unused header include/sway/tree/output.hemersion-1/+0
2019-02-18Fix reload freeze when not modsetting current modeBrian Ashworth-3/+15
This fixes the issue of the display freezing on reload with wlroots#1545. On master, all output configs are applied on reload. This may cause an output to have its config applied up to three times, instead of just once. The three cases are: output name, output identifier, and wildcard. Not only is this inefficient, but it can cause swaybg to be spawned and immediately killed. However, swaybg requires two roundtrips of wl_display (to obtain needed globals) before it enters its normal event loop. Modesetting will roundtrip the wl_display. Without modesetting, waitpid for killing swaybg could block infinitely due to swaybg being blocked by wl_display_roundtrip. This only configured an output once. It either uses the wildcard config or creates an empty wildcard config and applies that. This also fixes a bug where an output would not be reset when there is no output config to apply to it.
2019-02-18tray: fix memory leaksIan Fan-3/+7
2019-02-18tray: when a service is lost, remove all matching itemsIan Fan-13/+14
Before, only the first matching item would be removed, which could leave stale items.
2019-02-18Check layout before getting pointer surface coordsVincent Vanlaer-4/+10
This fixes issues of clients at the edge of the screen, like swaybar, ignoring buttons.
2019-02-18Disable unneeded wlroots subproject featuresemersion-1/+5
2019-02-18tray: use correct parameter to set bus slot to floatingIan Fan-3/+3
Counter-intuitively, `sd_bus_slot_set_floating` expects 0 to set it to floating.
2019-02-18swaybar: prevent signal handler from firing during terminationIan Fan-12/+10
This prevents a heap-use-after-free crash when sway terminates.
2019-02-18apply_output_config: dpms on before modesetBrian Ashworth-13/+9
On the DRM backend, if an output is dpms'd off and a different output is hotplugged, the CRTC for the output is reclaimed. When modesetting an output without a CRTC, a CRTC will not be given to an output that is not desired to be enabled. This splits setting the dpms state in apply_output_config. If the output should be dpms on, the it is enabled before attempting to modeset. Otherwise, it is dpms'd off after setting everything else. This also adds DPMS_ON to the default output configs.
2019-02-18seatop_move_tiling: do not move to descendantBrian Ashworth-1/+2
In seatop_move_tiling, it is possible to cause a stack overflow by dragging a container into one of its descendants. This disables the ability to move into a descendant.
2019-02-18seat: allow tree focus changes while layer focusedBrian Ashworth-4/+14
This allows the focused inactive tree node and visible workspaces to be changed while a surface layer has focus. The layer temporarily loses focus, the tree focus changes, and the layer gets refocused.
2019-02-18seatop_move_tiling: use tab/stack parent not selfBrian Ashworth-0/+3
When moving a descendant of a tabbed or stacked container, it is possible for the target node to be the node being moved. This causes a segfault in `handle_finish` since the node will be detached and then attempted to be attached to it own parent, which is NULL due to the detach. In this case, the target node should not be set to the node being moved, but the parent of the node. This also allows for a descendant of a tabbed or stacked container to be dragged out of the tabs/stacks and to be a sibling of the tabbbed/stacked container, which was not previously possible.
2019-02-18subsurface_get_root_coords: break on NULLBrian Ashworth-0/+3
It is possible for `wlr_surface_is_subsurface` to return true, but `wlr_surface_from_wlr_surface` to be NULL. This adds a NULL check to the value returned by `wlr_surface_from_wlr_surface` and breaks out of the while loop in `subsurface_get_root_coords`.
2019-02-18cursor: relative-pointer-v1 time is usecBrian Ashworth-2/+2
In handle_cursor_motion, the timestamp passed to `wlr_relative_pointer_manager_v1_send_relative_motion` should be microseconds (not milliseconds) according to relative-pointer-v1 spec.
2019-02-18Don't remove from scratchpad on move to workspaceathrungithub-1/+0
on move container window to another workspace, not remove from scratchpad.
2019-02-18Fix --version when building from tarballemersion-5/+6
2019-02-18Rebase cursor when a layer surface mapsemersion-10/+20
Also removes an extraneous arrange_outputs call, it's already called if necessary in arrange_layers. Updates https://github.com/swaywm/sway/issues/3080
2019-02-11workspace_get_initial_output: handle focused layer1.0-rc2Brian Ashworth-3/+9
When a layer surface is focused, `seat_get_focused_workspace` will be NULL. This changes `workspace_get_initial_output` to use output of the focus inactive. If the focus inactive is also NULL, then either the first output or the noop output will be used as fallbacks.
2019-02-11Abort early when XDG_RUNTIME_DIR is not setBrian Ashworth-0/+8
This aborts sway and displays an error message about XDG_RUNTIME_DIR not being set without initializing the wl_display or logging any other information.
2019-02-11fix misc memory leaksBrian Ashworth-2/+3
This fixes a few misc memory leaks reported by asan: - Items of `config->config_chain` are now freed instead of just the list itself - `bar->swaybar_command` is now freed - The result returned by a seat subcommand is now returned instead of leaked
2019-02-11ipc: handle unnamed xkb_active_layout_nameBrian Ashworth-3/+3
If the active xkb_layout does not have a name, use `NULL` instead of `json_object_new_string(NULL)`. This also makes it so swaymsg will pretty print this as `(unnamed)`.
2019-02-11view: remove pointer constraints on unmapBrian Ashworth-0/+7
If the view has any pointer constraints, ensure they are removed before the view is unmapped and the surface is no longer tied to the view.
2019-02-11input/keyboard: respect solo repeat_{rate,delay}Brian Ashworth-6/+10
If `repeat_rate` or `repeat_delay` is set without the other being set, the default was being used for both. This changes the logic to respect the value given and use the default for the other when only one is set.
2019-02-11fix double free for mode toggle if bar was invisibleRouven Czerwinski-1/+1
If the bar was set to "invisible" and subsequently "toggle" was send twice, the new mode was never set and the bar->mode was double freed. Fix this by not requiring the bar->mode to be "hide" and instead show it unconditionally, because it was either hidden or invisible. Fixes #3637
2019-02-11container_at_stacked: skip titles when zero pixelsBrian Ashworth-4/+6
It is possible to make the title bars have a zero pixel height while stacked, by using a blank font and no padding. This causes a division by zero when attempting to calculate the child index in container_at_stacked, which then results in a segfault when attempting to access the child at that bad index (INT_MIN). This just skips the check to see if the cursor is over a title bar of a child of a stacked container when the title bar height is zero since there will be no title bars.
2019-02-11bar_cmd_modifier: add support for noneBrian Ashworth-12/+20
sway-bar(5) documents `modifier none`, which comes from i3. This implements the functionality for `modifier none` since it was not previously implemented. The bar modifier toggles visibility of the bar when the bar mode is set to hide. When the bar modifier is set to `none`, the ability to toggle visibility of the bar will be disabled.
2019-02-11seat_configure_tablet_tool: configure xcursorBrian Ashworth-0/+1
Since a tablet tool provides the WL_SEAT_CAPABILITY_POINTER capability, sway will attempt to use the xcursor manager to set a cursor image. If the tablet tool was the first (and possibly only) device to provide the capability for the seat, the xcursor manager was not being configured before attempting to set a cursor image. This was due to `seat_configure_xcursor` only being called in `seat_configure_pointer`. Since the xcursor manager was NULL in this case, it would cause a segfault when attempting to set a cursor image. This adds a call to `seat_configure_xcursor` in `seat_configure_tablet_tool` to ensure that the seat has a xcursor manager.
2019-02-11load_main_config: use given path, store realpathBrian Ashworth-3/+2
Since `load_include_config` compares against the realpath of a config file when checking if a config has already been added, the main config's realpath has to be added to the config_chain. However, includes from the main config should be processed relative to the path given to allow for symbolic links. This stores the realpath in `config->config_chain`, but uses the given path for all other operations.
2019-02-11Clarify error for options and positional argsBrian Ashworth-1/+7
When both options and positional arguments are given, sway would print the error `Don't use options with the IPC client`. Over the past several months, it seems like users are including this error message in issues instead of a debug log due to not understanding that the error message means there is an issue with their command. This makes the error message more verbose and will hopefully make it so more users understand that the message is not a bug in sway, but with the command used.
2019-02-11ipc_has_event_listeners: fix inverted check of subscribed_eventsDaniel Eklöf-1/+1
subscribed_events is a bit mask, with each *set* bit representing an event the client has subscribed to.
2019-02-11load_main_config: add realpath to config_chainBrian Ashworth-3/+11
Since `load_include_config` compares against the realpath of a config file when checking if a config has already been added, the main config's realpath has to be added to the config_chain.
2019-02-11Fix close_popups for xdg-shellemersion-12/+4
wlr_xdg_popup_destroy will destroy popups, so we need to walk the tree carefully. It's enough to just destroy all direct children, since destroying the parent will also destroy all children.
2019-02-11output_cmd_background: fix no file + valid modeBrian Ashworth-0/+6
If output_cmd_background is given a valid mode as the first argument, then there is no file given and an error should be returned. join_args should not be called with an argc of zero since it sets the last character to the null terminator. With an argc of zero, the length is zero causing a heap buffer overflow when setting the byte before the start of argv to '\0'. This probably will not ever generate a segfault, but may cause data corruption to whatever is directly before it in memory. To make other such cases easier to detect, this also adds a sway_assert in join_args when argc is zero.
2019-02-11Initialize server so input manager is available.Connor E-6/+6
2019-02-11If validating the config, do it as early as possible.Connor E-11/+12
2019-02-11cmd_workspace_gaps: fix double free on bad amountBrian Ashworth-1/+0
This fixes a double free in cmd_workspace_gaps when the amount given is invalid. The end pointer from strtol is part of the argument and should not be freed. Freeing the end pointer could result in a double free or bad free depending on whether or not the end pointer was at the start of the argument
2019-02-11Set version in project fileMichael Vetter-9/+4
Let's set the version in the meson file instead of declaring it outside. In case git is installed we use the git hash as version. Instead it isn't (like on a clean build system), let's use the version defined in the project.