aboutsummaryrefslogtreecommitdiff
path: root/sway
AgeCommit message (Collapse)Author
2018-10-25Update workspace.cppascher
re-added missing output check after config load
2018-10-25Update workspace.cppascher
Remove output requirement for workspace command
2018-10-25Merge pull request #2975 from RyanDwyer/deny-commands-when-no-outputsDrew DeVault
Deny several commands when there's no outputs connected
2018-10-26Deny several commands when there's no outputs connectedRyan Dwyer
2018-10-25Rebase the cursor after applying transactionsRyan Dwyer
This approaches cursor rebasing from a different angle. Rather than littering the codebase with cursor_rebase calls and using transaction callbacks, this just runs cursor_rebase after applying every transaction - but only if there's outputs connected, because otherwise it causes a crash during shutdown. There is one known case where we still need to call cursor_rebase directly, and that's when running `seat seat0 cursor move ...`. This command doesn't set anything as dirty so no transaction occurs.
2018-10-25Merge pull request #2950 from emersion/presentation-timeDrew DeVault
Implement the presentation-time protocol
2018-10-25Merge pull request #2971 from RyanDwyer/document-output-identifiersemersion
Document how to identify outputs by make, model and serial
2018-10-25Document how to identify outputs by make, model and serialRyan Dwyer
2018-10-25Fix containers not being resized when entering scratchpadRyan Dwyer
This fixes a regression introduced by 662466e8db773926bf61b21280194a3540ae26ec. When adding a container to the scratchpad, setting container->scratchpad = true before container_set_floating made container_set_floating believe that the container was already floating. This fixes it by setting the property afterwards instead.
2018-10-24When scrolling on a tab titlebar, set focus_inactive if not focusedRyan Dwyer
For example, create layout H[view T[view view view]], focus the view in the hsplit and scroll the mouse wheel over the tab title bars. Prior to this patch, focus would be given to a descendant of the tabbed container. This patch keeps the focus on the hsplit view. This also renames some of the variables used in this part of the code to make it be easier to follow.
2018-10-24Merge pull request #2957 from RyanDwyer/rebase-cursor-after-mapDrew DeVault
Rebase the cursor after mapping a view
2018-10-24Rebase the cursor after mapping a viewRyan Dwyer
I originally put the rebase at the end of view_map, but at this point the view is still at its native size and will ignore the motion event if it falls outside of its native size. The only way to do this properly is to rebase the cursor later - either after sending the configure, after the view commits with the new size, or after applying the transaction. I chose to do it after applying the transaction for simplicity. I then attempted to just call cursor_rebase after applying every transaction, but this causes crashes when exiting sway (and possibly other places) because cursor_rebase assumes the tree is in a valid state. So my chosen solution introduces transaction_commit_dirty_with_callback which allows handle_map to register a callback which will run when the transaction is applied.
2018-10-24Rebase the cursor after focusing in a directionRyan Dwyer
Prior to this patch, creating a tabbed container with two views, switching tab and then scrolling without motion would cause the scroll events to be sent to the old focus. To fix this, rebasing the cursor is needed after changing focus.
2018-10-24Merge pull request #2933 from Snaipe/xwayland-window-propertiesDrew DeVault
xwayland: populate window_properties in json for views
2018-10-23Implement the presentation-time protocolemersion
2018-10-23xwayland: populate window_properties in json for viewsFranklin "Snaipe" Mathieu
window_properties is documented to contain a subset of the X11 properties of a window (its title, class, instance, role, and transient ID). This commit adds the missing json object from the get_tree output for xwayland windows only. This is a follow-up of #2911. Signed-off-by: Franklin "Snaipe" Mathieu <me@snai.pe>
2018-10-23seat_update_capabilities: Set cursor image while we have the capabilityRyan Dwyer
2018-10-23Fix dormant cursor when using multiple seatsRyan Dwyer
The cursor's image would be removed or set when the seat's capabilities were updated, but there was nothing to prevent the image from being set at other times.
2018-10-23commands: replace EXPECTED_LESS_THAN with EXPECTED_AT_MOSTIan Fan
This makes it a bit more obvious what the expected number of arguments is.
2018-10-23commands: clean-up checkarg functionIan Fan
Consolidates logic and fixes mistake that used argc instead of val for determining plural.
2018-10-23commands: remove EXPECTED_MORE_THANIan Fan
Its uses have been replaced with EXPECTED_AT_LEAST.
2018-10-23commands: print correct command on error for exec and opacityIan Fan
2018-10-22cmd_swaynag_command: fix typo in variableBrian Ashworth
The custom swaynag_command was being stored as config->swaybg_command instead of config->swaynag_command.
2018-10-23Merge pull request #2935 from mteyssier/ref-output-docsDrew DeVault
Add references to sway-output(5) in sway(5)
2018-10-23Add references to sway-output(5) in sway(5)mteyssier
- update ref in the swaybg_command description - add ref to sway-output(5) in See Also - add an `output` command description
2018-10-22config: remove peeked + expanded line log entriesBrian Ashworth
The peeked and expanded line log entries were useful during the switch to generic code blocks and subcommands. However, it has been a while since those were introduced and the log entries are no longer helpful for any remaining issues with config parsing. Instead of keeping them as clutter in the log, they can just be removed.
2018-10-22Merge branch 'master' into fix-scratchpad-resizeBrian Ashworth
2018-10-22Merge pull request #2926 from RyanDwyer/fix-xwayland-floating-logicDrew DeVault
Fix xwayland wants_floating logic
2018-10-23Fix crash when resizing container hidden in the scratchpadRyan Dwyer
Firstly, the container was wrongly identifying as a tiling container because it had no workspace. Secondly, when calculating the maximum possible size we can't use the workspace if it's not there, so we'll allow unlimited size in this case.
2018-10-22Merge pull request #2924 from RyanDwyer/fix-qt-menu-crashDrew DeVault
Fix crash when quitting a QT app on the wayland backend using menu
2018-10-22Merge pull request #2923 from RyanDwyer/fix-move-to-fullscreen-crashDrew DeVault
Fix crash when moving a container to a fullscreen workspace
2018-10-22Fix xwayland wants_floating logicRyan Dwyer
2018-10-22Fix crash when quitting a QT app on the wayland backend using menuRyan Dwyer
QT unmaps the view before destroying the popup. We destroyed the popup in response to the view unmapping, but then we'd attempt to destroy it a second time which caused a crash. The patch removes the listener. I tested it with GTK as well, and can confirm the popup is still being destroyed.
2018-10-22Fix crash when moving a container to a fullscreen workspaceRyan Dwyer
Setting normal focus to the fullscreen view causes the old workspace to start destroying. We then set focus to the old workspace which is no longer attached in the tree. As we are only setting focus_inactive on the fullscreen container, the fix uses seat_set_raw_focus to avoid all the additional behaviour that comes with it such as destroying the old workspace.
2018-10-21cmd_reload: recalc font sizing + rebuild texturesBrian Ashworth
When the config gets reloaded, the font height and baseline get reset to 0. If the config does not have a font command in it, the variables will remain at 0 causing a transparent area where the title would be rendered. This makes it so the font height and baseline are recalculated. Additionally, since the font height and baseline may have changed due to the reload, the title and marks textures are rebuilt.
2018-10-21Parse missing i3 window typesChristian
fixes the parsing part of #2906
2018-10-21Make workspace back_and_forth seat-specificRyan Dwyer
* When using multiple seats, each seat has its own prev_workspace_name for the purpose of workspace back_and_forth. * Removes prev_workspace_name global variable. * Removes unused next_name_map function in tree/workspace.c. * Fixes memory leak in seat_destroy (seat was not freed).
2018-10-21Abort if proprietary drivers are in useRyan Dwyer
The idea here is we don't want users to be blissfully unaware that they are running unsupported drivers. So we abort on startup, and force the user to add a specific argument to bypass the check.
2018-10-20Merge pull request #2895 from RyanDwyer/fix-popup-damageDrew DeVault
Fix popup damage issues when toplevel and/or popup uses geometry
2018-10-20Merge pull request #2888 from RyanDwyer/remove-raise-floatingDrew DeVault
Remove raise_floating directive
2018-10-20Fix popup damage issues when toplevel and/or popup uses geometryRyan Dwyer
The wlr_xdg_popup_get_toplevel_coords function has the following quirks: * It does not do anything with the coordinates of the passed popup. Instead, we are required to add them ourselves, which we do by passing them to the function as the surface local values. * It adds the geometry (shadows etc) of the toplevel itself, so the coordinates are surface local rather than content local. For this reason, we have to negate the toplevel's geometry (child->view->geometry). * I may be wrong, but the popup positions appear to be stored in surface local coordinates rather than content local coordinates. The geometry (shadows etc) of the popup itself must be negated (surface->geometry).
2018-10-20Fix crash when defaut seat is not createdMihai Coman
Function input_manager_get_default_seat should always return a seat.
2018-10-20Remove raise_floating directiveRyan Dwyer
The directive controlled whether floating views should raise to the top when the cursor is moved over it while using focus_follows_mouse. The default was enabled, which is undesirable. For example, if you have two floating views where one completely covers the other, the smaller one would be inaccessible because moving the mouse over the bigger one would raise it above the smaller one. There is no known use case for having raise_floating enabled, so this patch removes the directive and implements the raise_floating disabled behaviour instead.
2018-10-20Merge pull request #2870 from RyanDwyer/refactor-input-manageremersion
Minor refactor of input manager
2018-10-20Merge pull request #2886 from RyanDwyer/fix-headless-unmap-crashemersion
Fix crash when view unmaps while no outputs connected
2018-10-20Merge pull request #2879 from Emantor/fix/swaybar_positionemersion
swaybar: disallow left and right position and print error on default
2018-10-20commands/bar: remove left and right from allowed positionsRouven Czerwinski
"left" and "right" are not allowed positions for swaybar, remove them.
2018-10-20Minor refactor of input managerRyan Dwyer
The input manager is a singleton object. Passing the sway_input_manager argument to each of its functions is unnecessary, while removing the argument makes it obvious to the caller that it's a singleton. This patch removes the argument and makes the input manager use server.input instead. On a similar note: * sway_input_manager.server is removed in favour of using the server global. * seat.input is removed because it can get it from server.input. Due to a circular dependency, creating seat0 is now done directly in server_init rather than in input_manager_create. This is because creating seats must be done after server.input is set. Lastly, it now stores the default seat name using a constant and removes a second reference to seat0 (in input_manager_get_default_seat).
2018-10-20Fix crash when view unmaps while no outputs connectedRyan Dwyer
When a view unmaps, we call workspace_consider_destroy. This function assumed the workspace would always have an output, but this is not the case when hotplugged down to zero. The function now handles this and allows itself to be destroyed when there is no output. This means that workspace_begin_destroy must remove the workspace from the root->saved_workspaces list to avoid an eventual dangling pointer, so it does that now. Lastly, when an output is plugged in again and it has to create a new initial workspace for it, we must emit the workspace::init IPC event otherwise swaybar shows no workspaces at all. I guess when you start sway, swaybar is started after the workspace has been created which is why this hasn't been needed earlier.
2018-10-20Merge pull request #2872 from RyanDwyer/cursor-rebaseDrew DeVault
Introduce cursor_rebase