Debian Patches

Status for kwin/4:6.3.6-1

Patch Description Author Forwarded Bugs Origin Last update
upstream_612ec743_backends-drm-also-generate-modes-for-the-native-refresh-rate-of-the-display.patch [PATCH] backends/drm: also generate modes for the native refresh rate of the display

As we only do this when the scaling mode is available, it should be pretty safe,
and these modes avoid driver issues where the refresh rate isn't switched to 60Hz.



(cherry picked from commit 6d82dbcb7f344db3e3e772f91ec738b9e431681d)
Xaver Hugl <xaver.hugl@kde.org> no upstream 2025-05-23
upstream_1a6871de_wayland-Fix-focused-surface-check-in-wl-data-device-start-drag.patch [PATCH] wayland: Fix focused surface check in wl_data_device.start_drag

SeatInterface::focusedPointerSurface() contains the main surface, but the
client can specify a subsurface.



(cherry picked from commit 40379821ee527ad7666de916f890852578c3a591)
Vlad Zahorodnii <vlad.zahorodnii@kde.org> no upstream 2025-05-29
relax-interplasma-versioned-deps.patch no
upstream_3f0a8a88_plugins-dimscreen-Enable-by-default.patch [PATCH] plugins/dimscreen: Enable by default
It helps to attract user's attention to the system prompt. It seems like
a good default.
Vlad Zahorodnii <vlad.zahorodnii@kde.org> no 2025-03-20
upstream_68dbfe7a_backends-drm-prevent-the-main-thread-from-moving-the-target-pageflip-time-forward.patch [PATCH] backends/drm: prevent the main thread from moving the target pageflip time forward

When the commit thread moves the target back by one refresh cycle, there's some time where
estimateNextVblank will still return the old target - so if the main thread adds another
commit to the queue and overrides the target, the commit thread's action would be undone.
Xaver Hugl <xaver.hugl@gmail.com> no 2024-09-05
upstream_602072c9_backends-drm-remove-unused-method.patch [PATCH] backends/drm: remove unused method Xaver Hugl <xaver.hugl@gmail.com> no 2025-04-03
upstream_85eeafa0_backends-drm-dynamically-adjust-the-safety-margin-based-on-commit-time.patch [PATCH] backends/drm: dynamically adjust the safety margin based on commit time

Atomic (test) commits can take a varying amount of time, and that depends on
the content of the commits as well as CPU frequency. For example, changing
GAMMA_LUT can take a whole additional millisecond on my desktop PC, and may
take even longer on laptops in power saving mode.

To mitigate that, as well as the scheduler not necessarily waking up the commit
thread at the desired time, the added logic compares the desired vs. achieved
commit completion timestamp after every atomic commit, and adjusts the safety
margin accordingly.

As we currently don't know exactly when the atomic commit is actually applied,
and the timestamp for when the ioctl returns is just an approximation (which
fails on NVidia), this keeps the base safety margin at 1.5ms. We can reduce
that once we have some API to actually know when the commit is applied.
Xaver Hugl <xaver.hugl@gmail.com> no upstream 2025-04-03
upstream_7b93a776_Implement-MouseKeys-on-Wayland.patch [PATCH] Implement MouseKeys on Wayland
This allows to move the mouse cursor using numpad keys.

This is an accessibility feature. On X11 this is implemented in XKB, on Wayland we get to do it outself.

It's implemented as a plugin that filters for relevant keys and generates mouse events through a virtual pointer device
Nicolas Fella <nicolas.fella@gmx.de> no upstream 2022-12-26
upstream_801d31a9_plugins-stickykeys-Unlatch-keys-after-mouse-click.patch [PATCH] plugins/stickykeys: Unlatch keys after mouse click
This is how X11 behaves and it allows things like Ctrl+Click to work as expected with sticky keys
Nicolas Fella <nicolas.fella@gmx.de> no 2024-07-09
upstream_fd0eef29_Fix-config-options-for-inactive-window-action.patch [PATCH] Fix config options for inactive window action
The "Activate, pass click and raise on release" option was added to the Window Actions Inactive Inner Window left click dropdown, but in this file was instead added to the Titlebar actions list: https://invent.kde.org/plasma/kwin/-/merge_requests/6555/diffs?file=794ca93c1a0a39541fac0b789307cde9ec80df1d#diff-content-794ca93c1a0a39541fac0b789307cde9ec80df1d

This moves the added config file option to the Inner Window section, which should help it operate as expected when non-default options are selected.
John Kizer <john.kizer@proton.me> no upstream 2025-04-30
upstream_572fee09_effects-slideback-Also-check-activity-when-matching-windows.patch [PATCH] effects/slideback: Also check activity when matching windows
When a window is raised, we compare which windows we have to move.

Otherwise it gets managed, but never painted, and thus never cleared,
this corrupts the stacking order.



(cherry picked from commit 0ed015cc8adc86c860b3a87555b2574d94999a4c)
David Edmundson <david@davidedmundson.co.uk> no upstream 2025-05-27
upstream_48ddfb59_wayland-Send-wl-data-source-cancelled-if-wl-data-device-start-drag-is-rejected.patch [PATCH] wayland: Send wl_data_source.cancelled if wl_data_device.start_drag is rejected

If a dnd operation is rejected by the start_drag request, currently, the
client has no any feedback about it.

This change makes kwin send a wl_data_source.cancelled similar to what
weston does. Note that with internal drags, no feedback will still be
provided though.


(cherry picked from commit d9249be845b788b1e22e9944468c26612d37730b)
Vlad Zahorodnii <vlad.zahorodnii@kde.org> no 2025-06-04
upstream_9580193a_backends-drm-also-handle-GPU-resets-on-secondary-GPUs.patch [PATCH] backends/drm: also handle GPU resets on secondary GPUs
Just re-creates the swapchains and context.


(cherry picked from commit 7268ced6517dccc2d11420b62668af31f26a58e8)
Xaver Hugl <xaver.hugl@gmail.com> no 2025-06-11
upstream_98b64e9b_backends-drm-allow-night-light-to-get-closer-to-the-edges-of-the-gamut.patch [PATCH] backends/drm: allow night light to get closer to the edges of the gamut

The limit changes the result vs. 6.2 / kwin_x11. 0.0001 is enough to prevent the
math from going crazy, and changes the result a lot less.



(cherry picked from commit 29dc8ee4cacb6372c0d93c784a18059158b6f1b9)
Xaver Hugl <xaver.hugl@gmail.com> no upstream 2025-06-26
upstream_252c74c0_Implement-org-freedesktop-a11y-KeyboardMonitor-interface.patch [PATCH] Implement org.freedesktop.a11y.KeyboardMonitor interface
This allows screen readers to intercept keys for their own
shortcut handling.

This is not a regular input filter since we need to be able to
intercept keys before they change the XKB state.
Nicolas Fella <nicolas.fella@gmx.de> no 2025-03-06
upstream_cfc05b0e_a11ykeyboardmanager-Grab-keys-when-grabbed-modifier-is-pressed.patch [PATCH] a11ykeyboardmanager: Grab keys when grabbed modifier is pressed

The description for 'modifiers' in SetKeyGrabs says "All keys in this list
will be grabbed, and keys pressed while any of these keys are down will also be grabbed."

That last part was missing, causing keys to be processed normally and sent to the application
when they shouldn't.
Nicolas Fella <nicolas.fella@gmx.de> no upstream 2025-06-27
upstream_5ba6279b_A11yKeyboardMonitor-Fix-sending-keycodes-to-AT.patch [PATCH] A11yKeyboardMonitor: Fix sending keycodes to AT
processKey receives scancodes, we need to convert to keycodes when emitting KeyEvent
Nicolas Fella <nicolas.fella@gmx.de> no upstream 2025-07-01
upstream_889ffed2_A11yKeyboardMonitor-Distinguish-modifier-and-other-key.patch [PATCH] A11yKeyboardMonitor: Distinguish modifier and other key
When processing a key event, only update
A11yKeyboardMonitor::lastModifier and
A11yKeyboardMonitor::lastModifierTime if
the pressed key is actually a modifier.

Otherwise, the "if the modifier was pressed twice within the
key repeat delay process it normally" logic above would
trigger when pressing a non-modifier key twice within
the key repeat delay time, breaking e.g. Orca's structural
navigation when pressing "H" twice to jump to the heading
after the next, and instead result in a literal "h" getting
inserted when input is accepted (e.g. in an editable
LibreOffice Writer document).
Michael Weghorn <m.weghorn@posteo.de> no upstream 2025-07-07
upstream_070f5ba6_xdgshellwindow-Reset-gravity-on-interactive-resize-finish.patch [PATCH] xdgshellwindow: Reset gravity on interactive resize finish
Prevent a maximize operation from accidentally reusing whatever resize
gravity a previous interactive resize operation used.

This fixes an issue where windows may be placed at a non-0,0 coordinate
after a maximize on fractionally scaled displays if the window was
previously resized from the top edge, potentially allowing mouse clicks
on the top of the display to reach windows underneath the maximized
window.


(cherry picked from commit 0d929de7f0aad8bfd07075bf189cb19ee46f6815)
Vlad Zahorodnii <vlad.zahorodnii@kde.org> no 2025-07-01
upstream_8f331a26_backends-drm-don-t-use-UUID-to-identify-outputs.patch [PATCH] backends/drm: don't use UUID to identify outputs
The UUID is only set later by the output configuration system, so it can't be used in
the drm backend when deciding the dpms state of a "new" output.
This changes it to use EDID ID, EDID hash or connector name instead, which are valid
much earlier and are reliable enough for the dpms workaround.



(cherry picked from commit e177e1d2da8a278f85d5d3e24ffdc01e7c2eaca6)
Xaver Hugl <xaver.hugl@gmail.com> no upstream 2025-07-04
upstream_225e7360_wayland-Remove-buffer-checks-in-xdg-surface-and-layer-surface-factory-requests.patch [PATCH] wayland: Remove buffer checks in xdg_surface and layer_surface factory requests

Due to transactions getting delayed sometimes, the current surface state
may have a buffer. It doesn't necessarily mean that it's a protocol error.

Whether the client has actually committed an invalid state will be
determined later when the client commits the surface after creating the
surface role.



(cherry picked from commit 7772926af7f74e29c14f7b97418745111278dd83)
Xaver Hugl <xaver.hugl@gmail.com> no upstream 2025-07-04
upstream_e4e144db_backends-drm-Fix-memory-leak-in-DrmGpu-createNonMasterFd.patch [PATCH] backends/drm: Fix memory leak in DrmGpu::createNonMasterFd
drmGetDeviceNameFromFd2 returns an allocated string, which means we
should free it.


(cherry picked from commit e6e3431da596e7580c367ea1ed13b1b614638026)
Vlad Zahorodnii <vlad.zahorodnii@kde.org> no 2025-07-07
upstream_e8541cf2_wayland-Fix-resizing-with-fractional-increments.patch [PATCH] wayland: Fix resizing with fractional increments
Rounded client sizes are checked, which is okay if we want to determine
whether the window geometries match. But it doesn't mean that the
requested frame size can be used.

We need to run nextClientSizeToFrameSize() on top to make sure that the
frame tightly wraps the surface.

For example, consider that the rect.width() is 10.5 and the target scale
factor is 2. If there are no borders, the requested client size will be
11. If the current client size happens to be 11 as well, then the final
frame geometry will have 10.5 width, which is totally incorrect, it has
to be 11. If kwin uses 10.5 width, then the outline around the window
may not have uniform thickness.

During interactive resize, the snapped geometry also needs to be
gravitated so when you drag the left edge of the window, the right edge
doesn't move left and right chaotically.

(cherry picked from commit 5b7abb00a3cbbf4084683c9a2070970d0897a39a)
Vlad Zahorodnii <vlad.zahorodnii@kde.org> no 2025-07-09
upstream_51c0880f_wayland-close-popups-upon-window-activation.patch [PATCH] wayland: close popups upon window activation
Popups should grab all input on Wayland, however there are numerous
(deliberate) ways to get outside the grab, such as a shortcut that opens
a new window or pressing alt-tab.

If a popup is active when the focus changes we are left in a state where
the new window visibly has focus and appears on top of the popup's main
window, but the popup is still visible with an input grab. This is a
broken state.

This patch cancels popups if the focus window changes for whatever
reason.

Cancelling a popup also destroys the window server side rather than
waiting for the client to handle the popupDone so there is no racey
aspect for the next input.



(cherry picked from commit 43f7621eb1ef22704c4c12c21c29945bffa37e47)
Vlad Zahorodnii <vlad.zahorodnii@kde.org> no upstream 2025-07-09
upstream_267fa4ec_Fix-activate-and-raise-action-with-panels.patch [PATCH] Fix "activate and raise" action with panels
With the "activate and raise" action, the window manager should activate
and raise the window but not pass the click.

If a window is focusable, then only the mouse press should be filtered
out.

If a window is not focusable, there is some sophisticated code to see
whether the window is obstructed by any other window (because isActive()
is always false for such windows so we need another way to determine
whether it's the first click). If the window is obstructed, then no click
will be passed but the action will still be performed, in other words,
the window will be activated (noop) and raised. However, this breaks if
a window has transients, which is the case with panels. We want the click
to be passed along even though the window is covered by a child (it
doesn't matter whether it accepts focus).

Given that primarily only special surfaces don't accept focus, e.g.
panels, and they are expected to receive clicks, the special stacking
order code path can be replaced with a `return false;` statement. Which
is also identical to the MouseActivate case.

See also e8dad997fae98e3c0c40653667dd22a002747556



(cherry picked from commit f73200def99d7511955c3c698b53832cd3bb9404)
Vlad Zahorodnii <vlad.zahorodnii@kde.org> no upstream 2025-07-11

All known versions for source package 'kwin'

Links