Commit graph

287 commits

Author SHA1 Message Date
Mikkel Oscar Lyderik 843e2ad2c1 Only send modifier event once for active modifiers
This makes sure that a modifier event is only sent for active bar
modifiers, and that it is only sent once for each of those modifiers.

An active bar modifier is a modifier defined for a bar with `mode hide`
and `hidden_state hide`.
2016-01-05 23:18:59 +01:00
Mikkel Oscar Lyderik c20c63b677 Send IPC modifier event on bar_modifier up/down
Detects when a bar modifier key is pressed/released and sends a modifier
IPC event to any listeners (usually swaybars).

This way a swaybar can listen on the modifier event and hide/show the
bar accordingly (not implemented yet)

The modifier event looks like this:

    {
      "change": "pressed", // or released
      "modifier": "Mod4"
    }
2016-01-05 02:25:56 +01:00
crondog b755fd073e Return focus to fullscreen view
This fixes https://github.com/SirCmpwn/sway/issues/431 by returning
focus to the fullscreen view. Also it fixes the issue with the
fullscreen view pointer not being set which did my head in
2016-01-05 10:55:29 +11:00
Mikkel Oscar Lyderik 7727c9efbc Detect bar modifier pressed/released 2016-01-05 00:49:44 +01:00
Drew DeVault d409620a55 Fix use-after-free when closing fullscreen views 2015-12-29 00:04:12 -05:00
S. Christoffer Eliesen b18f004210 handlers: geometry_request: Better debug output.
Previous output was confusing.
2015-12-28 14:58:17 +01:00
S. Christoffer Eliesen e45fd9b6c5 extensions: Track panels by wl_resource, position per panel.
Track each panel separately via its wl_resource. `set_panel_position`
might be called before `set_panel`, so reuse panel config.

Place the position in panel_config so that each panel has its own
position.
2015-12-20 12:54:34 +01:00
Drew DeVault 3282163f64 Implement compositor support for swaylock
This makes swaylock more or less work.
2015-12-18 19:30:19 -05:00
Drew DeVault f6da4dda4b Bring unmanaged windows to front on output arrange
Fixes #312
2015-12-16 19:20:34 -05:00
Mikkel Oscar Lyderik 3658777e47 Use wlc_point instead of deprecated wlc_origin
Struct was renamed in wlc, use the new name.
2015-12-01 21:04:34 +01:00
Drew DeVault e59cffcea2 Support desktop shell panels in compositor 2015-11-29 12:03:13 -05:00
S. Christoffer Eliesen a06cb7cd01 criteria: Add. Learn for_window command.
A criteria is a string in the form of `[class="regex.*" title="str"]`.
It is stored in a struct with a list of *tokens* which is a
attribute/value pair (stored as a `crit_token` struct). Most tokens will
also have a precompiled regex stored that will be used during criteria
matching.

for_window command: When a new view is created its metadata is tested
against all stored criteria, and if a match is found the associated
command list is executed.

Unfortunately some metadata is not available in sway at the moment
(specifically `instance`, `window_role` and `urgent`). Any criteria
string that tries to match an unsupported attribute will fail.

(Note that while the criteria code can be used to parse any criteria
string it is currently only used by the `for_window` command.)
2015-11-25 14:34:33 +01:00
Drew DeVault 5728307520 Add wallpapers to output command 2015-11-19 18:55:17 -05:00
Drew DeVault 4a1584be53 Fix background extensions
Thanks @Cloudef, it works great
2015-11-19 07:23:11 -05:00
Drew DeVault 65b8a5c3ce Add background handling
This does not work as expected. I think the problem is on the wlc side.
Please review, @Cloudef. To reproduce the issues:

1. Run sway
2. Open terminal in sway
3. Run swaybg

swaybg will create a surface and ask to have it set as the background,
but wlc_handle_from_wl_surface_resource will return 0. If the swaybg
surface is a shell surface, then it works - but wlc complains about the
pointer type and segfaults as soon as the pre-render hook tries to draw
the background.
2015-11-18 22:14:57 -05:00
S. Christoffer Eliesen 236f26f62e output: Support multiple adjacent outputs.
When querying for an adjacent output we now need an absolute position in
order to know which adjacent output that matches. (The position is
either the current mouse position or the center of the currently focused
container, depending on context.)

If two outputs have one edge each that at least partially align with
each other they now count as adjacent.

Seamless mouse is affected by this and now properly moves and positions
itself between outputs with "uneven" placement (as long as they have at
least some part of the edge adjacent to each other).

When focusing or moving a container in a specified direction the center
of the current focused container decides where to look for an adjacent
output. So if e.g. an output has two adjacent outputs to the right and a
"focus right" command is issued then it's the placement of the currently
focused container that decides which output actually gets focused.

Also, if an output has at least one output adjacent in some direction
but the entire edge is not covered (ie. it has "holes" with no outputs),
then the algorithm will choose the output that is closest to the
currently focused container (this does not apply to seamless mouse, the
pointer will just stop at the edge in that case).
2015-11-16 21:32:18 +01:00
Drew DeVault cd161aa985 We somewhat more wlc_point now
Apparently I missed some

cc @Cloudef
2015-11-14 17:14:23 -05:00
S. Christoffer Eliesen 5ba47d4a44 input_state: Remove mouse_origin (x&y). Query wlc instead. 2015-10-29 18:02:02 +01:00
S. Christoffer Eliesen 4799d07ac1 input_state: Extract 'pointer_position_set' function from handlers. 2015-10-29 16:37:19 +01:00
S. Christoffer Eliesen 865b30f138 container: Move container_under_pointer here from handlers. 2015-10-29 16:37:19 +01:00
S. Christoffer Eliesen fabcf7c678 handlers: Pass workspace to workspace_switch, not output. 2015-10-27 23:22:57 +01:00
S. Christoffer Eliesen c6bb23b7dd sway/output: Create, move code from handlers.c here. 2015-10-25 13:14:23 +01:00
Drew DeVault 010368150b Update set_origin to match wlc changes 2015-10-23 14:29:35 -04:00
S. Christoffer Eliesen c1479701de seamless_mouse: Move pointer only if successfully changed workspace.
If e.g. a window has a popup open then that will lock the current focus,
making a workspace switch denied.

So don't move the mouse pointer in such cases.
2015-10-23 16:35:48 +02:00
S. Christoffer Eliesen 1f08106b0a handlers: Don't switch output when mouse button is pressed.
(E.g. if the user is using a scrollbar at the edge of the screen then
switching workspace would cancel the scroll.)
2015-10-23 16:35:48 +02:00
S. Christoffer Eliesen af30a1b67c ipc,commands,config: Replace cmd_status enum with cmd_results struct.
In i3 the ipc reply will contain a human readable error message, and
this patch replicates that behaviour.

However, that error message is also useful for logging, which this
patch takes advantage of.

E.g. instead of logging errors directly in commands.c/checkargs, it is
fed back to the caller which eventually ends up logging everything with
maximum context available (config.c/read_config).

So instead of logging e.g. "Error on line 'exit'" it will now log:
"Error on line 'exit': Can't execute from config."
2015-10-22 23:36:24 +02:00
S. Christoffer Eliesen b093a5d16f handlers: Fix swapped top/bottom for seamless transitions. 2015-10-22 23:07:27 +02:00
Drew DeVault 2c100105bf Move pointer during seamless transitions 2015-10-22 16:44:29 -04:00
S. Christoffer Eliesen edf33aad29 config: Add "seamless_mouse" to decide if pointer crosses output edges. 2015-10-22 01:39:12 +02:00
S. Christoffer Eliesen fc1bacf034 Switch to adjacent output when hitting output edge.
(Currently, after switching output the relative position of the mouse
stays the same.)
2015-10-22 01:18:51 +02:00
taiyu 4944996170 Merge branch 'master' of https://github.com/taiyu-len/sway
merge
2015-09-22 09:41:32 -07:00
taiyu 6c33f8122a #184 2015-09-22 09:41:01 -07:00
taiyu d2e2b04bfd minor fix 2015-09-18 06:52:04 -07:00
Drew DeVault e505abfe75 Revert "new_workspace null behavior + testmap functions + regex"
This reverts commit e1d18e42a8.

Fixes #180

cc @taiyu-len
2015-09-13 19:46:16 -04:00
taiyu e1d18e42a8 new_workspace null behavior + testmap functions + regex 2015-09-12 02:38:03 -07:00
taiyu aaa0923bc4 cmd status + workspace ws output op 2015-09-10 11:07:40 -07:00
taiyu 71af5b7dde config modes 2015-09-07 14:29:40 -07:00
taiyu 5408d34c9c config_path cleanup 2015-09-06 22:48:43 -07:00
taiyu 782729be13 properly free cmd_queue, should partially fix #165 from what i tell from its log. 2015-09-02 08:51:26 -07:00
taiyu 7fbb8b785e #154 destroy view handler properly destroys views 2015-08-30 16:28:21 -07:00
Luminarys 28e937020a Made scratchpad handling identical to i3 2015-08-29 21:14:13 -05:00
taiyu 836f24b047 #149 change focus before pointer_mode 2015-08-28 23:43:52 -07:00
taiyu 9acd3d2068 #149 fix, reorder floating windows on click. 2015-08-28 23:01:48 -07:00
taiyu 1924399166 #148 fix, choose non-floating view for inserting container 2015-08-28 22:51:36 -07:00
taiyu da2d992563 style 2015-08-28 12:31:41 -07:00
taiyu b359429e90 fix issue #140, dont set pointer mode if no floating_mod 2015-08-28 12:30:59 -07:00
Luminarys acb3fbdfb5 Added in default_orientation handling 2015-08-27 21:52:59 -05:00
taiyu d115335951 move workspace from dead output to other output 2015-08-26 21:25:57 -07:00
Drew DeVault adcf89cfe4 Do not pass modifiers when getting keysyms from wlc
Fixes #124

Keyboard handling can likely be simplified after this change.
2015-08-26 08:24:23 -04:00
Drew DeVault 10eb58667b Merge pull request #133 from minus7/wlc-keyboard-fix
fixed keyboard handling
2015-08-25 16:39:25 -04:00
minus bfdff821c3 fixed keyboard handling
handle_key does not get the keysym from wlc anymore
2015-08-25 22:38:16 +02:00
taiyu 225c2fbe5b fixed segfault on exit + a little fixup of that floatfocus pr 2015-08-25 13:29:33 -07:00
Drew DeVault 0bf380a0b1 Merge pull request #131 from nicklaswj/master
Focus floating window, if any, when the last tiling window has been closed
2015-08-25 16:13:06 -04:00
Nicklas Warming Jacobsen 227d5dbe08 code style clean up 2015-08-25 22:00:39 +02:00
Nicklas Warming Jacobsen a70b9a9a7a removed stupid test code 2015-08-25 20:25:38 +02:00
Nicklas Warming Jacobsen 7a1c36716a Focus floating window, if any, when the last tiling has been closed 2015-08-25 20:15:23 +02:00
minus ca89ba83a8 changed view visibility to be bool
view_visibility enum remains with one constant that is the mask to wlc's view masking
2015-08-25 20:13:35 +02:00
minus f22c937953 refactored view visibility
- replace visibilty mask integers with an enum
- set output's visibilty mask on creation
- added update_visibility to manually update a containers visibility (e.g. when it moved to an invisible workspace)
2015-08-25 18:24:15 +02:00
Drew DeVault f30fb2452c Minor fixes to keyboard handling 2015-08-23 15:52:36 -04:00
taiyu 51ab3c9180 merge 2015-08-23 12:34:18 -07:00
Drew DeVault 1ac0c8cd47 Refactor keyboard to consider modified keysyms
Press Shift
Press 0       # Reads as ')'
Release Shift
Release 0     # Reads as '0' but we now recognize it as the same
2015-08-23 15:28:49 -04:00
Luminarys 5bfed9b213 Cleanup and minor adjustments to disabling 2015-08-23 13:18:07 -05:00
Luminarys e01cf0b566 Added in glitchy disabling 2015-08-23 12:23:01 -05:00
Luminarys 98fad060e2 Added in glitchy disabling 2015-08-23 12:23:01 -05:00
Drew DeVault ac2034df99 Handle wlc log events 2015-08-23 13:08:04 -04:00
taiyu d72cc92541 style 2015-08-23 07:59:18 -07:00
taiyu f1e38be09f no mode for fullscreen 2015-08-22 21:16:46 -07:00
taiyu 42d5d9a177 mouse tile resize mode done 2015-08-22 21:03:45 -07:00
taiyu e139de0857 floating/tiling move + floating resize cleaned and fixed 2015-08-22 18:01:38 -07:00
Luminarys c0b68aa6fc Added in bspwm like view swapping 2015-08-22 01:03:18 -05:00
Luminarys f6b16ca089 Refactored resizing functions into resize.c 2015-08-21 22:26:11 -05:00
Luminarys ad1ca31dd5 Altered resize command to prevent resizing past min h/w 2015-08-21 21:22:29 -05:00
Luminarys e067913fb8 More resize fixes 2015-08-21 20:50:17 -05:00
Luminarys 63a3236064 Fixed resizing 2015-08-21 19:37:19 -05:00
Drew DeVault 39041d07b5 Merge remote-tracking branch 'taiyu-len/master' 2015-08-21 17:00:00 -04:00
Luminarys f7a6dd7ce9 Minor fix to resizing with mouse 2015-08-21 15:36:37 -05:00
taiyu d2e1c660b1 swayc_is_fullscreen 2015-08-21 10:45:18 -07:00
taiyu dde8bfe728 check floating mod for resizing windows, and dont send click 2015-08-21 10:34:37 -07:00
taiyu 5a67628ad9 Merge branch 'master' of https://github.com/SirCmpwn/sway
merge
2015-08-21 10:28:49 -07:00
taiyu 1a1ac64662 bugfixes, renames 2015-08-21 10:28:37 -07:00
Luminarys a8eab5492a Added in proper resize locking 2015-08-21 11:19:06 -05:00
Luminarys de86c5f4ea Cleanup and minor fixes 2015-08-21 09:24:26 -05:00
Drew DeVault 464b49eda2 Merge pull request #101 from Luminarys/master
Added in basic resizing command.
2015-08-21 07:12:05 -04:00
Luminarys 96ab21b276 Fixes to resizing and added in resize lock once boundaries are exceeded 2015-08-21 00:49:47 -05:00
Luminarys 461da7f87f Added in bspwm like mouse resizing 2015-08-21 00:17:26 -05:00
taiyu 36e07e9ebc find_parent_by_type 2015-08-20 09:52:54 -07:00
taiyu 927ef0a5ec Merge branch 'master' of https://github.com/SirCmpwn/sway
merging
2015-08-20 05:08:04 -07:00
taiyu f5fde7c45c style 2015-08-20 05:06:22 -07:00
Drew DeVault 85ae987515 Fix compiler warning 2015-08-20 07:38:40 -04:00
taiyu 5ff0619ca1 input state, find_container_in_direction 2015-08-19 20:22:15 -07:00
taiyu 470b4dfbae key_state.ch, and command conflicts resolved 2015-08-19 18:59:27 -07:00
Drew DeVault 4db89b5fe4 Deal with more xkb bullshit 2015-08-19 21:14:34 -04:00
Drew DeVault e5d3074d70 Whitelist a handful of characters for keys
Ones that don't change when you hold shift
2015-08-19 21:04:34 -04:00
Drew DeVault 1d8591d902 Improve key handling somewhat
XKB is fucking bullshit
2015-08-19 20:52:52 -04:00
Drew DeVault 84a778b688 Improve key buffer handling 2015-08-19 20:12:05 -04:00
Drew DeVault 2dabca03f4 Remove logging of all key presess
This makes the logs a bit too hard to read
2015-08-19 19:55:40 -04:00
Alexander 'z33ky' Hirsch c068f47ce3 Fix potential crash when toggling fullscreen mode 2015-08-20 02:30:22 +02:00
taiyu b79a49a394 use enums for pointer click names 2015-08-19 15:44:13 -07:00
taiyu a31f23f90c fixed active_workspace update on focus change 2015-08-19 15:22:55 -07:00
taiyu 269d6ba4ea fixed 2015-08-19 13:27:06 -07:00
taiyu 48a983316c floating mode_toggle 2015-08-19 13:02:29 -07:00
Luminarys c29214f348 Minor style fix 2015-08-19 14:14:54 -05:00
taiyu e53a95c60d style 2015-08-19 11:15:13 -07:00
taiyu 7bbb102e2d reset floating view on floating_mod repress 2015-08-19 10:45:40 -07:00
taiyu 8f529536e3 pointer uses its own modifiers 2015-08-19 10:27:53 -07:00
Luminarys daea22bc89 Resize lock fixes 2015-08-19 12:06:00 -05:00
Luminarys 9542f8746a Added in resize locking 2015-08-19 11:28:04 -05:00
taiyu 8205a6fd3b floating_modifier uses mod_keys instead of anykey 2015-08-19 09:09:35 -07:00
taiyu e16a4015ff fixed focus key handler 2015-08-19 00:28:53 -07:00
taiyu 1bf02144e5 fixed floating_modifier related things 2015-08-18 23:52:42 -07:00
Luminarys f718556a85 Removed debugging, added in proper gap resets for config reloads 2015-08-18 21:05:58 -05:00
Luminarys ab43927a47 Minor fixes that might be helpful later 2015-08-18 18:04:46 -05:00
Luminarys 7137be9a3f Fixes to make floating windows work better 2015-08-18 18:03:23 -05:00
Luminarys 3e950c2b1c Basic fixes to floating movement 2015-08-18 18:03:23 -05:00
Drew DeVault cf916bbf6f Improvements to gaps 2015-08-18 18:44:50 -04:00
Luminarys 5b6e489872 More patches for wlc compat 2015-08-18 16:28:24 -05:00
Luminarys 7756f423c3 Removed unnecessary debugging lines 2015-08-18 13:54:52 -05:00
Luminarys 01c6caced6 Added in proper focus handling for floating windows 2015-08-18 13:53:06 -05:00
taiyu 03e83c7ef9 restored fullscreen/focus behavior 2015-08-18 11:22:52 -07:00
Luminarys 23b90d8e69 Fixed mouse clicks from triggering a segfault 2015-08-18 10:39:37 -05:00
Drew DeVault 2139001c9f Coding style enforcement
This was done by hand, so I might have missed things. If anyone knows of
a good C style enforcement tool, let me know.
2015-08-18 07:20:34 -04:00
taiyu af1b3d9755 fixed floating window crashing bug 2015-08-18 04:09:43 -07:00
taiyu b132f67e7b minor fixes 2015-08-18 03:48:41 -07:00
taiyu 63bc0d3b54 more changes 2015-08-18 02:46:14 -07:00
taiyu 4606fb1ee3 merged Luminarys resizing code 2015-08-18 01:07:12 -07:00
taiyu f0fe4a346d style 2015-08-18 00:58:25 -07:00
taiyu 11321ca2dd changed handling of focus, handling of view by type 2015-08-18 00:28:44 -07:00
Luminarys e541ba3d87 Added in basic, but semi-broken moving/resizing functionality to floating windows 2015-08-18 01:33:15 -05:00
Luminarys 1781450e86 Typo fix and more clarification 2015-08-17 14:24:55 -05:00
Luminarys b5f19f0fd3 View destroy handling clean up and clarifications 2015-08-17 14:22:49 -05:00
taiyu 199ba05ef1 put back 2015-08-17 11:44:05 -07:00
taiyu d2995d1eb2 fixed handling of views with override_redirect (dmenu) 2015-08-17 11:24:45 -07:00
taiyu f832c02065 fixed when views dont have names. 2015-08-17 10:02:09 -07:00
Luminarys c9ce8bf1bd Style and other minor fixes 2015-08-17 10:34:39 -05:00
Luminarys 47ec999e71 Fixes to floating and umanaged views 2015-08-17 10:18:06 -05:00
Drew DeVault be2635daa6 Fix format warnings 2015-08-16 22:16:09 -04:00
taiyu 4077238782 sends hidden views to back, visible view to front 2015-08-16 18:59:12 -07:00
taiyu ffb3458322 focus changes when mouse moves over border instead of all mouse movement 2015-08-16 18:41:51 -07:00
taiyu 498cf268f7 unmanaged views handled better 2015-08-16 18:24:46 -07:00
taiyu c024f06631 handle_view_state_request 2015-08-16 17:28:06 -07:00
Drew DeVault 7514431836 Fix pointer events properly 2015-08-16 16:12:40 -04:00
Drew DeVault 7878490425 Revert "Return false from pointer events"
This reverts commit 981db16a8e.
2015-08-16 16:10:05 -04:00
Drew DeVault 981db16a8e Return false from pointer events 2015-08-16 16:00:11 -04:00
Drew DeVault 5ff71c2d5c Fix key handling from wlc 2015-08-16 13:26:41 -04:00
Drew DeVault 6e8280e7fd Config errors should not be fatal 2015-08-16 12:03:34 -04:00
Drew DeVault ae536c21d3 Revert "get/set_userdata stores swayc_t *, fixed memory leak, minor changes." 2015-08-16 08:10:56 -04:00
taiyu eefc76b39e set userdata for handler to swayc_t container 2015-08-16 00:46:58 -07:00
taiyu 083d1eed1f fixed 2 small memory leaks & adds format attribute to log. 2015-08-15 21:21:20 -07:00
taiyu 2e92538d7f style 2015-08-15 17:45:16 -07:00
taiyu 14b7755134 set maximize flag for handled views 2015-08-15 17:43:45 -07:00