Commit graph

6194 commits

Author SHA1 Message Date
Drew DeVault f681d52939 Update version to 1.4 2020-01-22 13:33:29 -05:00
Eli Schwartz 0515c15bb9 fish-completion: use the correct fallback directory
fish completions should never be installed to share/fish/completions/ as
that directory is reserved exclusively for completions shipped as part
of the fish source code.

Use the same vendor_completions.d/ directory which the default fish
configuration uses.
2020-01-22 13:30:53 -05:00
Eli Schwartz 12535a3831 completion: use pkg-config to get install location for bash/fish
Both shells provide pkg-config files which declare their designated
completionsdir. Use this as the primary source of truth.
2020-01-22 13:30:53 -05:00
Eli Schwartz 004837b478 meson: use join_paths to build paths, instead of string concat
It makes sure to handle paths as paths, and is generally safer and the
blessed solution.
2020-01-22 13:30:53 -05:00
Jason Nader 3644d6f4d3 Check argc>0 before strcasecmp. Should shortcircuit 2020-01-22 13:30:53 -05:00
Jason Nader 3bc209fc9d commands/move: Fix crash when required args not provided
Fixes #4919.
2020-01-22 13:30:53 -05:00
Brian Ashworth 0bc8d01b1c output: apply oc to outputs using wl_for_each_safe
If applying an output config to an output fails, the output may be
destroyed. To be able to handle this situation correctly,
apply_output_config_to_outputs needs to use wl_list_for_each_safe.
2020-01-22 13:30:52 -05:00
Ronan Pigott 162743da85 cmd_split: Refuse to split scratchpad hidden split containers 2020-01-22 13:30:52 -05:00
Ronan Pigott a4fad12d70 cmd_move: Fix crash when moving to scratchpad hidden split containers 2020-01-22 13:30:52 -05:00
Ronan Pigott c52b1cf45a Fix crash when showing scratchpad hidden split containers 2020-01-22 13:30:52 -05:00
Brian Ashworth f531e86f7c desktop/output: fix mem leak in handle_new_output
This fixes a memory leak of oc (the output config) in handle_new_output.
Output configs returned from find_output_config are not stored and need
to be freed after use.
2020-01-22 13:30:52 -05:00
Ronan Pigott c6b5aef913 sway.5: Document missing bindsym flags for unbindsym
sway.5: Remove indents within long command descriptions
2020-01-22 13:30:52 -05:00
Ronan Pigott 6ac97c46ae sway-input.5: Document repeat_delay and repeat_rate only once 2020-01-22 13:30:52 -05:00
Ronan Pigott 94199fe91c ipc-json: Remove unnecessary dereference 2020-01-22 13:30:52 -05:00
Ronan Pigott b9398540bf commands/split: Fix error message typos 2020-01-22 13:30:52 -05:00
Simon Ser bdcec5af99
Revert "Make all the container dimensions integers"
This reverts commit 79c5f5ba12.

Fixes: https://github.com/swaywm/sway/issues/4908
2020-01-15 18:02:20 +01:00
Brian Ashworth 764a270920
container: add inactive fullscreen to focus stack
When a container was being made fullscreen and it is on the focused
workspace for a seat, focus was being set to the container. However,
when the container was on a non-focused workspace, the focus stack
wasn't being touched. When assigning a fullscreen container to a
workspace or moving a fullscreen container to a different workspace,
this would make it so the fullscreen container was never added to the
focus stack for the workspace thus preventing access to the workspace.
This adds the container to the top of the focus stack, behind the
container on the focused workspace.
2020-01-15 18:02:01 +01:00
Jason d8030ec5c2
Docs: explain why menu command should be passed to sway
It was not obvious to me why until I saw a comment from @RyanDwyer on Reddit, so I think it's better to add an explanation.
2020-01-15 18:01:57 +01:00
Simon Ser 70ea19150a
Fix unreliable scaling filter
Two changes were made:

- Bind the texture before glTexParameteri
- Set the scaling filter before each wlr_render_texture_with_matrix call

Logging in wlroots allows to check that the scaling filter is properly
set prior to rendering.

Fixes: 6968fb3123 ("add scale_filter output config option")
Closes: https://github.com/swaywm/sway/issues/4798
2020-01-15 18:01:50 +01:00
Jason Nader 230523731d
Amend typo 2020-01-15 18:01:46 +01:00
Cassandra McCarthy 4781b8e894
integer scaling, not integral 2020-01-15 18:01:41 +01:00
JR Boyens 0c1733273c
Use transparency arg in the window focus event 2020-01-15 18:01:35 +01:00
Brian Ashworth 06565b1827
view: remove workspace pid mapping for assigns
If a view is mapped to a workspace using an assign, the pid should still
be removed from the pid mapping list. This prevents child processes from
matching against it and mapping a view to a likely undesired workspace.
2020-01-15 18:00:39 +01:00
Brian Ashworth 5250eebafe input/cursor: handle setting a NULL image surface
This fixes a crash when attempting to listen to a signal on a NULL
cursor image surface. If the surface is NULL, the listener is just
reinitialized using wl_list_init.
2020-01-08 10:27:20 -05:00
Brian Ashworth 9d48a3d78d input/cursor: handle image surface destroy
This adds a listener for the destroy event of the cursor image surface.
This prevents a use-after-free when the last visible image surface is
freed, there has not been a new cursor set, and the cursor is reshown.
2020-01-08 10:27:20 -05:00
Andri Yngvason c1cab4bf0e swaybar: Fix input device removal
Before swaybar would exit with a protocol error when a pointer or touch
device was removed.
2020-01-08 10:27:20 -05:00
Ross Schulman 5539fb3abc Fix small typo in sway-input(5) 2020-01-08 10:27:20 -05:00
Thayne McCombs e786eda2cb Add missing items to documentation for GET_TREE response in ipc.
A few items in the response for the get_tree ipc call were missing from
the documentation. This adds some documentation for them.
2020-01-08 10:27:20 -05:00
Rouven Czerwinski 2aecf93fd7 xwayland: handle size_hints == NULL
In case xcb-iccm is not installed on the system, size_hints will be
null. Handle this as if the get_constraints functions was not
implemented and return the defaults.

Fixes #4870
2020-01-08 10:27:20 -05:00
Andri Yngvason c35663772a input: Assign virtual input devices to their selected seats 2020-01-08 10:27:20 -05:00
Pedro Côrte-Real 1f4b3c91d4 Make all the container dimensions integers
Containers are always fixed to the pixel grid so position and size them
with integers instead of doubles.

Functionally this should be no different since rounding down is already
being done on things like layout. But it makes it clear what the
intention is and avoids bugs where fractional pixels are used. The
translating and moving code is still using doubles because the cursors
can have fractional pixels and thus the code is plumbed that way. But
that could also probably be changed easily by doing the integer
conversions earlier and plumbing with int.
2020-01-08 10:27:20 -05:00
Pedro Côrte-Real 9ad22109bb Make sure we don't calculate fractional pixel gaps
When gaps are resized for lack of space the calculation could result in
a gap size of non-integer pixels. This would result in containers
located at non-integer pixels which would be subtly broken.
2020-01-08 10:27:20 -05:00
Pedro Côrte-Real c284ed379c Avoid numerical instability in resize
Because the layout code rounds down the dimensions of the windows
resizing would often be off by one pixel. The width/height fraction
would not exactly reflect the final computed width and so the resize
code would end up calculating things wrong.

To fix this first snap the container size fractions to the pixel grid
and only then do the resize. Also use round() instead of floor() during
layout to avoid a slightly too small width. This applies in two cases:

1. For the container we are actually resizing using floor() might result
   in being 1px too small.
2. For the other containers it might result in resizing them down by 1px
   and then if the container being resized is the last all those extra
   pixels would make the resize too large.

Fixes #4391
2020-01-08 10:27:20 -05:00
Drew DeVault 6572621b45 Update version to 1.3-rc1 2019-12-31 10:33:11 -05:00
Drew DeVault 2a00bb0650 _incr_version: always overwrite old version number 2019-12-31 10:31:40 -05:00
Drew DeVault a44ae8869b _incr_version: prompt for target wlroots release 2019-12-31 10:27:13 -05:00
Josef Gajdusek f501a60c14 Add virtual pointer protocol 2019-12-31 16:04:50 +01:00
Paul Riou 2b5e75032b Fix sway_log using non initialised output_config pointer
This fixes a crash where the `oc->name` would be accessed by sway_log()
even when `oc` was NULL.
2019-12-31 15:56:32 +01:00
Simon Ser ef2332f7a6 Re-add support for wlr_output's atomic API
This reverts commit 724926ea6a and
re-applies commit 6e0565e9de.

Outputs now need to be explicitly enabled when performing a modeset.
We need to roll back wlr_output_attach_render when we decide not to
render.

See also: https://github.com/swaywm/wlroots/pull/1797 (wlroots PR)
See also: https://github.com/swaywm/sway/pull/4355 (Original sway PR)
See also: https://github.com/swaywm/sway/pull/4434 (Revert sway PR)
2019-12-30 11:24:11 -07:00
NightFeather 658b779662 Add Chinese (zh-TW) translation of README
Co-authored-by: xdavidwu <xdavidwuph@gmail.com>
2019-12-30 09:45:06 +01:00
Brian Ashworth de43f7c1db cmd_client_*: support optional args for i3 compat
For i3 compatibility, allow the indicator and child_border colors values
to be optional. The indicator will fallback to sane defaults and
child_border will fallback to the background color for the class.
2019-12-29 10:40:06 +01:00
Whemoon Jang ed9b4e6aeb Fix typo in swaybar-protocol.7.scd 2019-12-28 13:36:00 -05:00
Brian Ashworth f898ca9a83 bar_cmd_colors: remove add_color
This is the third commit in a series of commits to refactor color
handling in sway. This removes add_color from commands.c. It was only
being used by bar_cmd_colors. This also changes the functions to use
parse_color which is used to validate rgb(a) colors throughout the code
base and is also what i3bar is using to parse the colors after they are
passed over ipc. After parsing the color and ensuring it is valid, the
rgba hex string is then generated using snprintf. This refactor also
ensures that all the colors for the command are valid before applying
any of them.
2019-12-28 10:07:25 +01:00
Brian Ashworth 66dc33296c cmd_client_*: refactor duplicated code
This is the second in a series of commits to refactor the color handling
in sway. This removes the duplicated color parsing code in
sway/commands/client.c. Additionally, this combines the parsing of
colors to float arrays with that in sway/config.c and introduces a
color_to_rgba function in commom/util.c.

As an added bonus, this also makes it so non of the colors in a border
color class will be changed unless all of the colors specified are
valid. This ensures that an invalid command does not get partially
applied.
2019-12-28 10:07:25 +01:00
Brian Ashworth 97f9f0b699 parse_color: return success + drop fallback color
This is the first in a series of commits to refactor the color handling
in sway. This changes parse_color to return whether it was success and
no longer uses 0xFFFFFFFF as the fallback color. This also verifies that
the string actually contains a valid hexadecimal number along with
the length checks.

In the process of altering the calls to parse_color, I also took the
opportunity to heavily refactor swaybar's ipc_parse_colors function.
This allowed for several lines of duplicated code to be removed.
2019-12-28 10:07:25 +01:00
Brian Ashworth 088b374b1a layer-shell: refocus if keyboard interactive lost
When arranging layer-shell layers, verify that the currently focused
layer, if any, for each seat is still keyboard interactive. If the layer
is no longer keyboard interactive and there is not a keyboard
interactive overlay or top layer to change the focus to, refocus the
focus inactive node for the seat.
2019-12-27 11:38:56 +01:00
Ronan Pigott bd42415b5d config/output: apply scale_filter even when scale has not changed 2019-12-27 11:38:05 +01:00
Manuel Stoeckl 1d483c340d desktop/surface: Fix crash when timer is NULL
When many surfaces are created, sway can run out of file descriptors,
making wl_event_loop_add_timer (which creates a timerfd) fail and
return NULL. This patch posts a "no memory" error when that is the case,
and only removes the timer if it was created.

(Why "no memory"? It is not easy to distinguish between failures due to
running out of memory and failures due to running out of file
descriptors. Also, using the newer `wl_client_post_implementation_error`
function would lead to an increased version requirement for the
libwayland-server dependency.)
2019-12-24 13:03:50 +01:00
Drew DeVault aa8fe58421 License wallpapers as CC-0 2019-12-16 14:35:58 -05:00
Brian Ashworth 452a615bb8 seat_cmd_keyboard_grouping: change keymap to smart
This removes `seat <seat> keyboard_grouping keymap` and replaces it with
`seat <seat> keyboard_grouping smart`. The smart keyboard grouping will
group based on both the keymap and repeat info. The reasoning for this
is that deciding what the repeat info should be for a group is either
arbitrary or non-deterministic when multiple keyboards in the group have
repeat info configured (unless somehow exposed to the user in a
reproducible uniquely identifiable fashion).
2019-12-16 12:03:11 -05:00