Skip to content
stutter and latency reductions to KWin, now public
Branch: Plasma/5.15
Clone or download
Latest commit 6ab36eb May 23, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
autotests fix issue #6 May 10, 2019
cmake/modules Bring FindFontconfig.cmake up to ECM standards Dec 18, 2018
colorcorrection Fix minor Doxygen issues Jan 12, 2019
data [kcmkwin/kwinrules] Don't include kdeglobals in rules config Dec 19, 2018
decorations Don't destroy DecorationRenderer in setup/finish compositing Feb 20, 2019
doc [KCMs] move GHNS buttons to the normal location Oct 31, 2018
effects Merge branch 'Plasma/5.15' of git://anongit.kde.org/kwin into Plasma/… May 7, 2019
helpers Merge branch 'Plasma/5.14' Nov 16, 2018
kcmkwin Merge branch 'Plasma/5.15' of git://anongit.kde.org/kwin into Plasma/… May 7, 2019
kconf_update [kconf_update] Use scripted dim screen effect Nov 26, 2018
libinput Fix minor Doxygen issues Jan 12, 2019
libkwineffects [libkwineffects] Use fully qualified type name for signal Apr 23, 2019
packageplugins SVN_SILENT made messages (.desktop file) - always resolve ours Apr 12, 2019
platformsupport enable unredirect for intel Apr 21, 2019
plugins horrible hack for Intel May 18, 2019
qml fix virtual keyboard on Plasma Mobile Dec 10, 2018
scripting fix issue #6 May 10, 2019
scripts
shaders [libkwinglutils] Cleanup Shader API: removal of ShaderType Jan 26, 2016
tabbox Fix minor Doxygen issues Jan 12, 2019
tests Use locked cursor position hint Jul 27, 2018
.arcconfig Adding .arcconfig Mar 15, 2016
.arclint Add .arclint Oct 2, 2018
16-apps-kwin.png Fix installing of icons Jun 2, 2014
32-apps-kwin.png Fix installing of icons Jun 2, 2014
48-apps-kwin.png Fix installing of icons Jun 2, 2014
CMakeLists.txt release 5.15.6 May 23, 2019
COPYING Put licence files on each repo, removing from root. Mar 26, 2014
COPYING.DOC Put licence files on each repo, removing from root. Mar 26, 2014
ExtraDesktop.sh Add ExtraDestkop.sh files Jul 12, 2011
HACKING.md update HACKING.md May 10, 2019
KWinDBusInterfaceConfig.cmake.in Add path to kwin_wayland binary to KWin's installed CMakeConfig Nov 19, 2015
Mainpage.dox Apidocs mainpage work. Just got Plasma and Solid to do here. Jul 24, 2007
Messages.sh Fix untranslatable strings in debug_console.ui shortcutdialog.ui Sep 17, 2018
README.md release 5.15.6 May 23, 2019
TESTING.md [platform/virtual] Drop support for vgem and rendernode Jan 12, 2019
abstract_client.cpp Fix DesktopGrid drag on X11 Jan 17, 2019
abstract_client.h Fix DesktopGrid drag on X11 Jan 17, 2019
abstract_opengl_context_attribute_builder.cpp Request a high-priority EGL contexts Mar 29, 2018
abstract_opengl_context_attribute_builder.h Request a high-priority EGL contexts Mar 29, 2018
abstract_output.cpp Add output orientation size helper Nov 14, 2018
abstract_output.h Add output orientation size helper Nov 14, 2018
activation.cpp Drop no longer needed cast to Client in TabGroup related code May 20, 2018
activities.cpp Revert "Remove saving and loading (and client matching by) WM_COMMAND." Jun 23, 2016
activities.h [autotests/integration] Add a first test case for activities Aug 12, 2016
appmenu.cpp Don't try to open application menu when client doesn't have one Apr 23, 2018
appmenu.h
atoms.cpp Restore global menu support Jan 11, 2017
atoms.h Restore global menu support Jan 11, 2017
client.cpp Merge branch 'Plasma/5.15' of git://anongit.kde.org/kwin into Plasma/… May 7, 2019
client.h attempt to bring fullscreen unredirect back Apr 21, 2019
client_machine.cpp Fix heap-use-after-free use in resolving ClientMachine Oct 1, 2015
client_machine.h Improved resolving whether a window is on local machine Jan 21, 2013
composite.cpp reduce CPU usage when unredirect is on Apr 21, 2019
composite.h attempt to bring fullscreen unredirect back Apr 21, 2019
config-kwin.h.cmake Require libinput and udev Feb 4, 2018
cursor.cpp Drop XFixes include in cursor.cpp Jan 9, 2019
cursor.h Fix minor Doxygen issues Jan 12, 2019
dbusinterface.cpp Fix VirtualDesktopManager::createVirtualDesktop Jan 21, 2019
dbusinterface.h Fix minor Doxygen issues Jan 12, 2019
debug_console.cpp i18n: Fix untranslatable table row "Delta" Sep 17, 2018
debug_console.h Require libinput and udev Feb 4, 2018
debug_console.ui fixuifiles Sep 18, 2018
deleted.cpp Move groupTransient and group from Client to AbstractClient as virtual Jan 12, 2019
deleted.h attempt to bring fullscreen unredirect back Apr 21, 2019
effectloader.cpp Introduce an EffectsHandler::animationsSupported -> bool Aug 15, 2016
effectloader.h Fix minor EBN issues in the Doxygen code Dec 3, 2018
effects.cpp attempt to bring fullscreen unredirect back Apr 21, 2019
effects.h [libkwineffects] Port the remaining bits of API to dynamic dispatch Jan 7, 2019
egl_context_attribute_builder.cpp Request a high-priority EGL contexts Mar 29, 2018
egl_context_attribute_builder.h [qpa] Use the new OpenGLContextAttributeBuilder to create Qt's OpenGL… Jul 17, 2017
events.cpp Create a dedicated X11Filter for Client sync events and move it to X1… Oct 19, 2017
fixqopengl.h Fix the build on armhf/aarch64 Mar 6, 2018
focuschain.cpp Use explicit Chain type in the focus chain Jul 30, 2018
focuschain.h Use explicit Chain type in the focus chain Jul 30, 2018
geometry.cpp attempt to bring fullscreen unredirect back Apr 21, 2019
geometrytip.cpp Port to CMake AUTOMOC Feb 1, 2016
geometrytip.h Use Xcb::GeometryHints instead of XGetWMNormalHints Jan 27, 2015
gestures.cpp Fix build with clang and GCC6 Mar 29, 2017
gestures.h Fix minor Doxygen issues Jan 12, 2019
globalshortcuts.cpp Don't try to filter null key combinations Apr 24, 2018
globalshortcuts.h Fix minor EBN issues in the Doxygen code Dec 3, 2018
group.cpp Move groupTransient and group from Client to AbstractClient as virtual Jan 12, 2019
group.h Improve updating user timestamp Jun 3, 2014
idle_inhibition.cpp Use appropriate sequence algorithms in IdleInhibition Jan 11, 2019
idle_inhibition.h Use appropriate sequence algorithms in IdleInhibition Jan 11, 2019
input.cpp Revert "Remove comparison between signed and unsigned integer express… Jan 4, 2019
input.h Fix minor Doxygen issues Jan 11, 2019
input_event.cpp Pass SwitchEvent from LibInput through KWin and add to DebugConsole Jan 9, 2018
input_event.h Pass SwitchEvent from LibInput through KWin and add to DebugConsole Jan 9, 2018
input_event_spy.cpp Pass SwitchEvent from LibInput through KWin and add to DebugConsole Jan 9, 2018
input_event_spy.h Pass SwitchEvent from LibInput through KWin and add to DebugConsole Jan 9, 2018
keyboard_input.cpp Introduce a command line option to disable any kind of global shortcuts Dec 13, 2018
keyboard_input.h Split KWin::Xkb into a dedicated .h and .cpp Feb 15, 2017
keyboard_layout.cpp Fix warning Apr 6, 2018
keyboard_layout.h Introduce support for keyboard layout switching policies Apr 22, 2017
keyboard_layout_switching.cpp Use end() instead of constEnd() for where we compare to an iterator Apr 22, 2017
keyboard_layout_switching.h Add support for keyboard layout switching policy "winclass" Apr 22, 2017
keyboard_repeat.cpp Split Keyboard Repeat handling into a dedicated InputEventSpy Jan 27, 2017
keyboard_repeat.h Split Keyboard Repeat handling into a dedicated InputEventSpy Jan 27, 2017
killwindow.cpp Use OnScreenNotification in kill window Dec 21, 2016
killwindow.h Support interactive window selection through the Platform Nov 17, 2016
kwin.kcfg attempt to bring fullscreen unredirect back Apr 21, 2019
kwin.notifyrc SVN_SILENT made messages (.desktop file) - always resolve ours Nov 22, 2018
kwinbindings.cpp Expose more default window management shortcuts Mar 16, 2018
lanczosfilter.cpp Raise minimum required Mesa version to 10.0 Jul 6, 2017
lanczosfilter.h Move SceneOpenGL into a dedicated plugin Sep 30, 2017
layers.cpp attempt to bring fullscreen unredirect back Apr 21, 2019
logind.cpp logind: Add a function that detects the logind seat. Jan 5, 2018
logind.h logind: Add a function that detects the logind seat. Jan 5, 2018
main.cpp Update about data Dec 3, 2018
main.h Ensure the Compositor does not start during termination Jan 12, 2019
main_wayland.cpp Fix --no-global-shortcuts option Feb 5, 2019
main_wayland.h Ensure Workspace is only started once in Wayland-only mode Oct 1, 2017
main_x11.cpp Also unset QT_SCALE_FACTOR Apr 4, 2019
main_x11.h Move everything KCrash related from Application to ApplicationX11 May 9, 2016
manage.cpp Re-evaluate the window rules when the window class of a Client changes Nov 7, 2018
modifier_only_shortcuts.cpp Track the actual pressed keys in ModifierOnlyShortcuts Feb 23, 2017
modifier_only_shortcuts.h Track the actual pressed keys in ModifierOnlyShortcuts Feb 23, 2017
moving_client_x11_filter.cpp Move X11 movingClient handling into a dedicated X11EventFilter Sep 1, 2017
moving_client_x11_filter.h Move X11 movingClient handling into a dedicated X11EventFilter Sep 1, 2017
netinfo.cpp Revert "Revert "Add "SkipSwitcher" to API"" May 24, 2018
netinfo.h Create a dedicated X11EventFilter for the events used by RootInfo Sep 30, 2017
onscreennotification.cpp Drop invalid .moc file inclusion Mar 4, 2018
onscreennotification.h Add support for skip close animation to OnScreenMessage Jan 25, 2017
options.cpp enable unredirect for intel Apr 21, 2019
options.h attempt to bring fullscreen unredirect back Apr 21, 2019
org.freedesktop.ScreenSaver.xml Add a copy of org.freedesktop.ScreenSaver.xml for KWin Mar 24, 2014
org.kde.KWin.VirtualDesktopManager.xml [wayland] Use the new plasma virtual desktop protocol Nov 1, 2018
org.kde.KWin.xml Add a dbus method getWindowInfo returning same data as queryWindowInfo Dec 17, 2018
org.kde.kappmenu.xml Restore global menu support Jan 11, 2017
org.kde.kwin.ColorCorrect.xml [colorcorrection] Night Color - blue light filter at nighttime Dec 11, 2017
org.kde.kwin.Compositing.xml [kcmkwin/compositing] Hide config options which don't make sense if C… Sep 13, 2016
org.kde.kwin.Effects.xml [kwin] Add a new EffectLoader Mar 28, 2014
org.kde.kwin.OrientationSensor.xml Add DBus interface to OrientationSensor and a persistent configuration Dec 26, 2017
orientation_sensor.cpp Add DBus interface to OrientationSensor and a persistent configuration Dec 26, 2017
orientation_sensor.h Add DBus interface to OrientationSensor and a persistent configuration Dec 26, 2017
osd.cpp Add support for skip close animation to OnScreenMessage Jan 25, 2017
osd.h Add support for skip close animation to OnScreenMessage Jan 25, 2017
outline.cpp Move NonComposited Outline into the X11 standalone platform Sep 1, 2017
outline.h Fix minor Doxygen issues Jan 11, 2019
outputscreens.cpp Move output refresh rate getter into AbstractOutput Nov 14, 2018
outputscreens.h Move output refresh rate getter into AbstractOutput Nov 14, 2018
overlaywindow.cpp Move the X11 specific OverlayWindow into the platform/x11 Aug 12, 2017
overlaywindow.h Move the X11 specific OverlayWindow into the platform/x11 Aug 12, 2017
patch.sh fix patchgen again May 23, 2019
placement.cpp Honor struts when placing Wayland transients Dec 31, 2018
placement.h Move implementation of Client::packTo to AbstractClient Oct 26, 2015
platform.cpp Remove unused check Oct 25, 2018
platform.h Fix minor Doxygen issues Jan 12, 2019
pointer_input.cpp [wayland] Don't use hardcoded move-resize cursor Dec 31, 2018
pointer_input.h Rework InputDeviceHandler focus tracking Dec 2, 2018
popup_input_filter.cpp Cancel popup if the user clicked window decoration of parent window Apr 11, 2017
popup_input_filter.h Initial support for popup window handling Apr 7, 2017
resources.qrc [libkwinglutils] Cleanup Shader API: removal of ShaderType Jan 26, 2016
rootinfo_filter.cpp Create a dedicated X11EventFilter for the events used by RootInfo Sep 30, 2017
rootinfo_filter.h Create a dedicated X11EventFilter for the events used by RootInfo Sep 30, 2017
rules.cpp Port window specific rules dialog to DBus Dec 31, 2018
rules.h Merge branch 'Plasma/5.12' into Plasma/5.13 May 20, 2018
sc-apps-kwin.svgz Fix installing of icons Jun 2, 2014
scene.cpp attempt to bring fullscreen unredirect back Apr 21, 2019
scene.h attempt to bring fullscreen unredirect back Apr 21, 2019
screenedge.cpp Fix minor EBN issues Aug 29, 2018
screenedge.h Fix minor Doxygen issues Jan 13, 2019
screenlockerwatcher.cpp Delay query whether screenlocker is registered till WaylandServer is … Aug 16, 2016
screenlockerwatcher.h [autotests/integration] Add ScreenLockerWatcher to the Test::lockScre… Aug 16, 2016
screens.cpp Load Kwin's internal cursors for the highest resolution of attached m… Jun 23, 2018
screens.h
settings.kcfgc Use KConfigXT in KWin::Options Feb 14, 2013
shadow.cpp Avoid deleting ourselves midway through updateShadow Dec 6, 2018
shadow.h Fix minor Doxygen issues Jan 12, 2019
shell_client.cpp attempt to bring fullscreen unredirect back Apr 21, 2019
shell_client.h attempt to bring fullscreen unredirect back Apr 21, 2019
shortcutdialog.ui [kwin] Use ui-file for ShortcutDialog Feb 27, 2014
sm.cpp Merge branch 'Plasma/5.12' into Plasma/5.15 Feb 5, 2019
sm.h Revert "Remove saving and loading (and client matching by) WM_COMMAND." Jun 23, 2016
tabgroup.cpp Port TabGroup from Client to AbstractClient May 20, 2018
tabgroup.h Move TabGroup functionality from Client to AbstractClient May 20, 2018
tabletmodemanager.cpp Remove remaining HAVE_INPUT ifdef sections Feb 10, 2018
tabletmodemanager.h Expose if the tablet mode switch is available Jan 25, 2018
thumbnailitem.cpp Fix minor EBN issues Aug 29, 2018
thumbnailitem.h ThumbnailItem operates on AbstractClient May 21, 2015
toplevel.cpp attempt to bring fullscreen unredirect back Apr 21, 2019
toplevel.h attempt to bring fullscreen unredirect back Apr 21, 2019
touch_hide_cursor_spy.cpp Hide mouse cursor when interacting with touch screen Dec 13, 2018
touch_hide_cursor_spy.h Hide mouse cursor when interacting with touch screen Dec 13, 2018
touch_input.cpp Leave decoration on touch up only once Dec 13, 2018
touch_input.h Unset touch targets on no current touch points Dec 13, 2018
udev.cpp [platform/virtual] Drop support for vgem and rendernode Jan 12, 2019
udev.h [platform/virtual] Drop support for vgem and rendernode Jan 12, 2019
unmanaged.cpp [wayland] Move AbstractClient::desktops from QList to QVector Nov 7, 2018
unmanaged.h attempt to bring fullscreen unredirect back Apr 21, 2019
unredirect.md update unredirect.md May 13, 2019
useractions.cpp Port window specific rules dialog to DBus Dec 31, 2018
useractions.h [wayland] Use the new plasma virtual desktop protocol Nov 1, 2018
utils.cpp Make it easier to debug the virtualkeyboard Dec 10, 2018
utils.h Fix minor Doxygen issues Jan 12, 2019
virtual_terminal.cpp Fix build with future glibc (major/minor macros) Apr 20, 2016
virtual_terminal.h [wayland] Don't break if we try to vt-switch to vt we're on Jul 20, 2015
virtualdesktops.cpp [wayland] Send VirtualDesktop::done after editing a property Jan 25, 2019
virtualdesktops.h Fix VirtualDesktopManager::createVirtualDesktop Jan 21, 2019
virtualdesktopsdbustypes.cpp [wayland] Use the new plasma virtual desktop protocol Nov 1, 2018
virtualdesktopsdbustypes.h [wayland] Use the new plasma virtual desktop protocol Nov 1, 2018
virtualkeyboard.cpp Make it easier to debug the virtualkeyboard Dec 10, 2018
virtualkeyboard.h Fix minor EBN issues Aug 29, 2018
virtualkeyboard_dbus.cpp Add DBus protocol to virtual keyboard Oct 19, 2017
virtualkeyboard_dbus.h Add DBus protocol to virtual keyboard Oct 19, 2017
was_user_interaction_x11_filter.cpp Create a dedicated X11EventFilter for recognizing first user interaction Aug 19, 2017
was_user_interaction_x11_filter.h Create a dedicated X11EventFilter for recognizing first user interaction Aug 19, 2017
wayland_cursor_theme.cpp Load Kwin's internal cursors for the highest resolution of attached m… Jun 23, 2018
wayland_cursor_theme.h Set specific edge cursor shape when resizing Jun 11, 2018
wayland_server.cpp [wayland] XdgDecoration Support Jan 1, 2019
wayland_server.h [wayland] XdgDecoration Support Jan 1, 2019
window_property_notify_x11_filter.cpp Clean up includes Aug 31, 2018
window_property_notify_x11_filter.h Add a dedicated X11EventFilter for forwarding property events to the … Sep 25, 2017
workspace.cpp attempt to bring fullscreen unredirect back Apr 21, 2019
workspace.h [wayland] Use the new plasma virtual desktop protocol Nov 1, 2018
x11eventfilter.cpp Support multiple event types in X11EventFilter Nov 16, 2016
x11eventfilter.h Support multiple event types in X11EventFilter Nov 16, 2016
xcbutils.cpp Clean debug output Jul 20, 2015
xcbutils.h Fix minor Doxygen issues Jan 12, 2019
xkb.cpp Support enabling numlock on startup Nov 1, 2018
xkb.h Support enabling numlock on startup Nov 1, 2018
xkb_qt_mapping.h Support mapping QKeyEvent to xkb_keysym_t Sep 19, 2017

README.md

KWin-lowlatency

KWin-lowlatency is my attempt to reduce latency and stuttering in the popular KWin compositor used in KDE.

background

stock KWin has a major issue regarding stuttering. it stutters heavily, and if you don't want that, then you have the latency problem (of up to 50ms!).

the rationale for such a problem is that KWin uses a weird method to paint the screen. instead of simply sync'ing to vblank, it uses a timer. yeah, a timer that is off-sync with the vblank interval. you can prove this by disabling VSync in the system settings. you'll see just 1 line of tearing in your screen, and well, that's the time it swaps due to the timer.

in order to "fix" this under vanilla KWin, a typical solution is to insert this in kwinrc:

MaxFPS=200
RefreshRate=200

effectively making the timer faster than the actual screen's rate, forcing VSync at some point.

however, this introduces additional output lag, which varies depending on your driver, but usually it's 50ms (still too high). you can prove this by moving a window. you'll see the cursor being ahead of the title bar, or at least so under X.

so, how to fix this? let's ditch the timer and let us access the VBlank interval directly.

but how do we do that? by using glFinish.

this is a much, much better solution over glXWaitVideoSyncSGI, as it achieves the same effect, doesn't have a chance of freezing under Mesa, and may work under EGL on X and Wayland.

now, by doing this, we have a proper desktop without stuttering, but the lag persists...

after digging deep into the code, i found this piece of code in particular, which is pretty much the culprit:

if (!blocksForRetrace()) {
  // This also sets lastDamage to empty which prevents the frame from
  // being posted again when prepareRenderingFrame() is called.
  present();
} else {
  // Make sure that the GPU begins processing the command stream
  // now and not the next time prepareRenderingFrame() is called.
  glFlush();
}

by removing this code and simply presenting as soon as possible (we're blocking for retrace anyway due to the glFinish thingy), we cut off 1 whole frame of lag!

but hey, can we go further? yes, of course!

now, by sleeping for a very few milliseconds (up to 8 in high-end systems) the compositor has more time for user input before rendering, which further reduces latency.

the reason why only up to 8ms is because any further would leave little room for rendering, and that will actually produce more stuttering than fix it.

KWin-lowlatency is not...

  • perfect. it tries its best to deliver low-latency no-stutter video, but I can't promise this is always the case. as an example, it will stutter if you select another window, or if you have too many windows open.
  • truly designed for low-end systems. if you use KWin-lowlatency in one of them, you may experience stuttering.

installation

Arch Linux

kwin-lowlatency is available in the AUR.

Fedora

ZaWertun provides pre-compiled packages in the Copr.

Gentoo

an overlay is available, courtesy of agates.

openSUSE Tumbleweed

kwin-lowlatency can be found at home:KAMiKAZOW:KDE (OBS).

other distributions/manual method

you can compile/install this yourself if your distro isn't listed here (yes, I know Ubuntu is missing) or if you want to.

acquiring the source

you can get the source code by using any of the following 2 methods:

git repo clone

$ git clone https://github.com/tildearrow/kwin-lowlatency.git
$ cd kwin-lowlatency

you may want to check the current stable version out:

$ git checkout v5.15.5

patch format

download stock KWin source and patch file:

$ wget https://download.kde.org/stable/plasma/5.15.5/kwin-5.15.5.tar.xz
$ wget http://tildearrow.zapto.org/storage/kwin-lowlatency/kwin-lowlatency-5.15.5.patch

extract:

$ tar -xvf kwin-5.15.5.tar.xz

patch:

$ cd kwin-5.15.5
$ patch -p1 < ../kwin-lowlatency-5.15.5.patch

building

$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_LIBEXECDIR=lib -DBUILD_TESTING=OFF
$ make

installing

$ sudo make install

contacting original KWin development team

additional options menu

KWin-lowlatency introduces few extra options in System Settings > Display and Monitor > Compositor. these are:

  • animation curve: allows you to make animations look smoother. I have a gripe with linear animations, hence this option. i'll post a video about this later.
  • latency/stutter control: use if you have a high-end system and want lower latency, or if you're having stuttering and want to reduce it.
  • maximum/minimum latency reduction: allows you to configure the latency reduction window. examples (min/max): 8/0 default, 0/0 disable latency reduction, and 8/8 lowest latency possible. this is limited to 8ms, since any further would cause major stuttering and slowdowns.

misc/FAQ

Ubuntu Ubuntu Ubuntu

i'm working on it...

what's this "Paint cursor" effect in Desktop Effects?

it's an effect I wrote back in 2018 when experimenting with kmsgrab for some private recordings. it basically redraws the cursor. this may seem redundant, but actually is helpful for recording with kmsgrab (since it doesn't draw the hardware sprite).

will this work under Wayland?

no, it won't, but I am working on it. so far using DRM VBlank only showed negative results, with applications running at half speed. now i'm trying again with glFinish and friends...

i'm using the modesetting driver (instead of the amdgpu DDX driver) under an AMD card, and can see some latency. how do I fix this?

an option will come soon.

do you have any plans to upstream this?

at this moment, not really:

  • i still can't ensure this will work everywhere (but it should).
  • this patchset brings full-screen unredirection back, which is a feature the KDE devs definitely don't want to see in upstream since they have another "approach" (allow apps to block compositing).
    • the problem with their approach is that it means every app must support it in order to work, which is something not every app does. on the other hand, unredirection works for most apps, and doesn't require developers to change their code for it to work.
    • another problem is that instead of suspending compositing, it disables compositing. this means you get to see a few frames of an ugly desktop when the app quits. this doesn't happen with unredirection.
  • furthermore, this also brings back "close" option in Present Windows, which once again the KDE devs despise.

unredirection is not working.

please see unredirect.md for known issues. you may file a bug report as well.

support

use the issues section at the top.

bugs?

use the issues section at the top. but wait! before reporting an issue, first test it again on the official KWin to determine whether this is really a KWin-lowlatency-only bug.

if the bug also reproduces in official KWin, please file a bug on their bug tracker instead.

Developing on KWin

Please refer to hacking documentation for how to build and start KWin. Further information about KWin's test suite can be found in TESTING.md.

no, sorry, there are no tests for the low-latency features yet.

You can’t perform that action at this time.