Commit graph

7643 commits

Author SHA1 Message Date
Ryan
f4f6f7a367
Merge ed931b955f into 845cdb190f 2026-02-03 21:57:29 -06:00
Calvin Lee
845cdb190f sway: add details to unsupported gpu nag 2026-02-03 16:07:39 +01:00
Calvin Lee
992d201512 sway: change unsupported GPU message to swaynag
This commit shows a swaynag message when an unsupported GPU is detected
which must be acknowledged by users. It also adds an environment
variable (`SWAY_UNSUPPORTED_GPU`) which may be used instead of the
`--unsupported-gpu` argument.

The `static` storage class for flag variables in main has also been
removed, as this should have no effect on the program.

Resolves: #8999
2026-02-03 14:16:11 +01:00
Furkan Sahin
b081eba05d bar_cmd_colors: fix crash on incorrect usage
should display error message instead to be consistent with other
subcommands.
2026-02-02 18:12:08 +01:00
llyyr
e3c2412565 sway: advertise color_manager_v1 version 2
Ref: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5223
2026-01-29 00:46:03 +01:00
Ole
40aabb80c6 sway-ipc(7): Clarify that the reply shown is an example
Fix documentation of sway-ipc. The example reply for GET_BINDIG_STATE is an example and not the exact reply. 

This bug seems to come from copy/paste from the ipc command SYNC directly above.
2026-01-14 10:33:51 +01:00
Rex Fernando
3c0588a44f sway/input/cursor: fix crash on first stylus tap after reboot via null check
handle_tool_tip() previously used event->tool->data without checking
for NULL. When launching sway for the first time after a reboot, and
then tapping with a USI 2.0 stylus, the tool tip event is fired before
the tool proximity event. As event->tool is initialized during the tool
proximity handler handle_tool_proximity(), this was causing a crash.

The fix adds a NULL check before accessing the fields of
event->tool->data. In case of a NULL, a log message is emitted
indicating that the tool tip event fired before proximity. This logic is
identical to the logic in handle_tool_axis().

Fixes issue #8907
2026-01-08 18:49:51 +01:00
Simon Ser
8224d5fcf8 Disable Xwayland restacking for toplevel capture scenes
The main scene should drive Xwayland restacking.

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5108
2026-01-06 11:21:33 +01:00
Simon Ser
c09d0f1d4a Use goto-based error handling in view_init()
This is less surprising than checking for the failed flag in the
happy path.
2026-01-06 11:21:33 +01:00
llyyr
723b1ea3b7 sway/input/seat: chase wlroots breaking change
Ref: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5230
2026-01-05 16:30:20 +01:00
Félix Poisot
26eb393d6d sway/commands/output: add color_profile "--device-primaries"
When a display is connected, create a color transform from its
self-reported color characteristics
2026-01-04 19:48:23 +01:00
Félix Poisot
776d445ec5 sway/commands/output: color_profile "srgb" applies the piece-wise TF
Document that "gamma22" replaced the previous default.
2026-01-04 19:48:23 +01:00
Félix Poisot
f654fe8ede sway/config: apply output CT before initial commit
Currently, config apply sets the output's image description before the
initial commit, but sets the output's color transform after the commit.

In the case of a config reload removing a color profile and enabling
HDR, both the color transform and image description will be set, which
trips an assert in wlroots
2026-01-04 19:48:23 +01:00
Simon Ser
dbe8640035 desktop/xdg_shell: skip configure in request_maximize handler if unmapped
wlr_xdg_surface_schedule_configure() requires the xdg_surface to
be initialized.

Mirror the early return from request_fullscreen.
2025-12-21 16:38:06 +01:00
llyyr
238f0d4a8b tiling_resize: fix use-after-free on view unmap during resize
Closing a tiled window (mod+shift+q) while resizing (mod+click) causes
an use-after-free in handle_unref.

Both conditions can be true in this case, which will result in
dereferencing `e` on the second check after it has already been freed by
the first `seatop_begin_default`.

Fix by combining separate checks for the main container and its
horizontal/vertical siblings into a single condition.

The second check was added in 9e272a7986
and I've checked that this fix does not regress that issue.
2025-12-19 14:05:18 +01:00
Simon Ser
fa81ce8ee6 Use helpers to get supported TFs/primaries
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5086
2025-12-18 15:25:24 +01:00
Ryan Walklin
ed931b955f input/seat: float tiled containers when attached to drag
When a tiled container is attached to a toplevel drag (e.g., re-tearing
out a previously tabbed window), float it so it can be moved with the
cursor.
2025-12-12 22:58:33 +13:00
Ryan Walklin
500ee09be6 input/seat: remove dead code 2025-12-12 22:58:33 +13:00
Ryan Walklin
ccbb811f7f tree/view: fix initial positioning 2025-12-12 22:58:33 +13:00
Ryan Walklin
ea11148a49 input/seat: call start/finish for xdg-toplevel-drag lifecycle 2025-12-12 22:58:33 +13:00
Ryan Walklin
2b48637c7e seatop_default: skip hit-testing on dragged toplevel
Per the xdg-toplevel-drag protocol: "The attached window does not
participate in the selection of the drag target."

When the cursor is over the dragged toplevel, temporarily disable its
scene node and perform a second hit test to find the surface underneath.
This allows drop targets to receive pointer focus while dragging.

Also maintain pointer focus on the drag origin surface when the cursor
moves outside all windows, preventing drag motion from stopping.
2025-12-12 22:58:33 +13:00
Ryan Walklin
6ac37faaa4 xdg_shell: float and position dragged toplevels
Make toplevels attached to an xdg-toplevel-drag automatically float, and
position them at the cursor when first mapped.

This enables the typical tab tear-off workflow:
1. User starts dragging a tab in a browser
2. Browser creates a new toplevel attached to the drag
3. Sway floats the toplevel and positions it at the cursor
4. The motion handler (from previous commit) keeps it moving with cursor
2025-12-12 22:58:33 +13:00
Ryan Walklin
c65b7477b5 input/seat: track toplevel drag and move container during drag
Add support for tracking xdg-toplevel-drag operations and moving the
attached container during drag motion events.

Implementation detail:

- Track the dragged surface ourselves rather than trusting wlroots'
  toplevel pointer, which may not be NULLed promptly during destruction.
  This mirrors Mutter's approach with dragged_surface.

- Use find_xdg_view_with_toplevel_drag() which searches through sway's
  views and uses wlroots' wlr_xdg_toplevel_drag_v1_from_wlr_xdg_toplevel()
  for safe comparison, avoiding stale pointer access. There could be a
  better way to do this.

- Account for XDG surface geometry offset when positioning the container.

- Add container_floating_update_scene_position() helper that updates the
  scene graph position immediately, bypassing the transaction system's
  batching for smoother visual feedback during drag operations.

- Clean up container tracking in seatop_unref when container is destroyed.
2025-12-12 22:58:33 +13:00
Ryan Walklin
bad8a87f4c server: add xdg-toplevel-drag-v1 manager
Add the xdg-toplevel-drag-v1 protocol manager to the server. This
protocol allows clients to attach a toplevel window to an ongoing
drag-and-drop operation, enabling features like browser tab tear-off.
2025-12-12 16:51:20 +13:00
rewine
f4aba22582 Drop org_kde_kwin_idle files
Has been replaced by ext_idle_notifier_v1

Signed-off-by: rewine <luhongxu@deepin.org>
2025-11-28 09:26:17 +01:00
johnpyp
897e7688bb commit dirty transactions upon window attribute changes 2025-11-22 16:35:19 +01:00
Damino
842ea06773 tree/view: check for null workspace output
Fixes #8950
2025-11-22 14:41:35 +01:00
g-rden
b54d1205d8 swaynag/main: free config_path
Otherwise config_path is never free'd
2025-11-20 12:31:30 +01:00
llyyr
d735bb99a9 sway/server: advertise wlr_color_representation_manager_v1 2025-11-13 17:02:47 +01:00
llyyr
055be4ec35 sway/server: advertise gamma2.2 and bt1886 transfer functions 2025-10-28 23:34:18 +01:00
bonsaiiV
b7eb6177e1
sway/commands/layout: fix flatten parent once
Fixes: f50e307227 ("sway/commands/layout: flatten parent once")
2025-10-18 18:55:46 +02:00
llyyr
90d3270970 sway/input/cursor: send frame event when simulating pointer from tablet 2025-10-05 19:46:53 +02:00
Louis POIROT--HATTERMANN
ecfea6b8ae commands/scratchpad: don't hide scratchpad if no pending workspace
Fixes: https://github.com/swaywm/sway/issues/8909
2025-10-05 19:22:48 +02:00
nyxed
b4a9a1716f build: switch to explicit 'meson setup' syntax 2025-10-02 18:06:20 +02:00
llyyr
d9e615c507 sway/server: set color_manager for root scene
Chase https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5122/
2025-09-23 23:50:15 +02:00
Felix Pehla
bc96d0acdf README: update German translation
Update the information about display manager support (see #8861), as
well as markdown formatting of links and change some wording in the
German README.
2025-09-18 11:18:07 +02:00
Simon Ser
a7d9535eb3 input/text_input: stop using listener data
These are now NULL.

Fixes: aaab7f961e ("input/text_input: chase wlroots update")
Closes: https://github.com/swaywm/sway/issues/8864
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5107
2025-09-15 07:41:51 +02:00
nortio
7c1e192ea3
Update README.it.md for Italian
Updated italian readme to follow the recent changes to the English one.
I also removed "gestore di accesso" which in theory translates to
display manager, but in practice is never used in this context. Other
wikis such as [Debian](https://wiki.debian.org/it/DisplayManager) and
[Ubuntu](https://wiki.ubuntu-it.org/AmbienteGrafico/DisplayManager) just
use the term "Display Manager" as is. Another small thing that I
corrected is "canale di IRC" which sounds a bit weird.
2025-09-14 19:38:17 +02:00
aceydot
50a8750e01
Add Serbian README 2025-09-12 19:55:36 +02:00
Martin Dørum
a41b25020d
Update Norwegian README to make it more in line with the English one, as well as improving grammar 2025-09-12 15:43:30 +02:00
Kirill Chibisov
35b69158d7 readme: sync Japanese translation 2025-09-12 15:28:31 +02:00
Kirill Chibisov
862e9b8c20 readme: sync Russian translation 2025-09-12 15:28:31 +02:00
Oto Šťáva
68ac52ffc2 readme: Update and reword Czech translation 2025-09-11 23:48:16 +02:00
Przemysław Gasiński
e6fc3ffa3f readme: Update Polish translation regarding the support of display managers 2025-09-11 23:46:57 +02:00
Martin Dørum
70c51c44f6 update danish readme to reflect that display managers are supported 2025-09-11 17:20:07 +02:00
Simon Ser
ca45c22376 readme: mark display managers as supported
It's been a long while since we've heard about issues related to
display managers. Some used to be unreliable in the past, but by
now most issues have been ironed out. Let's start supporting them
officially.

I've considered translating other languages but I'm concerned about
messing up the sentence. I've updated languages I'm comfortable
with.
2025-09-11 14:14:51 +00:00
Nikola Kocic
c5456be750 xdg-shell: fix reported WM capabilities
Previously it was reporting window_menu and maximize instead of fullscreen because wlr_xdg_toplevel_set_wm_capabilities expects a bitmask (WLR_XDG_TOPLEVEL_WM_CAPABILITIES_*), and XDG_TOPLEVEL_WM_CAPABILITIES_* are supposed to be used as values in wl_array, so the values are different:
XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN = 3
WLR_XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN = 4
2025-09-09 13:55:46 +02:00
Bill Li
aaab7f961e input/text_input: chase wlroots update
References:https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5107
2025-09-08 15:54:59 +00:00
Kenny Levinsen
73c244fb48 config/output: Only error when enabling HDR
We currently emit errors about HDR support even if HDR is not being
requested, which mean errors on every regular modeset when monitors not
supporting HDR are connected.

Only emit errors when attempting to enable HDR on such device.
2025-08-22 15:49:09 +02:00
Simon Ser
b3dcde8d69 Stop generating wayland-protocols server headers
We still need to generate wlr-protocols server headers, as well as
client headers and code.

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5075
2025-08-14 10:09:59 +02:00