3ede598 | Ryan Dwyer | 11 March 2019, 08:11:01 UTC | Fix click behaviour By the time seatop_allows_events was called, seatop_impl was already NULL, causing the function to always return false. This means a press event was sent to clients without a corresponding release event. This patch moves the call to seatop_finish to after the seatop_allows_events check. | 11 March 2019, 14:57:16 UTC |
9bfb385 | Ryan Dwyer | 06 March 2019, 08:54:41 UTC | Don't send button events to surfaces when dragging or resizing It turns out sending button events during all seat operations is not desirable. This patch introduces a new property `seatop_impl.allows_events` which allows each operation to define whether button events should be passed to the surface or not. The `down` seat operation is the only one that supports this. As all the other seatops don't support it, the calls to seat_pointer_notify_button prior to starting them have been removed. | 11 March 2019, 14:57:16 UTC |
ab1b1da | Ian Fan | 17 January 2019, 16:56:04 UTC | stringop.c: refactor a few functions | 11 March 2019, 14:57:16 UTC |
29a67a1 | Ian Fan | 17 January 2019, 16:57:34 UTC | stringop.c: clean up headers | 11 March 2019, 14:57:16 UTC |
2b70e85 | Ian Fan | 17 January 2019, 16:47:44 UTC | stringop.c: remove unused functions The only use of `join_list` in swaybar/tray/icon.c has been rewritten. | 11 March 2019, 14:57:16 UTC |
4284de1 | Brian Ashworth | 09 March 2019, 07:23:20 UTC | sway_view_child: add listener for view unmap Since not all child views's have an unmap event, it is possible for it to still be mapped (default state) in the destruction handler. When the destruction handler is called, the corresponding view may have already been freed and the memory location reallocated. This adds a listener for the view unmapping and removes the mapped status. This ensures that the child view is damaged due to destruction while the view still exists and not after. | 11 March 2019, 14:57:16 UTC |
c01a3ca | Brian Ashworth | 11 March 2019, 04:10:18 UTC | detect_proprietary: use strncmp Only the main nvidia module needs to be blocked. Others such as nvidiafb are benign and do not need to be blocked | 11 March 2019, 14:57:16 UTC |
8034358 | Brian Ashworth | 10 March 2019, 22:43:22 UTC | fullscreen: init floating on disable without size If a container gets mapped as fullscreen and set to floating by criteria, the size and location are never set for the floating container. This adds a check in container_fullscreen_disable for a width or height of 0 and calls container_init_floating | 11 March 2019, 14:57:16 UTC |
2c0b65f | emersion | 10 March 2019, 21:59:15 UTC | meson: use pkg-config var for scdoc path | 11 March 2019, 14:57:16 UTC |
0717b76 | emersion | 10 March 2019, 20:47:30 UTC | Fix crash in cmd_workspace when layer surface has focus | 11 March 2019, 14:57:14 UTC |
e3dd074 | Drew DeVault | 10 March 2019, 19:09:23 UTC | Update language in sway.desktop & sway(1) | 11 March 2019, 14:56:20 UTC |
d57755d | Brian Ashworth | 10 March 2019, 19:00:15 UTC | arrange: use int not size_t for title offsets This changes `apply_tabbed_layout` and `apply_stacked_layout` to use `int` instead of `size_t`. This is necessary for tabbed and stacked containers to be positioned correctly when the y-location is negative. The reasoning for this is signed plus unsigned is always an unsigned value. This was causing the y-location of the container to be positioned near `INT_MIN` due to an unsigned integer underflow | 11 March 2019, 14:56:20 UTC |
fb4838c | Brian Ashworth | 08 March 2019, 17:57:50 UTC | damage: remove output_damage_view This removes `output_damage_view` since it is unnecessary. The logic has been moved into its only caller `output_damage_from_view`. When damaging the whole view, `output_damage_whole_container` should be used instead | 11 March 2019, 14:56:20 UTC |
e7788c2 | Brian Ashworth | 08 March 2019, 17:44:42 UTC | output_damage_whole_container: damage subsurfaces This adds an iterative call in `output_damage_whole_container` to damage the subsurfaces for all visible views that are inside of the container. This is needed to damage subsurfaces that extend outside the box of the container. Without this, those subsurfaces will create artifacts when moving or resizing. | 11 March 2019, 14:56:20 UTC |
f0eedfa | Jeff Peeler | 09 March 2019, 03:06:38 UTC | fix "directive argument is null" errors | 11 March 2019, 14:56:20 UTC |
e281632 | minus | 09 March 2019, 10:06:09 UTC | Fix crash when moving window to scratchpad | 11 March 2019, 14:56:20 UTC |
7d8083c | Peter Grayson | 08 March 2019, 19:39:35 UTC | Add missing swaymsg completions The `-m/--monitor` option was missing from the bash and fish completions. The `subscribe` IPC message type was missing from the bash, fish, and zsh completions. Signed-off-by: Peter Grayson <pete@jpgrayson.net> | 11 March 2019, 14:56:20 UTC |
bedf2ac | Peter Grayson | 08 March 2019, 17:43:04 UTC | Add -p/--pretty option to swaymsg This new option forces pretty (non-raw/non-JSON) output. By default, when not using a tty, swaymsg outputs using the "raw" format. This makes it impossible to, for example, pipe the pretty output to a pager such as `less` since piping does not use a tty. The new -p/--pretty option gives the user explicit control over the output format while retaining the default tty-dependent behavior. Signed-off-by: Peter Grayson <pete@jpgrayson.net> | 11 March 2019, 14:56:20 UTC |
c808503 | Brian Ashworth | 07 March 2019, 08:37:49 UTC | ipc: describe libinput device configuration This adds the device configurations to the ipc response for libinput devices. Only supported configuration options for the device will be added. This also moves `libinput_send_events` inside a new `libinput` object that contains the rest of the configuration options. sway-ipc(7) has been updated to reflect the changes and document the new additions. | 11 March 2019, 14:56:20 UTC |
7b5429b | Brian Ashworth | 06 March 2019, 17:02:19 UTC | ipc: fix fullscreen deco_rect This fixes the deco_rect reported by the ipc for fullscreen containers to be all zeroes. Children of the fullscreen container should still have their decorations reported correctly | 11 March 2019, 14:56:20 UTC |
776d8d8 | Brian Ashworth | 06 March 2019, 17:16:28 UTC | ipc: fix rect for stacked children This now takes all titlebars for stacked children into account for the ipc property `rect` | 11 March 2019, 14:56:20 UTC |
8dfdb3f | emersion | 06 March 2019, 09:47:50 UTC | Fix container_parent_layout for scratchpad windows | 11 March 2019, 14:56:20 UTC |
7a44b54 | Brian Ashworth | 06 March 2019, 05:33:10 UTC | ipc: change {,deco_}rect to match i3 This fixes the `deco_rect` and `rect` properties in the IPC responses to match i3's behavior. `deco_rect` should be relative to the parent node, not the current node. This also takes tabbed and stacked decorations into account and will calculate `deco_rect` for all containers since tabbed and stacked child containers will have decorations. `rect` should exclude the window decorations. | 11 March 2019, 14:56:20 UTC |
704450a | emersion | 04 March 2019, 19:51:48 UTC | Set DISPLAY after initializing Xwayland This is necessary after https://github.com/swaywm/wlroots/pull/1596 | 11 March 2019, 14:56:20 UTC |
3121352 | Ben Challenor | 10 March 2019, 20:26:50 UTC | Make raw keysyms take precedence over translated Allows both BackSpace and Shift+BackSpace to be bound under the US keyboard layout, per #3705. | 10 March 2019, 21:47:46 UTC |
e8eab3b | Brian Ashworth | 04 March 2019, 15:25:34 UTC | meson: update scdoc requirement to >= 1.9.2 Since scdoc 1.9.1 is bugged, this updates the meson version check to >= 1.9.2 and drops the version requirement from the README. This should make it more obvious to users who have 1.9.1 that they need to update scdoc to be able to compile man pages and hopefully cut down on the duplicate issues | 04 March 2019, 17:50:56 UTC |
0c16057 | Ryan Dwyer | 04 March 2019, 11:04:16 UTC | Allow concurrent clicks If two cursor buttons are pressed at the same time, the client will now be notified of the second button press. The main reason for not sending the concurrent presses was due to an early return in dispatch_cursor_button if a seatop is in progress. This patch makes it call seat_pointer_notify_button prior to returning. But it also has to make sure there's not a mismatch in events such as a release without a press. Prior to this patch, the down seatop would send press and release events in its begin and finish functions. No other seatops did this. A press event would be sent prior to starting tiling drag, but never an associated release. After this patch, no seatops send their own press or release events. We send them prior to calling the seatop begin functions, then the first part of dispatch_cursor_button handles all presses during seatops and when releasing the seatop. | 04 March 2019, 17:50:47 UTC |
1749f24 | Brian Ashworth | 03 March 2019, 17:38:05 UTC | sway.1.scd: document environment vars set by sway This just documents the few environment variables set by sway in sway.1.scd | 04 March 2019, 17:50:47 UTC |
9dafaa8 | Brian Ashworth | 03 March 2019, 04:17:46 UTC | render_floating: skip fullscreen floaters If a floater is fullscreen either on a workspace or globally, it should not be rendered on any output is is not fullscreened on. When rendering it on an output it should not be rendered on, there will be an extraneous border along the adjacent side of the output. This adds a check in render_floating to skip all fullscreened floaters | 04 March 2019, 17:50:47 UTC |
4c2d36d | Noam Preil | 02 March 2019, 21:09:14 UTC | Fixes crash in spawn_swaybg (closes #3733) | 04 March 2019, 17:50:47 UTC |
a3b9f2d | Brian Ashworth | 02 March 2019, 07:29:28 UTC | floating_maximum_size: change default behavior This changes the way zero (which is the default) is interpreted for both the width and height of `floating_maximum_size`. It now refers to the width and height of the entire output layout, which matches i3's behavior. This also removes duplicated code to calculate the floating constraints in three files. Before this, `container_init_floating` used two-thirds of the workspace width/height as the max and the entire workspace width/height was used everywhere else. Now, all callers use a single function `floating_calculate_constraints`. | 04 March 2019, 17:50:47 UTC |
e0cdcad | hugbubby | 01 March 2019, 18:14:14 UTC | Minor fix of code duplication. Removes 3~ lines of code that didn't need to be restated. | 04 March 2019, 17:50:47 UTC |
9593c72 | emersion | 27 February 2019, 21:19:53 UTC | meson: check scdoc version | 04 March 2019, 17:50:47 UTC |
acb23fe | emersion | 28 February 2019, 18:22:47 UTC | seat: don't send button release when not pressed All seat operations except "down" eat the button pressed event and don't send it to clients. Thus, when ending such seat operations we shouldn't send the button released event. This commit moves the logic used to send pressed/released into the "down" operation. | 04 March 2019, 17:50:47 UTC |
7b5862d | Ian Fan | 28 February 2019, 12:02:14 UTC | tray: fix pixmap colors by converting from network byte order to host byte order | 04 March 2019, 17:50:47 UTC |
ecb646e | Brian Ashworth | 28 February 2019, 03:11:58 UTC | sway-ipc.7: clarify window_rect omits decorations According to the i3 ipc documentation, `window_rect` excludes the window decorations from the calculation. This just clarifies that in `sway-ipc.7.scd` | 04 March 2019, 17:50:47 UTC |
9b26661 | emersion | 27 February 2019, 10:48:30 UTC | Add output dpms to manpage | 04 March 2019, 17:50:47 UTC |
acc28cf | emersion | 27 February 2019, 20:26:50 UTC | Print Meson features | 04 March 2019, 17:50:47 UTC |
1a34dbf | emersion | 27 February 2019, 20:13:16 UTC | Set minimum wlroots version | 04 March 2019, 17:50:47 UTC |
7371ed5 | Brian Ashworth | 27 February 2019, 18:23:10 UTC | Add sway-ipc.7.scd to document IPC protocol This add `sway-ipc.7.scd` that documents the IPC protocol. This also increased the minimum scdoc version from 1.8.1 to 1.9.0 to allow for table cells to be continued on the following line | 04 March 2019, 17:50:43 UTC |
e91349f | Rouven Czerwinski | 26 February 2019, 19:49:42 UTC | config: remove double assignement to result in get_output_config | 04 March 2019, 17:50:27 UTC |
a95c4ab | Rouven Czerwinski | 26 February 2019, 19:46:25 UTC | cursor: intitialize sx and sy to zero If node_at_coords does an early return without setting these values, they can be used uninitialized later. Initialize both to zero. | 04 March 2019, 17:50:27 UTC |
97d3fb1 | Rouven Czerwinski | 26 February 2019, 19:21:33 UTC | cursor: remove unused node assignement The node variable is not used before its reassigned later in the function, remove the assignement. | 04 March 2019, 17:50:27 UTC |
8460924 | Brian Ashworth | 26 February 2019, 05:24:39 UTC | execute_command: do not strip qoutes for cmd_mode `cmd_mode` performs its own quote stripping for the mode string to avoid double stripping quotes for `cmd_bindcode` and `cmd_bindsym` in `config_command` and `execute_command`. Stripping quotes in `execute_command` for `cmd_mode` will also result in double stripping, which will cause issues for any mode string with spaces, such as pango markup. | 04 March 2019, 17:50:27 UTC |
c129767 | Carlo Abelli | 25 February 2019, 19:24:02 UTC | fix smart_borders description in manual The wording for smart_borders was opposite the actual behavior. | 25 February 2019, 22:10:04 UTC |
401df9c | Connor E | 24 February 2019, 04:39:08 UTC | Make load_include_configs void. Fix some cases where WD would not be restored. | 25 February 2019, 22:10:04 UTC |
3924039 | minus | 22 February 2019, 21:26:40 UTC | Fix crash exiting fullscreened floating container container_floating_move_to_center and container_fullscreen_disable were calling recursively when the container spawned as a fullscreen floating container (via for_window). Such a window now doesn't crash sway anymore but is still configured with a wrong, zero size, making it not directly usable. | 25 February 2019, 22:10:04 UTC |
b2abc60 | Caleb Bassi | 23 February 2019, 15:49:40 UTC | ipc: add missing fields to disabled outputs i3 requires all outputs to have certain fields, including 'primary', 'current_workspace', and 'rect' which were missing on disabled outputs. https://i3wm.org/docs/ipc.html#_outputs_reply | 25 February 2019, 22:10:04 UTC |
54ad31a | emersion | 16 February 2019, 10:55:44 UTC | Update for swaywm/wlroots#1517 | 25 February 2019, 22:10:04 UTC |
41a771a | Brian Ashworth | 23 February 2019, 04:09:39 UTC | handle_seat_node_destroy: update seat->workspace If an unmanaged or layer surface is focused when an output gets disabled and an empty workspace on the output was focused by the seat, the seat needs to refocus it's focus inactive to update the value of `seat->workspace`. | 25 February 2019, 22:10:04 UTC |
feeaa94 | Brian Ashworth | 23 February 2019, 04:34:26 UTC | handle_layer_shell_surface: do not use noop output If the noop output is focused (all other outputs disabled/disconnected), do not auto assign a layer surface to it. The noop output is not enabled and does not have the `output->layers` list initialized. It also does not make sense to map the layer surfaces to something that is not visible. | 25 February 2019, 22:10:04 UTC |
b474050 | Rouven Czerwinski | 23 February 2019, 07:28:49 UTC | view: set xdg_decoration->view to NULL, check decoration destroy Fixes heap-use-after-free: ==32046==ERROR: AddressSanitizer: heap-use-after-free on address 0x615000064d20 at pc 0x55571ce4d303 bp 0x7fff545c64c0 sp 0x7fff545c64b0 WRITE of size 8 at 0x615000064d20 thread T0 #0 0x55571ce4d302 in xdg_decoration_handle_destroy ../sway/xdg_decoration.c:13 #1 0x7f64009d6f36 in wlr_signal_emit_safe ../util/signal.c:29 #2 0x7f64009d3c46 in toplevel_decoration_handle_resource_destroy ../types/wlr_xdg_decoration_v1.c:65 #3 0x7f6400a19f8d (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0x7f8d) #4 0x7f6400a19fed in wl_resource_destroy (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0x7fed) #5 0x7f64009d3d1f in toplevel_decoration_handle_surface_destroy ../types/wlr_xdg_decoration_v1.c:82 #6 0x7f64009d6f36 in wlr_signal_emit_safe ../util/signal.c:29 #7 0x7f64009b059c in reset_xdg_surface ../types/xdg_shell/wlr_xdg_surface.c:453 #8 0x7f64009b0688 in destroy_xdg_surface ../types/xdg_shell/wlr_xdg_surface.c:483 #9 0x7f64009af08c in xdg_client_handle_resource_destroy ../types/xdg_shell/wlr_xdg_shell.c:71 #10 0x7f6400a19f8d (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0x7f8d) #11 0x7f6400a1e211 (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0xc211) #12 0x7f6400a1e6fe (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0xc6fe) #13 0x7f6400a1a0ec in wl_client_destroy (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0x80ec) #14 0x7f6400a1a1c4 (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0x81c4) #15 0x7f6400a1b941 in wl_event_loop_dispatch (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0x9941) #16 0x7f6400a1a569 in wl_display_run (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0x8569) #17 0x55571ce4c7fd in server_run ../sway/server.c:214 #18 0x55571ce4ad59 in main ../sway/main.c:405 #19 0x7f640071109a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a) #20 0x55571ce2cfa9 in _start (/usr/local/bin/sway+0x35fa9) 0x615000064d20 is located 32 bytes inside of 504-byte region [0x615000064d00,0x615000064ef8) freed by thread T0 here: #0 0x7f6401531b70 in free (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xedb70) #1 0x55571ce6c72b in destroy ../sway/desktop/xdg_shell.c:252 #2 0x55571cee3f7b in view_destroy ../sway/tree/view.c:60 #3 0x55571cee4090 in view_begin_destroy ../sway/tree/view.c:73 #4 0x55571ce6dd95 in handle_destroy ../sway/desktop/xdg_shell.c:464 #5 0x7f64009d6f36 in wlr_signal_emit_safe ../util/signal.c:29 #6 0x7f64009b059c in reset_xdg_surface ../types/xdg_shell/wlr_xdg_surface.c:453 #7 0x7f64009b0688 in destroy_xdg_surface ../types/xdg_shell/wlr_xdg_surface.c:483 #8 0x7f64009af08c in xdg_client_handle_resource_destroy ../types/xdg_shell/wlr_xdg_shell.c:71 #9 0x7f6400a19f8d (/usr/lib/x86_64-linux-gnu/libwayland-server.so.0+0x7f8d) previously allocated by thread T0 here: #0 0x7f6401532138 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xee138) #1 0x55571ce6df39 in handle_xdg_shell_surface ../sway/desktop/xdg_shell.c:485 #2 0x7f64009d6f36 in wlr_signal_emit_safe ../util/signal.c:29 #3 0x7f64009b0167 in handle_xdg_surface_commit ../types/xdg_shell/wlr_xdg_surface.c:350 #4 0x7f64009ce2a5 in surface_commit_pending ../types/wlr_surface.c:372 #5 0x7f64009ce523 in surface_commit ../types/wlr_surface.c:444 #6 0x7f63ff63ddad in ffi_call_unix64 (/usr/lib/x86_64-linux-gnu/libffi.so.6+0x5dad) Fixes #3759 | 25 February 2019, 22:10:04 UTC |
344c312 | Brian Ashworth | 22 February 2019, 07:48:57 UTC | input/cursor: allow whole-window bindings on ws To match i3's behavior, this allows mouse bindings to be triggered over a workspace when `--whole-window` is given. | 25 February 2019, 22:10:04 UTC |
8aaba94 | Brian Ashworth | 22 February 2019, 05:10:02 UTC | move scratchpad: hide visible scratchpad container This makes it so running `move [to] scratchpad` on a container already in the scratchpad does not return an error. To match i3's behavior, a visible scratchpad container will be hidden and a hidden scratchpad container will be treated as a noop. | 25 February 2019, 22:10:04 UTC |
f435562 | Rouven Czerwinski | 22 February 2019, 05:42:40 UTC | commands/move: reintroduce wrongly removed NULL check Commit d3d7956576341bbbfb60d045175b0e8a44752e0b removed this NULL check, which leads to the following backtrace: #0 0x0000557bd201df46 in node_is_view (node=0x0) at ../sway/sway/tree/node.c:41 #1 0x0000557bd1ff5d4e in seat_get_focus_inactive (seat=0x557bd3fc7580, node=0x0) at ../sway/sway/input/seat.c:968 current = 0x557bd2033485 #2 0x0000557bd2009f24 in cmd_move_container (argc=3, argv=0x557bd46b19c0) at ../sway/sway/commands/move.c:557 new_output_last_focus = 0x0 error = 0x0 node = 0x557bd469f360 workspace = 0x557bd4572ee0 container = 0x557bd469f360 no_auto_back_and_forth = false seat = 0x557bd3fc7580 old_parent = 0x0 old_ws = 0x557bd4572ee0 old_output = 0x557bd411f740 destination = 0x557bd46a0cc0 new_output = 0x557bd411f740 new_output_last_ws = 0x0 focus = 0x557bd469f360 __PRETTY_FUNCTION__ = "cmd_move_container" new_workspace = 0x557bd4572ee0 […] Reintroduce the NULL check to fix the bug. Fixes #3746 | 25 February 2019, 22:10:04 UTC |
42d2555 | Brian Ashworth | 21 February 2019, 18:24:13 UTC | Handle NULL from output_get_active_workspace This modifies the places where output_get_active_workspace is called to handle a NULL result. Some places already handled it and did not need a change, some just have guard off code blocks, others return errors, and some have sway_asserts since the case should never happen. A lot of this is probably just safety precautions since they probably will never be called when `output_get_active_workspace` is not fully configured with a workspace. | 25 February 2019, 22:10:04 UTC |
dca6c2a | Brian Ashworth | 21 February 2019, 13:06:35 UTC | output_get_active_workspace: check workspaces length If an output's node was dirty and the transaction was committed before a workspace was moved to or created for the output, the instruction would have a bad value for `state->active_workspace` due to a missing length check in `output_get_active_workspace`. If there was no focus on the output, the first workspace was being returned. If the workspace list was currently empty, the value was either garbage, or in the case of an output being disabled and re-enabled, a workspace that may have been previously freed. This just adds the length check to avoid returning out of bounds value. | 25 February 2019, 22:10:04 UTC |
099d25e | Rouven Czerwinski | 21 February 2019, 07:37:23 UTC | run_as_ipc_client: free response after running the IPC command Fixes memory leaks in the form of: Direct leak of 24 byte(s) in 1 object(s) allocated from: #0 0x7f5f7c2f4f30 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xedf30) #1 0x563c799569f2 in ipc_recv_response ../common/ipc-client.c:94 #2 0x563c79957062 in ipc_single_command ../common/ipc-client.c:138 #3 0x563c798a56cc in run_as_ipc_client ../sway/main.c:127 #4 0x563c798a6a3a in main ../sway/main.c:349 #5 0x7f5f7b4d609a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a) | 25 February 2019, 22:10:04 UTC |
dfe42cb | Rouven Czerwinski | 21 February 2019, 07:36:58 UTC | ipc-client: free payload after sending it over the socket 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) | 25 February 2019, 22:10:04 UTC |
2bbc6c3 | Brian Ashworth | 20 February 2019, 19:08:20 UTC | output_evacuate: call workspace_consider_destroy 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. | 25 February 2019, 22:10:04 UTC |
da829b1 | Eric Drechsel | 19 February 2019, 07:56:12 UTC | layout cmd: always operate on parent container, like i3Fixes #3724 | 25 February 2019, 22:10:04 UTC |
468d09b | emersion | 19 February 2019, 15:18:31 UTC | Don't use SOCK_CLOEXEC Manually set the CLOEXEC flag instead, since SOCK_CLOEXEC isn't POSIX. | 25 February 2019, 22:10:04 UTC |
6e55111 | Yorick van Pelt | 18 February 2019, 12:57:16 UTC | Add 'visible' key to view json response | 25 February 2019, 22:10:04 UTC |
c2a3d6d | emersion | 18 February 2019, 12:19:58 UTC | Fix drag icon map listener not removed | 25 February 2019, 22:10:04 UTC |
a1b9aa1 | Brian Ashworth | 18 February 2019, 01:33:37 UTC | Use container under cursor for mouse bindings This matches i3's behavior of executing mouse bindings in regards to the container under the cursor instead of what is focused. | 18 February 2019, 20:11:48 UTC |
0940a46 | Brian Ashworth | 18 February 2019, 01:16:23 UTC | seat_cmd_cursor: fix typo in expected syntax This just fixes a typo in the expected syntax for seat_cmd_cursor | 18 February 2019, 20:11:48 UTC |
34f5c1e | Brian Ashworth | 17 February 2019, 18:07:04 UTC | workspace_next_name: fallback to next available number 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 | 18 February 2019, 20:11:48 UTC |
f22aef0 | Drew DeVault | 17 February 2019, 14:51:56 UTC | Remove refs to unimplemented debuglog command Closes #3695 | 18 February 2019, 20:11:48 UTC |
eaec82a | emersion | 16 February 2019, 22:30:19 UTC | Disconnect swaybg instead of killing it This is much more reliable. This also fixes race conditions when killing swaybg while it's doing a wl_display_roundtrip. | 18 February 2019, 20:11:48 UTC |
c6b4335 | emersion | 16 February 2019, 23:50:53 UTC | Fix Meson subproject boolean default options | 18 February 2019, 20:11:48 UTC |
f120f70 | Brian Ashworth | 16 February 2019, 22:42:56 UTC | sway-input.5: document wildcard and identifier troubleshooting 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. | 18 February 2019, 20:11:48 UTC |
d2456c3 | emersion | 16 February 2019, 22:09:26 UTC | Remove unused header include/sway/tree/output.h | 18 February 2019, 20:11:48 UTC |
19586ab | Brian Ashworth | 16 February 2019, 21:14:27 UTC | Fix reload freeze when not modsetting current mode 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. | 18 February 2019, 20:11:48 UTC |
9ff59b7 | Ian Fan | 16 February 2019, 11:02:15 UTC | tray: fix memory leaks | 18 February 2019, 20:11:48 UTC |
8dbd4b9 | Ian Fan | 16 February 2019, 11:01:15 UTC | tray: when a service is lost, remove all matching items Before, only the first matching item would be removed, which could leave stale items. | 18 February 2019, 20:11:48 UTC |
c07d91c | Vincent Vanlaer | 15 February 2019, 17:29:47 UTC | Check layout before getting pointer surface coords This fixes issues of clients at the edge of the screen, like swaybar, ignoring buttons. | 18 February 2019, 20:11:48 UTC |
b02198a | emersion | 16 February 2019, 10:57:41 UTC | Disable unneeded wlroots subproject features | 18 February 2019, 20:11:48 UTC |
1a46da7 | Ian Fan | 15 February 2019, 15:15:45 UTC | tray: use correct parameter to set bus slot to floating Counter-intuitively, `sd_bus_slot_set_floating` expects 0 to set it to floating. | 18 February 2019, 20:11:48 UTC |
47abc45 | Ian Fan | 14 February 2019, 15:43:34 UTC | swaybar: prevent signal handler from firing during termination This prevents a heap-use-after-free crash when sway terminates. | 18 February 2019, 20:11:48 UTC |
8d708b8 | Brian Ashworth | 15 February 2019, 08:01:19 UTC | apply_output_config: dpms on before modeset 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. | 18 February 2019, 20:11:48 UTC |
f0e8c68 | Brian Ashworth | 14 February 2019, 03:38:30 UTC | seatop_move_tiling: do not move to descendant 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. | 18 February 2019, 20:11:48 UTC |
ee236af | Brian Ashworth | 14 February 2019, 04:46:20 UTC | seat: allow tree focus changes while layer focused 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. | 18 February 2019, 20:11:48 UTC |
1d4b995 | Brian Ashworth | 13 February 2019, 19:32:47 UTC | seatop_move_tiling: use tab/stack parent not self 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. | 18 February 2019, 20:11:48 UTC |
ad34837 | Brian Ashworth | 13 February 2019, 04:21:11 UTC | subsurface_get_root_coords: break on NULL 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`. | 18 February 2019, 20:11:48 UTC |
d126410 | Brian Ashworth | 13 February 2019, 08:01:06 UTC | cursor: relative-pointer-v1 time is usec 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. | 18 February 2019, 20:11:48 UTC |
59b3c4d | athrungithub | 11 February 2019, 22:10:28 UTC | Don't remove from scratchpad on move to workspace on move container window to another workspace, not remove from scratchpad. | 18 February 2019, 20:11:48 UTC |
e50e1fe | emersion | 12 February 2019, 22:13:24 UTC | Fix --version when building from tarball | 18 February 2019, 20:11:48 UTC |
06e03ed | emersion | 12 February 2019, 21:55:23 UTC | Rebase cursor when a layer surface maps Also removes an extraneous arrange_outputs call, it's already called if necessary in arrange_layers. Updates https://github.com/swaywm/sway/issues/3080 | 18 February 2019, 20:11:48 UTC |
e4e579e | Brian Ashworth | 11 February 2019, 01:12:51 UTC | workspace_get_initial_output: handle focused layer 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. | 11 February 2019, 15:22:53 UTC |
40023d4 | Brian Ashworth | 11 February 2019, 08:59:11 UTC | Abort early when XDG_RUNTIME_DIR is not set 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. | 11 February 2019, 15:22:53 UTC |
a5a189c | Brian Ashworth | 11 February 2019, 08:26:12 UTC | fix misc memory leaks 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 | 11 February 2019, 15:22:53 UTC |
a4d7ee1 | Brian Ashworth | 10 February 2019, 20:37:24 UTC | ipc: handle unnamed xkb_active_layout_name 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)`. | 11 February 2019, 15:22:53 UTC |
4e27785 | Brian Ashworth | 10 February 2019, 20:23:50 UTC | view: remove pointer constraints on unmap 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. | 11 February 2019, 15:22:53 UTC |
062da8e | Brian Ashworth | 10 February 2019, 17:36:30 UTC | input/keyboard: respect solo repeat_{rate,delay} 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. | 11 February 2019, 15:22:53 UTC |
95e16bb | Rouven Czerwinski | 10 February 2019, 16:04:12 UTC | fix double free for mode toggle if bar was invisible 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 | 11 February 2019, 15:22:53 UTC |
243d5a3 | Brian Ashworth | 09 February 2019, 03:29:35 UTC | container_at_stacked: skip titles when zero pixels 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. | 11 February 2019, 15:22:53 UTC |
4339ba6 | Brian Ashworth | 07 February 2019, 03:00:29 UTC | bar_cmd_modifier: add support for none 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. | 11 February 2019, 15:22:53 UTC |
32f790b | Brian Ashworth | 07 February 2019, 06:52:58 UTC | seat_configure_tablet_tool: configure xcursor 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. | 11 February 2019, 15:22:53 UTC |
8229814 | Brian Ashworth | 07 February 2019, 07:16:38 UTC | load_main_config: use given path, store realpath 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. | 11 February 2019, 15:22:53 UTC |
a2f661d | Brian Ashworth | 06 February 2019, 18:18:46 UTC | Clarify error for options and positional args 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. | 11 February 2019, 15:22:53 UTC |