Ryan Dwyer
f08a30d6d0
Force transactions to complete in order
...
This forces transactions to complete in order by using a singly linked
list stored in the sway server.
2018-06-24 12:33:23 +10:00
Ryan Dwyer
32b865e610
Fix crash when deleting last child in a tabbed or stacked container
...
There was no `current` child because the container was destroyed. This
makes it fall back to looking in the parent's current children list.
2018-06-23 17:47:28 +10:00
Ryan Dwyer
b11c9199a6
Merge remote-tracking branch 'upstream/master' into atomic
2018-06-23 16:26:20 +10:00
Ryan Dwyer
38398e2d77
Implement atomic layout updates for tree operations
...
This implements atomic layout updates for when views map, reparent or
unmap.
2018-06-23 16:24:11 +10:00
Tobias Blass
a5c091e302
Perform (partial) server initialization before dropping privileges.
...
Some operations during backend creation (e.g. becoming DRM master)
require CAP_SYS_ADMIN privileges. At this point, sway has dropped them
already, though. This patch splits the privileged part of server_init
into its own function and calls it before dropping its privileges.
This fixes the bug with minimal security implications.
2018-06-19 00:19:57 +02:00
emersion
cda66e9a26
Automatically float xwayland windows
2018-06-18 22:52:10 +01:00
Ryan Dwyer
1c89f32533
Preserve buffers during transactions
...
* Also fix parts of the rendering where it was rendering the pending
state instead of current.
2018-06-18 20:42:12 +10:00
Ryan Dwyer
645bf446fa
Merge remote-tracking branch 'upstream/master' into atomic
2018-06-18 15:58:48 +10:00
frsfnrrg
ca061ba8bf
Fix keyboard shortcut handling inconsistencies
...
* Ensure that modifier keys are identified even when the next key does
not produce a keysym. This requires that modifier change tracking
be done for each sway_shortcut_state.
* Permit regular and --release shortcuts on the same key combination.
Distinct bindings are identified for press and release cases; note
that the release binding needs to be identified for both key press
and key release events.
* Maintain ascending sort order for the shortcut state list, and keep
track of the number of pressed key ids, for simpler (and hence
faster) searching of the list of key bindings.
* Move binding duplicate detection into get_active_binding to avoid
duplicating error messages.
2018-06-12 20:26:57 -04:00
frsfnrrg
b23cd827cf
Sort binding key lists
...
Sort the list comprising the set of keys for the binding in ascending
order. (Keyboard shortcuts depend only on the set of simultaneously
pressed keys, not their order, so this change should have no external
effect.) This simplifies comparisons between bindings.
2018-06-12 11:26:24 -04:00
Ryan Dwyer
9e96cfd310
Merge remote-tracking branch 'upstream/master' into atomic
2018-06-11 11:03:43 +10:00
Drew DeVault
867fb6aedb
Merge pull request #2124 from emersion/drag-icons
...
Render drag icons
2018-06-09 10:50:34 -07:00
Nate Symer
6a910b9ba5
Implement gaps (PR #2047 )
2018-06-09 09:34:56 -04:00
emersion
cfd02918c0
Render drag icons
2018-06-09 13:26:03 +01:00
Ryan Dwyer
bb66e6d578
Refactor everything that needs to arrange windows
...
* The arrange_foo functions are now replaced with arrange_and_commit, or
with manually created transactions and arrange_windows x2.
* The arrange functions are now only called from the highest level
functions rather than from both high level and low level functions.
* Due to the previous point, view_set_fullscreen_raw and
view_set_fullscreen are both merged into one function again.
* Floating and fullscreen are now working with transactions.
2018-06-09 10:11:25 +10:00
Ryan Dwyer
f9e6d703d2
Make main properties be the pending state
2018-06-09 10:08:43 +10:00
Ryan Dwyer
59c9488701
WIP: Atomic layout updates ground work
2018-06-09 10:08:43 +10:00
Brian Ashworth
5c9a917df9
Restore workspaces to outputs based on priority
2018-06-08 13:08:00 -04:00
Dominique Martinet
c78ce0770a
swaylock: implement ^U to clear buffer
...
The whole state->xcb.modifiers thing didn't work at all (always 0)
The xkb doc says "[xkb_state_serialize_mods] should not be used in
regular clients; please use the xkb_state_mod_*_is_active API instead"
so here it is
2018-06-08 22:42:15 +09:00
Brian Ashworth
e072fbc6d9
Switch output storing from list_t to wl_list
2018-06-06 20:11:24 -04:00
Brian Ashworth
a1b5b93d29
Store sway_outputs so that they can be reenabled
2018-06-06 20:11:24 -04:00
Brian Ashworth
5ea4a4d3ee
Refactor cmd_output to use config_subcommand
2018-06-03 10:26:06 -04:00
Brian Ashworth
af87c7a1af
Address emersion's feedback on peek_line
2018-06-02 08:07:44 -04:00
Brian Ashworth
8bfa2def88
Address first round of review for generic blocks
2018-06-02 08:07:44 -04:00
Brian Ashworth
51bb9d8573
Support braces on next line for config blocks
2018-06-02 08:07:44 -04:00
Brian Ashworth
7c810dc344
Make command block implementation generic
2018-06-02 08:07:44 -04:00
frsfnrrg
c664d780cc
Comment to explain sway_shortcut_state lists
2018-06-01 18:52:36 -04:00
frsfnrrg
a056419ad7
Rewrite shortcut handling code to avoid hardcoded values
...
The same shortcut algorithm is now used for keycodes,
raw keysyms, and translated keysyms. Pressed keysyms
are now stored in association with the keycodes that
generated them. Modifier keycodes (and associated
keysyms) are identified retroactively by the subsequent
change to the modifier flags.
2018-06-01 18:52:36 -04:00
Ryan Dwyer
a2c1cb9072
Fix mpv damage issue when unfullscreening into floating
2018-06-01 23:14:58 +10:00
Ryan Dwyer
97672295ed
Don't unmaximize floating views
2018-06-01 23:14:58 +10:00
Ryan Dwyer
5b1601c2e3
Don't let xwayland views set position unless unmanaged
2018-06-01 23:14:58 +10:00
Ryan Dwyer
d4ed204d4d
Remove container_self_or_parent_floating
2018-06-01 23:14:58 +10:00
Ryan Dwyer
70f5d6fcf3
Rename container_set_geometry_from_view
2018-06-01 23:14:58 +10:00
Ryan Dwyer
e4e912ea91
Store swayc coordinates as layout-local
2018-06-01 23:14:58 +10:00
Ryan Dwyer
02de2a6f65
Rename set_maximized functions to set_tiled
2018-06-01 23:14:58 +10:00
Ryan Dwyer
13a4b0512e
Fix unfullscreening a floating view
2018-06-01 23:14:58 +10:00
Ryan Dwyer
aaba7642b3
Replace is_floating boolean with function
2018-06-01 23:14:58 +10:00
Ryan Dwyer
34f35f0bad
Use L_FLOATING instead of reapable boolean
2018-06-01 23:14:58 +10:00
Ryan Dwyer
1f2e399ade
Implement floating
2018-06-01 23:14:58 +10:00
Drew DeVault
1132efe42e
Send frame done to floating views
...
Also centers them on the screen when initially floated
In the future we'll need a more sophisticated solution than that
2018-06-01 23:14:58 +10:00
Drew DeVault
f3ab895916
Implement floating enable
2018-06-01 23:14:58 +10:00
Brian Ashworth
c81d0ef1e8
Support i3's legacy force_focus_wrapping command
2018-05-28 11:09:46 -04:00
emersion
1071785f56
Merge pull request #2060 from RedSoxFan/focus-wrapping
...
Implement focus_wrapping
2018-05-28 10:30:11 +01:00
Brian Ashworth
46da1dc32b
Implement focus_wrapping
2018-05-27 23:20:21 -04:00
Ryan Dwyer
7c7d24600b
Fix ancestor typos
2018-05-28 12:45:42 +10:00
Drew DeVault
b2c0ba5b18
Merge pull request #2050 from smlx/focus-fix
...
Focus containers only on entry.
2018-05-27 15:42:39 -04:00
frsfnrrg
a78a5684ea
Implement bindsym/bindcode --locked
...
Adds the --locked flag to bindsym and bindcode commands.
When a keyboard's associated seat has an exclusive client
(i.e, a screenlocker), then bindings are only executed if
they have the locked flag. When there is no such client,
this restriction is lifted.
2018-05-27 13:28:02 -04:00
Scott Leggett
1b8de39287
Move previous cursor_position inline.
2018-05-28 02:14:19 +10:00
Scott Leggett
4cd304e4ba
Store previous position in sway_cursor.
2018-05-28 01:37:43 +10:00
Ryan Dwyer
8fda41dab5
Merge branch 'master' into cmd-swap
2018-05-28 00:14:22 +10:00
emersion
36d5d4b40f
client/pool-buffer: munmap in destroy_buffer
2018-05-27 14:09:48 +01:00
emersion
cc10c7af65
swaylock: implement a proper render loop
2018-05-27 13:39:38 +01:00
Ryan Dwyer
d3dd7e5bae
Rename view_get_type to view_get_shell
2018-05-27 22:02:00 +10:00
Ryan Dwyer
484cc189e9
Add shell criteria token
...
Closes #2044 .
2018-05-27 22:02:00 +10:00
Scott Leggett
06098bef98
Focus containers only on entry.
2018-05-27 15:29:48 +10:00
Brian Ashworth
569f4e0e4c
Implement swap command
2018-05-26 11:05:02 -04:00
Ryan Dwyer
db38b9bbf3
Clean up container title functions
...
* Add and use lenient_strcat and lenient_strncat functions
* Rename `concatenate_child_titles` function as that's no longer what it
does
* Rename `container_notify_child_title_changed` because we only need to
notify that the tree structure has changed, not titles
* Don't notify parents when a child changes its title
* Update ancestor titles when changing a container's layout
* Eg. create nested tabs and change the inner container to stacking
* No need to store tree presentation in both container->name and
formatted_title
2018-05-25 21:07:59 +10:00
emersion
df61bfbb57
swaylock: remove unused field
2018-05-23 22:59:24 +01:00
emersion
cd0fca2ebf
Merge branch 'master' into fix-swaylock-hotplugging
2018-05-23 22:54:52 +01:00
Ryan Dwyer
4de137e021
Replace empty argument with void
2018-05-22 09:44:34 +10:00
Ryan Dwyer
f6c3682c05
Use constants for titlebar dimensions
2018-05-22 08:27:42 +10:00
Ryan Dwyer
efc07fb3d4
Don't track damage for views on inactive tabs
2018-05-21 20:16:56 +10:00
Ryan Dwyer
c08f9bf257
Implement tabbed layout
2018-05-21 20:16:56 +10:00
Brian Ashworth
82cd55a670
Fix border commands from changing focus
2018-05-20 23:12:33 -04:00
Ryan Dwyer
9d99e5c2e7
Swaylock: Allow per-output images
2018-05-20 22:54:09 +10:00
Ryan Dwyer
9fd28aea8c
Rebuild textures if needed when moving a container
...
When moving a container to an output which has a different scale than
the previous, rebuild the title and marks textures at the new scale.
Fixes #1999 .
2018-05-19 23:33:36 +10:00
emersion
b7ab7c0e66
Fix output hotplugging
2018-05-18 21:57:58 +01:00
emersion
e4dbafe4d8
Fix swaylock crashing when unplugging output
2018-05-18 19:13:08 +01:00
Ryan Dwyer
0e2cc0af30
Implement show_marks
2018-05-17 08:29:14 +10:00
Brian Ashworth
0944d3fd9c
Change scale from int32_t to double for pango
2018-05-16 12:01:04 -04:00
Dominique Martinet
89ae1792b5
sway: run commands without waiting for Xwayland
...
Xwayland is lazy now, there is no need to wait at all
2018-05-16 16:50:56 +09:00
Ryan Dwyer
4d1edfcba9
Change unmark implemention to match i3's
2018-05-15 11:24:16 +10:00
Ryan Dwyer
22d38600d0
Implement marks
2018-05-15 11:18:27 +10:00
Brian Ashworth
9ba0dca7ba
Merge branch 'master' into fix-1975
2018-05-14 09:06:23 -04:00
emersion
95a10dd4f3
Kill wl_shell
2018-05-14 13:26:10 +01:00
Brian Ashworth
34b864fb17
Merge branch 'master' into fix-1975
2018-05-14 00:28:21 -04:00
Brian Ashworth
6ff7c52736
Fix titles and detect edges for hide_edge_borders
2018-05-14 00:20:34 -04:00
Ryan Dwyer
bffcb496cc
Revert "Revert "Merge pull request #1953 from RyanDwyer/criteria-focused""
...
This reverts commit ac0e62584f
.
This reimplements the criteria __focused__ commit in preparation for
fixing a known bug.
2018-05-14 11:38:09 +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
Drew DeVault
b2dec12368
Merge pull request #1970 from emersion/xdg-shell-stable
...
Add xdg-shell stable support
2018-05-13 13:45:15 -04:00
emersion
88d9d43b36
Add xdg-shell stable support
2018-05-13 16:38:56 +01:00
Heghedus Razvan
789a877b37
Fix crash when using pango markup font
...
The characters & < > ' " needs to be escaped when using pango markup
Signed-off-by: Heghedus Razvan <heghedus.razvan@gmail.com>
2018-05-13 17:53:45 +03:00
Drew DeVault
61aa0937a7
Merge pull request #1824 from snaggen/idle
...
DPMS and lock handling
2018-05-13 10:11:10 -04:00
Ryan Dwyer
90e6dfa268
Merge branch 'master' into edge-borders
2018-05-13 11:45:11 +10:00
Mattias Eriksson
8fbafbfab5
Idle handling for dpms/lockscreen et al
...
Swayidle handles idle events and allows
for dpms and lockscreen handling. It also
handles systemd sleep events, and can
raise a lockscreen on sleep
Fixes #541
2018-05-13 00:30:09 +02:00
emersion
360e63b8a7
Don't destroy view child on xdg-popup unmap
2018-05-12 19:33:38 +01:00
Brian Ashworth
ec60e24f75
Merge branch 'master' into edge-borders
2018-05-12 12:43:34 -04:00
Brian Ashworth
e3625d8f33
Count descendant views for hide_edge_borders smart
2018-05-12 12:37:48 -04:00
Drew DeVault
51b0b25587
Merge pull request #1959 from RyanDwyer/ipc-get-seats
...
Implement IPC get_seats command
2018-05-12 09:00:32 -04: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
Drew DeVault
ac0e62584f
Revert "Merge pull request #1953 from RyanDwyer/criteria-focused"
...
This reverts commit 2511adffc2
, reversing
changes made to 3e1bf721c6
.
2018-05-12 08:52:48 -04:00
Ryan Dwyer
28eb97299e
Fix conflicting IPC command type constants with i3's
2018-05-12 18:22:21 +10:00
Ryan Dwyer
c72940837c
Implement IPC get_seats command
2018-05-12 18:17:36 +10:00
Ryan Dwyer
94e42f9857
Implement __focused__ criteria
2018-05-12 12:34:12 +10: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
556ff5f50e
Implement pango support
...
Implements support for the pango: prefix in the font command.
Closes #1903 .
2018-05-06 08:25:22 +10:00
Ryan Dwyer
5d6d24e71a
Move code for re-arranging after font height change into a common place
2018-05-05 22:29:37 +10: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
Drew DeVault
58a033d816
Convert border_colors.text to float[4]
2018-05-03 08:14:17 -04:00
Ryan Dwyer
d3d1e38c1b
Change comment format
2018-05-03 15:12:00 +10:00
Ryan Dwyer
55b307cddf
Calculate config->font_height based on existing container titles
2018-05-03 15:12:00 +10:00
Ryan Dwyer
b667298a0a
Render titles
2018-05-03 15:12:00 +10:00
Ryan Dwyer
6ef14e99ee
Restore view_update_position()
2018-05-01 19:59:36 +10:00
Ryan Dwyer
abcad0ece9
Move docblock and fix indenting of switch/case.
2018-05-01 17:36:12 +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
Ryan Dwyer
312fdf313f
Remove arrange_windows()
...
After the refactor, this function is no longer called.
2018-04-30 08:47:38 +10:00
Ryan Dwyer
167c2e1aa9
Refactor arrange_windows()
...
Replaces arrange_windows() with arrange_root(), arrange_output(),
arrange_workspace() and arrange_children_of().
Also makes fullscreen views save and restore their dimensions, which
allows it to preserve any custom resize and is also a requirement for
floating views once they are implemented.
2018-04-28 11:26:14 +10:00
emersion
ff61df17ff
Add map_from_region command
2018-04-26 10:53:47 +01:00
Ryan Dwyer
ae39d7b28c
Remove sway_container.workspace_layout
...
Fixes #1716 .
2018-04-26 10:14:18 +10:00
Drew DeVault
c54097428a
Merge branch 'master' into criteria-commands
2018-04-25 11:00:56 +02:00
emersion
aa36899d8a
Fix a bunch of swaybar memory leaks
2018-04-24 22:28:55 +01:00
Mattias Eriksson
2d884d4e4f
Improved key handling in swaylock
...
Make escape clear buffer
Add indicator states for ctrl,shift,super et al
Add CapsLock indicator
2018-04-24 15:40:30 +02:00
Ryan Dwyer
dfc26c664f
Update wording about unmanaged/unmapped views
2018-04-24 20:14:22 +10:00
Ryan Dwyer
d956286b92
Implement rename workspace command
...
This implements the following commands:
* rename workspace to new_name
* rename workspace old_name to new_name
* rename workspace number n to new_name
2018-04-23 18:54:45 +10:00
emersion
4cf77e1de4
Default to current time when triggering cursor events
2018-04-21 14:07:22 +01:00
Drew DeVault
21eb63cc9e
Merge branch 'master' into fullscreen
2018-04-19 08:56:03 -04:00
Ryan Dwyer
5b30391383
Make key repeat configurable
...
This creates two input commands for configuring the repeat delay and rate.
Example config:
input "myidentifier" {
repeat_delay 250
repeat_rate 25
}
2018-04-18 23:19:23 +10:00
Ryan Dwyer
72beae209b
Fullscreen fixes.
2018-04-18 00:10:32 +10:00
Ryan Dwyer
c685ef081f
Create sway_workspace struct.
2018-04-17 09:31:34 +10:00
Ryan Dwyer
bfd5834f4c
Feedback for fullscreen.
2018-04-17 08:11:50 +10:00
Ryan Dwyer
52420cc24d
Implement fullscreen.
2018-04-16 20:36:40 +10:00
Geoff Greer
ad6aa21c43
swaylock: Securely zero-out password.
...
- Replace char* with static array. Any chars > 1024 will be discarded.
- mlock() password buffer so it can't be written to swap.
- Clear password buffer after auth succeeds or fails.
This is basically the same treatment I gave the 0.15 branch in https://github.com/swaywm/sway/pull/1519
2018-04-12 17:49:21 -07:00
Danny Bautista
c355d680e9
Clean up cursor simulation code.
2018-04-10 15:40:27 -04:00
Danny Bautista
1edb2bd892
Implement cursor event simulation with sway commands.
2018-04-10 12:40:50 -04:00
Drew DeVault
07b6be6214
Merge pull request #1769 from acrisci/focus-inactive-fixes
...
Focus inactive fixes
2018-04-08 16:05:03 -04:00
Tony Crisci
e7771c507a
80char
2018-04-08 15:32:19 -04:00
Drew DeVault
0e3ddf255e
Add input "identifier" map_to_output "identifier"
2018-04-08 15:09:12 -04:00
Tony Crisci
ae78f6fb93
Merge branch 'wlroots' into focus-inactive-fixes
2018-04-08 12:47:56 -04:00
Drew DeVault
9c5a88a7bd
Fix cursor motion issues
...
Use only one canonical cursor x/y position and send cursor enter when
mouse is warped.
Tangentally related to #1714
2018-04-08 12:42:56 -04:00
Drew DeVault
9114d3b84c
Implement tablet tool support
2018-04-08 10:48:13 -04:00
Tony Crisci
de811823b6
seat focus inactive children foreach
2018-04-07 16:14:12 -04:00
Tony Crisci
c0f9ee7bd1
seat get focus inactive view
2018-04-07 16:06:36 -04:00
emersion
2b357af7ee
Give keyboard focus to unmanaged xwayland surfaces
...
This fixes dmenu
2018-04-07 14:03:30 -04:00
Drew DeVault
c47b4d4edb
Merge pull request #1756 from emersion/output-damage
...
Fine-grained damage tracking
2018-04-07 11:53:10 -04:00
Drew DeVault
f5a9bd5cb7
Merge pull request #1700 from swaywm/move-cmd-full
...
Implement move [left|right|up|down]
2018-04-07 11:19:25 -04:00
Drew DeVault
640232eb22
Revert "Break everything^W^WUse wlr_box for sway_container"
2018-04-06 16:13:26 -04:00
Drew DeVault
764489e737
Break everything^W^WUse wlr_box for sway_container
2018-04-06 15:38:37 -04:00
Drew DeVault
603e0e42c5
Add debug tree view
2018-04-06 11:49:27 -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
Drew DeVault
57954a2b24
Implement move [left|right|up|down]
...
The exact semantics of this command are complicated. I'll describe each
test scenario as s-expressions. Everything assumes L_HORIZ if not
specified, but if you rotate everything 90 degrees the same test cases
hold.
```
(container (view a) (view b focus) (view c))
-> move left
(container (view b focus) (view a) (view c))
(container (view a) (view b focus) (view c))
-> move right
(container (view a) (view c) (view b focus))
(container L_VERT (view a))
(container L_HORIZ
(view b) (view c focus))
-> move up
(container L_VERT
(view a) (view c focus))
(container L_HORIZ (view b))
(workspace
(view a) (view b focus) (view c))
-> move up
(workspace [split direction flipped]
(view b focus)
(container (view a) (view c)))
(workspace
(view a) (view b focus) (view c))
-> move down
(workspace [split direction flipped]
(container (view a) (view c))
(view b focus)))
Note: outputs use wlr_output_layout instead of assuming that i+/-1 is
the next output in the move direction.
(root
(output X11-1
(workspace 1))
(output X11-2
(workspace 1 (view a focus) (view b)))))
-> move left
(root
(output X11-1
(workspace 1 (view a focus)))
(output X11-2
(workspace 1 (view b)))))
(root
(output X11-1
(workspace 1
(container (view a) (view b)))
(output X11-2
(workspace 1 (view c focus)))))
-> move left
(root
(output X11-1
(workspace 1
(container (view a) (view b))
(view c focus)))
(output X11-2
(workspace 1)))
```
2018-04-06 09:43:52 -04:00
emersion
88e3e5ea5d
Fix wl_output enter/leave events
...
Fixes #1739
2018-04-06 00:10:17 -04:00
emersion
c2b1beef15
Remove L_TYPES
2018-04-05 23:22:08 -04:00
Drew DeVault
f63d9417cd
Merge pull request #1743 from emersion/subsurface-damage-tracking
...
Damage tracking for view children
2018-04-05 22:53:21 -04:00
emersion
641807d920
Handle unmanaged surfaces motion
2018-04-05 18:48:35 -04:00
emersion
d65d001aa5
Fix desktop_damage_whole_surface
2018-04-05 18:38:50 -04:00
emersion
076bedb85e
Add container_damage_whole
2018-04-05 18:31:19 -04:00
emersion
1c91d0c10f
Add damage tracking for xwayland unmanaged surfaces
2018-04-05 17:39:17 -04:00
emersion
07f3bb3ad1
Handle xwayland configure requests for unmanaged surfaces
2018-04-05 17:22:39 -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
Drew DeVault
f242362e7e
Handle output removal on swaybar
2018-04-05 16:04:30 -04:00
emersion
45f93e1650
Accumulate damage from subsurfaces
2018-04-05 15:20:45 -04:00
emersion
dcd15a2d3d
Implement shell views
2018-04-05 11:40:39 -04:00
Drew DeVault
f77986338f
Implement resize command
2018-04-05 00:03:20 -04:00
emersion
8eff00f723
Remove unused SWAY_VIEW_TYPES
2018-04-04 22:03:14 -04:00
emersion
679c51e421
Remove unused sway_view.unmanaged_link
2018-04-04 22:02:40 -04:00
Tony Crisci
fc9398a42e
Implement opacity command
2018-04-04 21:57:05 -04:00
Drew DeVault
d2d050d59c
Address review feedback
2018-04-04 18:47:48 -04:00
Drew DeVault
46b388995d
Add hidpi support to swaylock
2018-04-04 18:47:48 -04:00
Drew DeVault
b7e7794912
Implement input-inhibit in sway, swaylock
2018-04-04 18:47:48 -04:00
Drew DeVault
06fbd51ff5
Add input inhibitor to input manager
2018-04-04 18:47:48 -04:00
Drew DeVault
d053acbed6
R E N D E R I N G
2018-04-04 18:47:48 -04:00
Drew DeVault
066143adef
Add password buffer, refactor rendering/surfaces
2018-04-04 18:47:48 -04:00
Drew DeVault
1008d4cc91
Split seat code into its own file
2018-04-04 18:47:48 -04:00
Drew DeVault
b32bf595ae
Initial swaylock port
2018-04-04 18:47:48 -04:00
Drew DeVault
a28730edee
Move swaybg background rendering into common/
...
swaylock will use it too
2018-04-04 18:47:48 -04:00
Tony Crisci
741e3959e3
Merge branch 'wlroots' into split-containers2
2018-04-04 00:20:44 -04:00
Drew DeVault
2605950769
Add hidpi support to swaybar
2018-04-03 21:06:28 -04:00
Tony Crisci
fa004dd0d7
move output create to its own file
2018-04-03 20:00:09 -04:00
Tony Crisci
a001890fb8
move workspace create to workspace.c
2018-04-03 19:52:17 -04:00
Tony Crisci
eca4468c2c
fix old todos
2018-04-03 17:06:57 -04:00
Tony Crisci
9b567fc37e
clean up container_get_default_layout
2018-04-03 13:23:34 -04:00
Tony Crisci
065887bb7b
move container_set_layout to layout.h
2018-04-03 13:16:23 -04:00
Tony Crisci
fcbcbf34ad
make container_finish private
2018-04-03 13:10:51 -04:00
Tony Crisci
5f4761c4f4
unify workspace create functions
2018-04-03 13:08:45 -04:00
Tony Crisci
09d448ea2d
unify container destroy functions
2018-04-03 12:34:01 -04:00
Tony Crisci
b4c5f79725
move view and workspace destructors to container.c
2018-04-03 12:25:19 -04:00
Tony Crisci
2992b72d61
change reap container approach
2018-04-02 22:37:21 -04:00
Drew DeVault
56078edd65
Give exclusive focus to layers above shell layer
2018-04-02 21:09:09 -04:00
Tony Crisci
2c165e1288
fix more close segfaults
2018-04-02 21:01:33 -04:00
Tony Crisci
a89096278b
Merge branch 'wlroots' into split-containers
2018-04-02 19:22:10 -04:00
Tony Crisci
d434da5632
Merge branch 'wlroots' into split-containers
2018-04-02 16:09:27 -04:00
emersion
a4a241697a
Merge branch 'wlroots' into view-redesign
2018-04-02 15:30:58 -04:00
emersion
0c0cc79282
Merge pull request #1699 from acrisci/seat-fixes
...
Seat fixes and cleanup
2018-04-02 15:24:25 -04:00
emersion
2f64ce86c4
Xwayland unmanaged views aren't views anymore
2018-04-02 14:35:43 -04:00
Drew DeVault
4134407fa9
Merge pull request #1690 from swaywm/i3bar-json
...
I3bar json
2018-04-02 14:23:01 -04:00
Tony Crisci
2187684bd0
Merge branch 'wlroots' into split-containers
2018-04-02 14:06:04 -04:00
Tony Crisci
5e024278a6
Merge branch 'wlroots' into seat-fixes
2018-04-02 13:23:43 -04:00
Tony Crisci
22287b42bf
dont copy input config
2018-04-02 13:19:58 -04:00
Tony Crisci
35445b40a2
remove unused attachment config
2018-04-02 12:16:00 -04:00
Drew DeVault
b2d871cfe2
Partially implement move command
...
Works:
- move [container|window] to workspace <name>
- Note, this should be able to move C_CONTAINER but this is untested
- move [workspace] to output [left|right|up|down|<name>]
Not implemented yet:
- move [left|right|up|down]
- move scratchpad
- move position
2018-04-02 11:12:18 -04:00
Drew DeVault
0cbd2a4f49
Send click events for i3bar blocks
2018-04-02 11:09:23 -04:00
Drew DeVault
333dbcbe72
Render i3bar blocks
2018-04-02 11:09:23 -04:00
Drew DeVault
ee85c91831
Demarcate i3bar JSON into individual updates
2018-04-02 11:09:23 -04:00
emersion
61fabede14
Address review comments
2018-04-02 10:57:45 -04:00
Tony Crisci
53bb7ea996
dont copy seat config on the seat
2018-04-02 10:37:31 -04:00
Tony Crisci
0828c77251
rename input-manager functions
2018-04-02 08:49:38 -04:00
Tony Crisci
e677c5b204
rename seat functions
2018-04-02 08:45:37 -04:00
Tony Crisci
81556f4b2a
add docstrings and todos
2018-03-31 20:52:34 -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
Tony Crisci
6f7b33e691
handle container destroy in the seat
2018-03-31 15:38:59 -04:00
Tony Crisci
7706d83160
basic split containers
2018-03-31 15:37:16 -04:00
Drew DeVault
f2332dc75c
Address review feedback
2018-03-31 15:20:43 -04:00
Drew DeVault
9b38ef950f
Implement focus_follows_mouse
...
Also contains two other small changes:
- Clicking any button will focus the container clicked (not just left)
- Remove seamless_mouse (doesn't make sense on wlroots)
2018-03-31 13:05:45 -04:00
Drew DeVault
6a1a94b87c
Merge pull request #1678 from emersion/xwayland-xcursor
...
Set xwayland cursor
2018-03-31 00:35:50 -04:00
emersion
b237fa0b22
Set xwayland cursor
2018-03-31 00:24:38 -04:00
Drew DeVault
2a5108a278
Implement workspace switch on click
2018-03-30 22:44:08 -04:00
Drew DeVault
ae14dfc7ae
Implement scroll wheel workspace switching
2018-03-30 22:44:08 -04:00
Drew DeVault
8d1425bde9
Initialize seat pointer in swaybar
2018-03-30 22:44:08 -04:00
emersion
9665642765
Merge branch 'wlroots' into client-cursors
2018-03-30 19:04:06 -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
Tony Crisci
7e0d430a0c
Merge branch 'wlroots' into wlroots-xwayland-map
2018-03-30 16:16:12 -04:00
Drew DeVault
49379dd0fc
Fix workspace deletion edge cases
2018-03-30 13:49:34 -04:00
emersion
cf09ea184b
Use the new map/unmap events for xwayland views
2018-03-30 13:34:25 -04:00
emersion
1592543fd6
Merge pull request #1659 from swaywm/default-orientation
...
Add default_orientation command
2018-03-30 11:49:45 -04:00
Drew DeVault
b6b674fd76
Merge pull request #1657 from emersion/render-fixes
...
Misc minor fixes
2018-03-30 11:42:59 -04:00
emersion
6c9d67b105
Handle set_cursor requests from clients
...
Allow clients to set a custom cursor if they have the seat's
pointer focus.
2018-03-30 10:53:18 -04:00
Drew DeVault
01af343912
Destroy empty workspaces when moving away
2018-03-30 10:47:19 -04:00
Drew DeVault
69eb021767
Add default_orientation command
2018-03-30 10:43:55 -04:00
emersion
981827ca42
Cleanup and remove global renderer reference
2018-03-30 00:49:27 -04:00
Drew DeVault
2a90d26ebe
Fix issues with swaybar on DRM
2018-03-30 00:30:38 -04:00
Drew DeVault
f26ecd9f58
Merge remote-tracking branch 'origin/wlroots' into swaybar-layers
2018-03-30 00:04:04 -04:00
Tony Crisci
8f490d7d2d
Fix oversights from previous pull request
2018-03-29 23:53:38 -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
Tony Crisci
2778edef97
arrange windows
2018-03-29 23:15:39 -04:00
Tony Crisci
92c58b1e63
rename container_for_each_descendent
2018-03-29 23:08:59 -04:00
Drew DeVault
8efee109ad
Implement modes
2018-03-29 22:11:08 -04:00
Drew DeVault
2719ddfe5e
Spawn swaybars when outputs are added
2018-03-29 22:11:08 -04:00
Drew DeVault
5c9cdbcdd2
Add swaybg_command
2018-03-29 22:11:08 -04:00
Drew DeVault
569b2bfd5d
Move bar config into its own file
2018-03-29 22:11:08 -04:00
Drew DeVault
bf7a4cd0eb
Add bar configuration commands
2018-03-29 22:11:08 -04:00
Drew DeVault
6836074fed
Implement enough IPC for swaybar to work
2018-03-29 22:11:08 -04:00
Drew DeVault
0d0ab7c5ce
Implement status line
...
Does not yet support i3bar json protocol
2018-03-29 22:11:08 -04:00
Drew DeVault
a76829f375
Some layer shell fixes
...
Based on the corresponding rootston changes
2018-03-29 22:11:08 -04:00
Drew DeVault
1e8faeec02
Pixel-perfect rendering
2018-03-29 22:11:08 -04:00
Drew DeVault
86ba0fc15d
Re-render bar on IPC updates
2018-03-29 22:11:08 -04:00
Drew DeVault
3399ad9840
Round up workspaces on each output
2018-03-29 22:11:08 -04:00
Drew DeVault
e5e8094dc3
Only utilize the configured outputs
2018-03-29 22:11:08 -04:00
Drew DeVault
5c9ad035db
Wire up basic IPC support
2018-03-29 22:11:08 -04:00
Drew DeVault
cab1352801
Start port of swaybar to layer shell
...
This starts up the event loop and wayland display and shims out the
basic top level rendering concepts. Also includes some changes to
incorporate pango into the 1.x codebase properly.
2018-03-29 22:11:08 -04:00
Tony Crisci
4c394a0e9e
address feedback
2018-03-29 21:22:39 -04:00
Tony Crisci
62d1b4cb96
fix container_get_in_direction name
2018-03-29 18:17:31 -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
Tony Crisci
83d09cf594
remove swayc_t typedef
2018-03-29 14:31:10 -04:00
Tony Crisci
874f009866
move tree includes to their own directory
2018-03-29 14:21:42 -04:00
Drew DeVault
8d6bce02af
Address review feedback
2018-03-28 18:11:03 -04:00
Drew DeVault
68cfa7ef67
Render layer surfaces and respect exclusive zone
2018-03-28 16:42:13 -04:00
Drew DeVault
0c8a64942e
Add initial layer shell skeleton
2018-03-28 15:47:22 -04:00
Drew DeVault
d39bda76c4
Address review comments
2018-03-28 14:43:23 -04:00
Drew DeVault
e9922ec524
Remove obsolete client code
2018-03-28 14:25:19 -04:00
Drew DeVault
632bb948b7
Add solid-color rendering to swaybg
2018-03-28 14:25:19 -04:00
emersion
01beee5826
Update wlroots API
...
Breaking changes in wlr_xdg_shell_v6 and wlr_renderer have been
made upstream.
2018-03-19 23:31:18 +01:00
Tony Crisci
02804584e5
ipc new window event
2018-02-27 19:53:15 -05:00
Drew DeVault
8ad26c8afd
Send surface enter/leave events
2018-02-25 17:23:36 -05:00
Tony Crisci
ac8269d536
take seat param for handle_command and rename
2018-02-24 12:50:24 -05:00
Tony Crisci
6becfc1431
update log.h for latest wlr
2018-02-24 12:49:42 -05:00
Tony Crisci
66d1e0b313
basic layout command
2018-02-22 18:37:14 -05:00
Tony Crisci
4b3aa59b8b
rename new_input listener on input-manager
2018-02-20 19:09:38 -05:00
Tony Crisci
316effd7b1
make handle_output_destroy() static
2018-02-20 19:06:56 -05:00
Tony Crisci
66a975038c
add doc to sway_seat_get_focus_inactive()
2018-02-20 19:01:02 -05:00
Tony Crisci
f0ca2cb5c3
use quotes for container include
2018-02-17 19:05:17 -05:00
Tony Crisci
083e11ac7c
fix build for latest api
2018-02-14 15:08:10 -05:00
Tony Crisci
7dfbf06de9
output destroy
2018-02-14 14:51:51 -05:00
Tony Crisci
06c71f115b
input device destroy
2018-02-14 14:47:59 -05:00
Tony Crisci
946d9459c5
get swayc in direction
2018-02-14 14:30:27 -05:00
Tony Crisci
93084c9cf8
remove old focus member
2018-02-10 19:53:50 -05:00
Tony Crisci
145b4fdf58
use bfs iterator to collect focus stack
2018-02-10 16:52:45 -05:00
Tony Crisci
bfd2e85364
refactor workspace.h
2018-02-10 15:15:27 -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
Drew DeVault
8231f99c12
Remove include/sway/old/
2018-01-30 20:51:57 -05:00
Drew DeVault
a686fb07ae
Execute pending commands when Xwayland is ready
2018-01-30 20:01:49 -05:00
Dominique Martinet
5766f426aa
config reload: destroy old seat when removed from config
...
This adds new sway_seat_destroy and sway_cursor_destroy helpers
and compare new and old config on free
2018-01-22 07:26:37 +01:00
emersion
0c58673c6a
Merge pull request #1574 from acrisci/config-refactor
...
Command criteria
2018-01-22 01:16:23 +01:00
Tony Crisci
5505d84ac2
criteria cleanup
2018-01-21 14:11:41 -05:00
Tony Crisci
0e3eae4baa
view interface
2018-01-21 09:09:53 -05:00
Tony Crisci
6a1d71b8b8
basic command criteria
2018-01-20 16:21:45 -05:00
Tony Crisci
c353e01c85
add kill command
2018-01-20 14:10:11 -05:00
Tony Crisci
cc3c713889
seat config handler context
2018-01-20 11:44:34 -05:00
Tony Crisci
9e0595f26b
input config handler context
2018-01-20 11:34:57 -05:00
Tony Crisci
9f54cd8935
copy config references for input and seat
2018-01-17 09:49:02 -05:00
Tony Crisci
83ddd2d9db
render override redirect
2018-01-14 13:19:21 -05:00
Dominique Martinet
d4ddfec32e
common/log: finish removing most log functions
...
Keep sway_abort and sway_assert and convert them to use wlr_log
functions
2018-01-05 23:40:09 +01:00
Dominique Martinet
67985e9031
sway: change all sway_log to wlr_log
2018-01-05 23:39:46 +01:00
Dominique Martinet
c83900593d
config: add 'set' command
2018-01-05 15:36:20 +01:00
Drew DeVault
91313d3847
Merge pull request #1539 from acrisci/bindings
...
Bindings
2018-01-04 09:47:36 -05:00
Tony Crisci
b01a53abfb
Merge branch 'wlroots' into bindings
2018-01-04 08:00:22 -05:00
Tony Crisci
50e791cadb
binding release
2018-01-04 07:25:52 -05:00
emersion
ead3f1e676
Allow to configure outputs by their identifier
2017-12-29 19:04:16 +01:00
emersion
21c61f1c09
Refactor output command, add output enable
2017-12-27 21:23:30 +01:00
Tony Crisci
eea80e7276
keyboard translate keysyms
2017-12-27 13:20:28 -05:00
Tony Crisci
ba69f06695
binding config
2017-12-27 12:31:06 -05:00
Tony Crisci
f2985000f3
ipc get_inputs
2017-12-18 14:27:38 -05:00
Tony Crisci
a949d7de5a
Merge branch 'wlroots' into feature/input
2017-12-18 11:01:11 -05:00
Drew DeVault
eb4f66f785
Merge pull request #1526 from emersion/fractional-output-scale
...
Add support for fractional output scale
2017-12-18 09:21:30 -05:00
emersion
c815d6d1a9
Add support for fractional output scale
2017-12-18 14:13:07 +01:00
emersion
4e2ab53119
Add IPC get_outputs
2017-12-18 14:06:03 +01:00
Tony Crisci
88bcd43ebf
seat fallback config
2017-12-17 10:39:22 -05:00
Tony Crisci
0256cd1473
fix keyboard hotplugging
2017-12-16 19:16:00 -05:00
Tony Crisci
f16aa3c0ad
rename config apply cmds
2017-12-16 12:14:24 -05:00
Tony Crisci
d3d3604760
fix header includes
2017-12-16 08:33:22 -05:00
Tony Crisci
9fa70ce426
Merge branch 'wlroots' into feature/input
2017-12-16 07:33:23 -05:00
Tony Crisci
9eecbb5d8a
xkb config
2017-12-15 05:22:51 -05:00
Tony Crisci
92fef27eaa
basic configuration
2017-12-14 11:11:56 -05:00
emersion
a4619e98c4
Update output containers on output layout change
2017-12-13 15:52:18 +01:00
emersion
d293c42942
Update output container box in event handler
2017-12-12 21:09:51 +01:00
emersion
c7abb77f22
Listen to output layout change
2017-12-12 20:02:01 +01:00
emersion
f3d880b0ec
Add scale and transform events to sway_output
2017-12-12 19:40:17 +01:00
Tony Crisci
c173d30b92
seat configuration
2017-12-12 10:55:20 -05:00
Tony Crisci
163edc5a90
sway input device
2017-12-12 08:29:37 -05:00
Tony Crisci
462a451328
input config
2017-12-11 07:55:01 -05:00
Tony Crisci
9ae906cd37
sway pointer
2017-12-10 16:57:38 -05:00
Tony Crisci
4d449743c5
keyboard remove
2017-12-10 15:37:17 -05:00
Tony Crisci
609f63934a
basic keyboard
2017-12-10 15:01:09 -05:00
Tony Crisci
21626e8153
seat focus on button press
2017-12-10 11:11:47 -05:00
Tony Crisci
0fdecb4d3a
Merge branch 'wlroots' into feature/input
2017-12-10 10:25:56 -05:00
Tony Crisci
e69b052a6d
working pointer motion
2017-12-10 08:48:44 -05:00
Tony Crisci
7c67bea942
sway xcursor manager
2017-12-09 11:51:28 -05:00
Tony Crisci
d76e745b73
input include directory
2017-12-08 08:07:47 -05:00
Tony Crisci
ec7fc42a00
sway cursor
2017-12-08 08:04:03 -05:00
Tony Crisci
f6f63f60d6
basic input manager and seat
2017-12-07 09:58:32 -05:00
Tony Crisci
21ce20885a
rename input to input-manager
2017-12-07 07:35:10 -05:00
emersion
8764dc26c6
Add new_output_config, update root container size on output hotplug
2017-12-06 19:45:43 +01:00
emersion
c25ad5e7c4
Merge branch 'wlroots' into output-config
2017-12-06 19:11:46 +01:00
Tony Crisci
338a0399f8
input skeleton
2017-12-06 08:28:46 -05:00
Tony Crisci
47f268d8fa
view activate
2017-12-06 07:34:33 -05:00
emersion
68ae989cee
Init, merge output config params, use wlr_output_layout
2017-12-06 12:57:13 +01:00
emersion
aaae59026f
Add output config
2017-12-06 12:36:06 +01:00
Drew DeVault
3fe64482bb
Merge pull request #1498 from emersion/config
...
Add minimal config subsystem
2017-12-05 12:35:51 -05:00
emersion
7e81d304a3
Remove wlc includes
2017-12-05 18:21:48 +01:00
Tony Crisci
8bdf3b1b02
view set position
2017-12-05 11:02:31 -05:00
emersion
90f7f1a0e6
Add minimal config subsystem
2017-12-05 10:40:55 +01:00
Tony Crisci
0896b68675
Merge branch 'wlroots' into feature/xwayland
2017-12-04 07:32:25 -05:00
Tony Crisci
1870f116ba
xwayland shell
2017-12-04 07:28:47 -05:00
Tony Crisci
9afcfd44c4
wl-shell: class instead of app_id
2017-12-03 17:00:17 -05:00
Tony Crisci
823f6ee122
Merge branch 'wlroots' into feature/wl-shell
2017-12-03 14:22:06 -05:00
Tony Crisci
8239067da4
basic wl-shell
2017-12-03 14:21:26 -05:00
Tony Crisci
802e7392f8
use "size" instead of "dimensions"
2017-12-03 11:01:44 -05:00
Tony Crisci
59db38ce17
sway wl_shell
2017-12-03 10:49:13 -05:00
Tony Crisci
421f49fe03
basic get_tree
2017-12-03 08:33:52 -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