Commit graph

3358 commits

Author SHA1 Message Date
Brian Ashworth 8229814e7a 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.
2019-02-11 10:22:53 -05:00
Brian Ashworth a2f661dceb 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.
2019-02-11 10:22:53 -05:00
Daniel Eklöf 6ade4bd7dd ipc_has_event_listeners: fix inverted check of subscribed_events
subscribed_events is a bit mask, with each *set* bit representing an
event the client has subscribed to.
2019-02-11 10:22:53 -05:00
Brian Ashworth d2d2fc545a load_main_config: add realpath to config_chain
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.
2019-02-11 10:22:53 -05:00
emersion 48511c3b35 Fix close_popups for xdg-shell
wlr_xdg_popup_destroy will destroy popups, so we need to walk the tree
carefully. It's enough to just destroy all direct children, since destroying
the parent will also destroy all children.
2019-02-11 10:22:53 -05:00
Brian Ashworth d4e49a49eb output_cmd_background: fix no file + valid mode
If output_cmd_background is given a valid mode as the first argument,
then there is no file given and an error should be returned.

join_args should not be called with an argc of zero since it sets the
last character to the null terminator. With an argc of zero, the length
is zero causing a heap buffer overflow when setting the byte before the
start of argv to '\0'. This probably will not ever generate a segfault,
but may cause data corruption to whatever is directly before it in
memory. To make other such cases easier to detect, this also adds a
sway_assert in join_args when argc is zero.
2019-02-11 10:22:53 -05:00
Connor E cc5139d52a Initialize server so input manager is available. 2019-02-11 10:22:53 -05:00
Connor E 2112f0aa2f If validating the config, do it as early as possible. 2019-02-11 10:22:53 -05:00
Brian Ashworth 0c091bed76 cmd_workspace_gaps: fix double free on bad amount
This fixes a double free in cmd_workspace_gaps when the amount given is
invalid. The end pointer from strtol is part of the argument and should
not be freed. Freeing the end pointer could result in a double free or
bad free depending on whether or not the end pointer was at the start of
the argument
2019-02-11 10:15:00 -05:00
Brian Ashworth 41e10db0de IPC_COMMAND: split on newline
This splits commands given in IPC_COMMAND on newline to match i3's
behavior.
2019-02-11 10:15:00 -05:00
emersion 610794d4e3 Fix quote stripping
Let's not use !strcmp(…) anymore.
2019-02-11 10:15:00 -05:00
Brian Ashworth 5d770d028a execute_command: dont strip quotes for exec_always
This removes quote stripping for `exec_always` in `execute_command`.
Since `exec_always` commands will be deferred in the config and
processed by `execute_command`, the quotes need to be left intact
like they are for `exec`.
2019-02-11 10:15:00 -05:00
Brian Ashworth df3ea6a55f load_include_configs: fix wordexp fail condition
This fixes the failure condition for the wordexp call in
load_include_configs. The only success value is zero. Since the error
codes are positive, having the check be less than zero was causing
segfaults on failure when accessing the words.
2019-02-11 10:15:00 -05:00
Brian Ashworth 4272bf1274 seat_cmd_cursor: do not create non-existing seat
If a seat does not exist in seat_cmd_cursor, do not create it. A seat
without any attachments is useless since it will have no capabilities.

This changes `input_manager_get_seat` to have an additional argument
that dictates whether or not to create the seat if it does not exist.
2019-02-11 10:15:00 -05:00
vilhalmer 130626a5db Focus ws inactive node with focus_follows_mouse 2019-02-11 10:13:21 -05:00
Brian Ashworth 743d345383 Merge pull request #3563 from vilhalmer/fix-wildcard-seat-constrain-crashes-during-reconfig
Fix wildcard seat constrain crashes during reconfig
2019-02-11 10:12:43 -05:00
Drew DeVault bbfe13a248
Merge pull request #3551 from c-edw/RevertDoubleFrees
Revert double frees.
2019-02-03 09:55:54 +01:00
Brian Ashworth f425e81fbe cmd_seat: allow - to be used as alias for current
This allows for `-` (hyphen) to be used as an alias for the current seat
while sway is running. This alias was chosen since it is unlikely to
interfere with any desirable seat identifier
2019-02-02 22:02:28 -05:00
Brian Ashworth 1bd7400c4d seat_cmd_attach: defer while reading
Since the seats and inputs are not yet available while the config is
being read, defer seat attachment requests
2019-02-03 00:23:28 +01:00
Connor E 2f2a887377 Revert "More frees."
This reverts commit eda1bf769f.
2019-02-01 11:52:37 +00:00
Connor E 49b667272b Revert "Add some missing frees."
This reverts commit b5d95f264d.
2019-02-01 11:51:03 +00:00
Drew DeVault de76c4e071
Merge pull request #3543 from emersion/relative-pointer-usec
relative-pointer-v1: time is in usec, not msec
2019-02-01 09:27:00 +01:00
Brian Ashworth ebe5399ed6 pointer_constraint: change to a seat subcommand
This changes the `pointer_constraint` command to be a subcommand of seat
to allow for per-seat settings. The current implementation that is not a
seat subcommand will only operate on the current seat and will segfault
in the config due to `config->handler_context.seat` only being set at
runtime.

This also allows for the wildcard identifier to be used to alter the
pointer constraint settings on all seats and allows for the setting to
be merged with the rest of the seat config.
2019-01-31 22:58:52 -05:00
Drew DeVault 82461c4165 Updates for scdoc 1.8.1 2019-01-31 08:42:29 -05:00
Ashkan Kiani aee9942145 Add details on --whole-window for bindsym
Updates sway.5 to include information on the usage of the `--whole-window` option in the context of the `bindsym` command, which modifies mouse bindings to allow them to operate over the whole window instead of just the titlebar. Also includes the disclaimer about mouse bindings only working over the title bar.

Also fixes the escaping of the `BTN_LEFT` and `BTN_RIGHT` key mention.
Add notes on --border and --exclude-titlebar

Update the flags for bindcode command.
2019-01-30 22:55:22 +01:00
emersion dde9fc19de
relative-pointer-v1: time is in usec, not msec 2019-01-30 21:30:44 +01:00
Drew DeVault 0c975af1fb Send pointer frames on tool events 2019-01-30 14:09:50 -05:00
Drew DeVault 4b87edeba4 Missed a spot in pointer constraints 2019-01-30 14:06:44 -05:00
Drew DeVault a6d41254c9 Add pointer_constraint command 2019-01-30 19:53:59 +01:00
absrd ee4b8a3938 Add relative pointer 2019-01-30 19:53:59 +01:00
Las cedde21c96 Implement pointer-constraints-unstable-v1 2019-01-30 19:53:59 +01:00
athrungithub 5cb3d4769c criteria & scratchpad verify if show in another workspace (#3522)
check if scratchpad is show in another workspace
2019-01-30 09:05:46 -05:00
Brian Ashworth f0fd6119cf Cleanup config reading failure error logs
This cleans up the log when sway fails to read a config file. The
following changes have been made:
- A missing error message has been added to the log when the config file
is a directory instead of a regular file
- In main, `goto` statements have been added after the `sway_terminate`
calls instead of wrapping every block in `if (!terminate_request)`
- Unnecessary NULL-checks around calls to free in `main` have been
removed
- Deferred command execution has been extracted to a separate function
and the `Running deferred commands` log message will not be shown when
there are no deferred commands.
2019-01-29 13:18:53 -05:00
Peter Grayson f49ad5977e Document cursor moving between adjacent outputs
Add a sentence to sway-output.5.scd to highlight that the cursor can
only be moved between immediately adjacent outputs.

References issue #3529

Signed-off-by: Peter Grayson <pete@jpgrayson.net>
2019-01-28 21:36:48 -05:00
Ryan Dwyer 8995694a2f Remove bad assertion in container_handle_fullscreen_reparent
The assertion could trigger when called from workspace_wrap_children.
2019-01-29 08:05:55 +10:00
emersion 7c72327ab5
Cleanup log_env
SWAY_CURSOR_* are not used anymore. LD_PRELOAD_PATH doesn't exist and has been
replaced with LD_PRELOAD.
2019-01-28 21:59:10 +01:00
mwenzkowski 7c27d73b02 Check xdg_surface's role before using its toplevel
Don't access xdg_surface->toplevel if xdg_surface->role is equal to
WLR_XDG_SURFACE_ROLE_NONE, since this could lead to crash. The same
checks are added for xdg_surface_v6.

Fixes #3311
2019-01-28 16:14:35 +01:00
Ryan Dwyer 6b8bf10941 Introduce container_is_scratchpad_hidden
Just a convenience function that improves readability of the code.

Other things worth noting:

* container_get_siblings and container_sibling_index no longer use the
const keyword
* container_handle_fullscreen_reparent is only ever called after
attaching the container to a workspace, so its con->workspace check has
been changed to an assertion
2019-01-28 10:35:40 +01:00
Ryan Dwyer 0a9ff774ad Center surface inside container when it's too small
The goal here is to center fullscreen views when they are both too small
for the output and refuse to resize to the output's dimensions. It has
the side effect of also centering the view when it's too small for its
container.

Example clients that have this behaviour are emersion's hello-wayland
and weston.

It works by introducing surface_{x,y,width,height} properties to the
container struct. The x and y represent layout-local coordinates where
the surface will be rendered. The width and height are only used to
track the surface's previous dimensions so we can detect when the client
has resized it and recenter and apply damage accordingly.

The new surface properties are calculated when a transaction is applied,
as well as when a view resizes itself unexpectedly. The latter is done
in view_update_size. This function was previously restricted to views
which are floating, but can now be called for any views.

For views which refuse to resize *smaller* than a particular size, such
as gnome-calculator, the surface is still anchored to the top left as
per the current behaviour.
2019-01-28 01:17:21 -05:00
Drew DeVault 783fadab28
Merge pull request #3423 from RyanDwyer/fullscreen-global
Implement fullscreen global
2019-01-27 18:06:50 -05:00
Drew DeVault 897250c65f
Merge pull request #3519 from emersion/pointer-frame
Update for swaywm/wlroots#1503
2019-01-27 11:44:09 -05:00
Drew DeVault cd22d555e8 Remove unnecessary underscores in man pages 2019-01-27 11:27:48 -05:00
emersion a452f8f822
Update for swaywm/wlroots#1503 2019-01-27 12:59:46 +01:00
Ryan Dwyer 20aa8ee67d Implement fullscreen global 2019-01-25 08:29:21 +10:00
Ian Fan 5d6f906bd7 Use sway_log_errno instead of strerror 2019-01-24 11:33:54 +00:00
emersion 75406bb93b Update for swaywm/wlroots#1402 2019-01-24 11:48:19 +01:00
Jan Beich ba96983bf0 Make json-c include respect pkg-config --cflags
json-c.pc contains `Cflags: -I${includedir}/json-c`, so `<json-c/json.h>`
won't be found unless the parent directory is searched by default.
2019-01-23 21:50:06 -05:00
M Stoeckl 0af5b26e41 Fix dead stores found by scan-build
In addition to removing unused code, two minor problems are fixed:
 (1) `resize set` and `resize adjust` did not error when given
too many arguments.
 (2) `orientation` was incorrectly overridden to be 'U' for
scroll events in the swaybar tray `handle_click` function.
2019-01-22 10:12:04 -05:00
Drew DeVault 71a37ad186
Merge pull request #3494 from ianyfan/commands
i3 command behaviour compatibility fixes
2019-01-22 07:55:31 -05:00
Brian Ashworth 8ce57f0a77 root_scratchpad_remove_container: do not show
This removes the call to `root_scratchpad_show` from
`root_scratchpad_remove_container` and places it in the
`cmd_move_container`. This also moved the IPC `window::move` event to
`cmd_scratchpad`.
2019-01-22 13:13:34 +01:00