Commit graph

109 commits

Author SHA1 Message Date
Ryan Dwyer aaba7642b3 Replace is_floating boolean with function 2018-06-01 23:14:58 +10:00
Ryan Dwyer 1f2e399ade Implement floating 2018-06-01 23:14:58 +10:00
Ryan Dwyer 1e9aaa54a8 Revert "Revert "Merge pull request #1943 from RyanDwyer/criteria-improvements""
This reverts commit 32a572cecf.

This reimplements the criteria overhaul in preparation for fixing a
known bug.
2018-05-14 11:38:09 +10:00
emersion 360e63b8a7
Don't destroy view child on xdg-popup unmap 2018-05-12 19:33:38 +01:00
Drew DeVault 32a572cecf Revert "Merge pull request #1943 from RyanDwyer/criteria-improvements"
This reverts commit 3e1bf721c6, reversing
changes made to 2217518bd5.
2018-05-12 08:52:54 -04:00
Ryan Dwyer 3b0c26d149 Overhaul criteria implementation
The criteria struct now uses properties for each token type rather than
the list_t list of tokens. The reason for this is that different token
types have different data types: pcre, string and number to name a few.
This solution should be more flexible moving forward. A bonus of this is
that criteria is now easier to understand when looking at the struct
definition.

The criteria parser has been rewritten because the previous one didn't
support valueless pairs (eg. [class="foo" floating]).

Criteria now has types. Types at the moment are CT_COMMAND,
CT_ASSIGN_WORKSPACE and CT_ASSIGN_OUTPUT. i3 uses types as well.
Previously the assign command was creating a criteria with 'move to
workspace <name>' as its command, but this caused the window to appear
briefly on the focused workspace before being moved to the assigned
workspace. It now creates the view directly in the assigned workspace.

Each view will only execute a given criteria once. This is achieved by
storing a list of executed criteria in the view. This is the same
strategy used by i3.

Escaping now works properly. Previously you could do things like
[class="Fire\"fox"] and the stored value would be 'Fire\"fox', but it
should be (and now is) 'Fire"fox'.

The public functions in criteria.c are now all prefixed with criteria_.

Xwayland views now listen to the set_title, set_class and
set_window_type events and criteria will be run when these happen. XDG
shell has none of these events so it continues to update the title in
handle_commit.

Each view type's get_prop function has been split into get_string_prop
and get_int_prop because some properties like the X11 window ID and
window type are numeric.

The following new criteria tokens are now supported:

* id (X11 window ID)
* instance
* tiling
* workspace
2018-05-11 09:38:53 +10:00
emersion bec80f1551
Damage borders when damaging view 2018-05-10 23:03:50 +01:00
Ryan Dwyer 228c478e8d Implement title_format
This implements the title_format command, with a new placeholder %shell
which gets substituted with the view type (xwayland, xdg_shell_v6 or
wl_shell).

Example config:

    for_window [title=".*"] title_format %title (class=%class instance=%instance shell=%shell)
2018-05-05 22:29:37 +10:00
Ryan Dwyer 74d1367fac Update titles when surfaces are committed 2018-05-03 15:42:49 +10:00
Ryan Dwyer e67f354333 Implement borders
Implements rendering of borders. Title text is still to do.

Implements the following configuration directives:

* client.focused
* client.focused_inactive
* client.unfocused
* client.urgent
* border
* default_border
2018-04-30 21:24:13 +10:00
emersion 3fd8897abe
Don't call view_set_fullscreen on unmapped xwayland views 2018-04-28 20:44:42 +01:00
Ryan Dwyer 76837b9132 Ignore xdg_shell_v6 request_fullscreen if not mapped 2018-04-20 08:10:58 +10:00
Ryan Dwyer 2acfbc519e xdg_shell_v6: Use client_pending state instead of current
It appears client_pending is the state that should be used here.
2018-04-19 12:47:34 +10:00
Ryan Dwyer 72beae209b Fullscreen fixes. 2018-04-18 00:10:32 +10:00
Ryan Dwyer 143b528f71 Handle fullscreen flag when mapping a surface. 2018-04-17 11:04:57 +10:00
Ryan Dwyer 52420cc24d Implement fullscreen. 2018-04-16 20:36:40 +10:00
emersion 58914822aa
Don't damage the whole output 2018-04-06 14:17:58 -04:00
emersion 516f5454ad
Simplify damage tracking functions, use them in layer shell 2018-04-06 11:45:40 -04:00
emersion 290c916290
Send surface enter/leave events to view children 2018-04-06 10:26:32 -04:00
emersion 7ce1038478
Fix xwayland unmanaged surfaces 2018-04-05 17:08:30 -04:00
emersion f5e5b1819b
Track damage of xdg-shell-v6 popups 2018-04-05 16:48:11 -04:00
emersion dcd15a2d3d
Implement shell views 2018-04-05 11:40:39 -04:00
emersion 8eff00f723 Remove unused SWAY_VIEW_TYPES 2018-04-04 22:03:14 -04:00
emersion 61fabede14
Address review comments 2018-04-02 10:57:45 -04:00
emersion 1d68f9ecca
Add sway_view_impl 2018-03-31 18:07:44 -04:00
emersion b2c2ee693b
Introduce common functions to create, map, unmap, destroy views 2018-03-31 17:49:40 -04:00
emersion 139f80b0f0
Handle map/unmap events in xdg-shell-v6 2018-03-30 17:43:43 -04:00
emersion a776ecbb86
Add lite damage tracking
This skips the renderer if nothing has changed, and renders
everything otherwise.
2018-03-30 17:16:35 -04:00
Drew DeVault 49379dd0fc Fix workspace deletion edge cases 2018-03-30 13:49:34 -04:00
Tony Crisci dc8c9fbeb6 Revert "Merge pull request #1653 from swaywm/revert-1647-refactor-tree"
This reverts commit 472e81f35d, reversing
changes made to 6b7841b11f.
2018-03-29 23:41:33 -04:00
Drew DeVault d0c7f66e95
Revert "Refactor tree" 2018-03-29 23:29:29 -04:00
Drew DeVault 6b7841b11f
Merge pull request #1647 from acrisci/refactor-tree
Refactor tree
2018-03-29 23:19:14 -04:00
Tony Crisci 2778edef97 arrange windows 2018-03-29 23:15:39 -04:00
Tony Crisci eca029f218 more renaming things 2018-03-29 17:06:29 -04:00
Tony Crisci b90099b4b7 rename container functions 2018-03-29 16:40:40 -04:00
Drew DeVault 941ca5c8fd Maximize xdg shell surfaces on creation
Makes them look better yo

In the future we might want to only do this for tiled windows, and let
floating windows do their own thing.
2018-03-29 15:40:15 -04:00
Tony Crisci 874f009866 move tree includes to their own directory 2018-03-29 14:21:42 -04:00
Drew DeVault 53df5889d5 Fix lingering xdg shell issues 2018-03-27 15:54:34 -04:00
Drew DeVault cbb2e3308e Update API to match latest wlroots 2018-03-27 13:28:43 -04:00
Drew DeVault 8ad26c8afd Send surface enter/leave events 2018-02-25 17:23:36 -05:00
Tony Crisci a7d49da239 separate seat get focus and seat get focus inactive 2018-02-07 18:17:57 -05:00
Tony Crisci 5151502298 basic focus overhaul 2018-02-04 14:08:54 -05:00
Drew DeVault b28602aa74 Implement workspaces 2018-01-30 23:09:21 -05:00
Tony Crisci c353e01c85 add kill command 2018-01-20 14:10:11 -05:00
Dominique Martinet 67985e9031 sway: change all sway_log to wlr_log 2018-01-05 23:39:46 +01:00
Tony Crisci 2f7e435c6f desktop: use wlr-surface commit 2017-12-27 10:10:13 -05:00
Tony Crisci 41e71d950a remove verbose commit logging 2017-12-18 07:13:02 -05:00
Tony Crisci 163edc5a90 sway input device 2017-12-12 08:29:37 -05:00
Tony Crisci 5e9ee32d63 set focus on new window 2017-12-10 15:13:27 -05:00
Tony Crisci 47f268d8fa view activate 2017-12-06 07:34:33 -05:00
Tony Crisci 8bdf3b1b02 view set position 2017-12-05 11:02:31 -05:00
Tony Crisci 802e7392f8 use "size" instead of "dimensions" 2017-12-03 11:01:44 -05:00
Drew DeVault 8caabe59c2 Handle view destruction properly 2017-11-25 16:30:15 -05:00
Drew DeVault a57d462926 Fix rendering issues, wire up some xdg listeners 2017-11-25 15:49:10 -05:00
Drew DeVault ce1936bc65 Arrange windows on desktop 2017-11-25 11:19:25 -05:00
Drew DeVault 4ca1e77fdb Add views to tree and render them 2017-11-22 21:06:08 -05:00
Dominique Martinet 6c1cd82e32 xdg_shell_v6: add _POSIX_C_SOURCE define for struct timespec
wlroots 1e0e73 added struct timespec to wlr_seat.h, so we need to
define a _POSIX_C_SOURCE large enough whenever we include wlr_seat.h
2017-11-23 00:19:11 +01:00
Drew DeVault 733993a651 Move everything to sway/old/ 2017-11-18 11:22:02 -05:00
Drew DeVault 0c8491f7d0 Initial (awful) pass on xdg shell support 2017-11-11 18:06:50 -05:00