The window stack tabs build their own Tab widget rather than using
libcosmic segmented_button, so they kept the close button on the right
even with macOS-style controls enabled.
Order the tab items from the configured position: close first when
Start, last when End, with the container alignment following.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
populate_modes() now selects the mode with the highest refresh rate at
the preferred (native) resolution instead of blindly using the EDID
PREFERRED flag. This ensures high-refresh panels (120 Hz, 144 Hz, …)
are used out-of-the-box, including in the greeter session.
Also fix libcosmic → libcosmic-yoda package reference.
If a window with an active popup grab is closed or crashes unexpectedly, the input grab state can get stuck, freezing keyboard and mouse clicks.
This patch iterates over all seats and releases the active seat grab if it is owned by the destroyed window or one of its child popups.
Signed-off-by: littlezabi <zohaibjozvi@gmail.com>
Gnome seems to send `motion` in these cases. The spec isn't 100%
explicit, but it seems `motion` events are needed for the client to have
the same understanding of where the pointer is as the compositor, which
generally seems to be desired.
This is also needed for toplevel cursor image-copy to get the position
change. Likewise, we want image-copy to have the same understanding of
where the cursor is as the compositor and client.
This ensures we avoid advertising a `0,0` buffer size (which will
protocol error to actually allocate), and avoids defining the supported
formats for cursor capture buffers in a bunch of places.
We were just running whatever was given on the command line as the
kiosk command, which meant that if --no-xwayland was given, we'd try
execing --no-xwayland. Preserve the processed command line from the
option parser, and run only what's left over as the kiosk command to
fix this.
Other service supervisors implement systemd's readiness notification
protocol. For example, s6 implements it with the
s6-notify-fd-from-socket[1] program. libsystemd::daemon::notify
already checks for NOTIFY_SOCKET being set, which should be sufficient
to tell if systemd-style readiness notification is wanted.
Link: https://skarnet.org/software/s6/s6-notify-fd-from-socket.html [1]
Libinput reports natural scrolling via AxisRelativeDirection. Qt sets
QWheelEvent::inverted() from wl_pointer.axis_relative_direction. COSMIC
was forwarding axis values but not the direction hint.
Tested on Fedora 44 COSMIC Wayland with Telegram Desktop (native Wayland),
natural scrolling enabled — horizontal touchpad swipes fixed.
Assisted-by: AI (root-cause analysis)
Signed-off-by: Erik <erik-balfe@users.noreply.github.com>