My KWIN fork where I work on features like per-output virtual desktops
Find a file
Vlad Zahorodnii a78754b695 Fix recorded render time when glXSwapBuffers() blocks
If glXSwapBuffers() blocks, the render loop will also record how long
kwin was blocked. Obviously, we don't want that.
2021-01-28 12:55:10 +00:00
3rdparty Introduce ColorManager component 2020-12-13 23:53:33 +02:00
autotests Add TestOutputManagement::testOutputDeviceRemoved 2021-01-27 08:18:57 +00:00
cmake/modules cmake: Remove FindFontconfig.cmake 2021-01-06 11:21:03 +02:00
data Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
decorations Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
doc Updated version to 5.21. Rewrote the whole article to be more descriptive. 2021-01-27 11:46:02 +00:00
effects Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
helpers Include <fcntl.h> for open() 2021-01-21 22:18:33 +01:00
kcmkwin kcm/kwinrules: Add hint about ignore geometry 2021-01-22 18:18:38 +01:00
kconf_update Fix a typo 2021-01-07 21:28:00 +02:00
libinput Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
libkwineffects kwineffects: Fix detection of Radeon GPUs 2021-01-25 17:55:08 +02:00
LICENSES
platformsupport Remove redundant usesOverlayWindow() method 2021-01-27 13:57:56 +00:00
plugins Fix recorded render time when glXSwapBuffers() blocks 2021-01-28 12:55:10 +00:00
qml Fix Connections warnings 2020-11-11 19:22:40 +00:00
scripting Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
scripts SVN_SILENT made messages (.desktop file) - always resolve ours 2021-01-14 07:04:00 +01:00
tabbox Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
tests cmake: Remove FindUDev.cmake 2021-01-05 23:08:47 +02:00
xwl xwl: No need to delete the source immediately 2020-10-29 15:56:13 +01:00
.gitignore Add .gitignore file to ignore generated .clang-format 2020-12-18 10:03:45 +00:00
abstract_client.cpp Also set geometry restore to the new screen if maximizing 2021-01-25 19:37:06 +00:00
abstract_client.h Move the geometry restore stuff for fullscreen into a new method 2021-01-25 19:37:06 +00:00
abstract_opengl_context_attribute_builder.cpp
abstract_opengl_context_attribute_builder.h
abstract_output.cpp wayland: Close layer-shell clients when associated output is disabled 2021-01-22 10:17:45 +00:00
abstract_output.h wayland: Close layer-shell clients when associated output is disabled 2021-01-22 10:17:45 +00:00
abstract_wayland_output.cpp wayland: Close layer-shell clients when associated output is disabled 2021-01-22 10:17:45 +00:00
abstract_wayland_output.h wayland: Close layer-shell clients when associated output is disabled 2021-01-22 10:17:45 +00:00
activation.cpp
activities.cpp If include is define in .h remove it if it's defined in .cpp too (scripted) 2020-10-23 21:37:16 +02:00
activities.h
appmenu.cpp Trim trailing whitespace 2020-11-28 11:01:47 +00:00
appmenu.h
atoms.cpp
atoms.h
client_machine.cpp
client_machine.h
CMakeLists.txt Fix the systemd wayland boot 2021-01-27 13:47:56 +00:00
colordevice.cpp Introduce ColorManager component 2020-12-13 23:53:33 +02:00
colordevice.h Introduce ColorManager component 2020-12-13 23:53:33 +02:00
colormanager.cpp Fix minor coding style issues 2020-12-21 20:27:35 +02:00
colormanager.h Re-apply color transforms when session is re-activated 2020-12-21 20:25:32 +02:00
composite.cpp Fix recorded render time when glXSwapBuffers() blocks 2021-01-28 12:55:10 +00:00
composite.h Introduce RenderLoop 2021-01-06 16:59:29 +00:00
config-kwin.h.cmake Drop hwcomposer backend 2021-01-05 17:38:36 +00:00
cursor.cpp Provide cursor geometry in device-independent pixels 2020-10-27 06:04:17 +00:00
cursor.h Trim trailing whitespace 2020-11-28 11:01:47 +00:00
dbusinterface.cpp kcm/kwinrules: Detect and suggest activities from a window 2021-01-05 14:31:07 +01:00
dbusinterface.h Introduce infrastructure for compositor extensions 2020-11-24 15:50:33 +00:00
debug_console.cpp tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
debug_console.h tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
debug_console.ui
deleted.cpp Don't use "no border" property to determine if Deleted was decorated 2021-01-24 23:52:27 +00:00
deleted.h Don't use "no border" property to determine if Deleted was decorated 2021-01-24 23:52:27 +00:00
dmabuftexture.cpp
dmabuftexture.h
effectloader.cpp If include is define in .h remove it if it's defined in .cpp too (scripted) 2020-10-23 21:37:16 +02:00
effectloader.h
effects.cpp Prepare kwin for compiling with EGL_NO_PLATFORM_SPECIFIC_TYPES 2020-12-10 10:54:45 +02:00
effects.h Provide expected presentation time to effects 2020-12-10 07:14:42 +00:00
egl_context_attribute_builder.cpp
egl_context_attribute_builder.h
events.cpp wayland: Plumb some X11 code 2020-11-30 12:54:29 +00:00
focuschain.cpp [focuschain/task switcher] Add hidden option to govern repositioning minimized windows 2020-11-04 16:16:29 +00:00
focuschain.h Revert "[focuschain/task switcher] Remove special handling for minimized windows" 2020-11-04 16:16:29 +00:00
ftrace.cpp Minor pedantic include fixes in FTraceLogger 2021-01-14 22:18:23 +02:00
ftrace.h Minor pedantic include fixes in FTraceLogger 2021-01-14 22:18:23 +02:00
geometrytip.cpp
geometrytip.h
gestures.cpp
gestures.h
globalshortcuts.cpp
globalshortcuts.h
group.cpp
group.h
HACKING.md
idle_inhibition.cpp
idle_inhibition.h
input.cpp Restore default key repeat mode 2021-01-28 09:36:11 +00:00
input.h Add test for TouchInputRedirection::m_touches 2021-01-18 17:00:47 +00:00
input_event.cpp tablet_v2: Support remaining controls 2021-01-06 18:47:59 +01:00
input_event.h tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
input_event_spy.cpp tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
input_event_spy.h tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
inputmethod.cpp Port wayland code away from factory methods in KWaylandServer::Display 2020-12-14 13:05:47 +00:00
inputmethod.h inputmethod: remove the workarounds 2020-10-08 17:56:44 +05:30
inputpanelv1client.cpp Schedule a repaint when a window is damaged 2020-12-02 15:33:08 +00:00
inputpanelv1client.h Drop AbstractClient::isInitialPositionSet() 2020-11-27 10:41:13 +02:00
inputpanelv1integration.cpp Port wayland code away from factory methods in KWaylandServer::Display 2020-12-14 13:05:47 +00:00
inputpanelv1integration.h
internal_client.cpp Schedule a repaint when a window is damaged 2020-12-02 15:33:08 +00:00
internal_client.h Drop Toplevel::windowId() 2020-11-10 09:58:07 +00:00
keyboard_input.cpp fix: keyboard layout applet: no flag if Display Name is set 2021-01-20 16:39:31 +03:00
keyboard_input.h
keyboard_layout.cpp Register unique service name when wayland keyboard interface is in use 2021-01-21 12:24:07 +00:00
keyboard_layout.h refactor: keyboard layout applet: return to Properties-based QML API 2021-01-20 16:39:32 +03:00
keyboard_layout_switching.cpp fix: Clazy detached QVector warning [clazy-range-loop] 2021-01-20 16:39:32 +03:00
keyboard_layout_switching.h refactor: pass layout in KeyboardLayout::layoutChanged() signal argument 2021-01-20 16:39:32 +03:00
keyboard_repeat.cpp wayland: adapt to changes in the keyboard and seat interface 2020-10-20 14:48:29 +00:00
keyboard_repeat.h
killwindow.cpp
killwindow.h
kwin.kcfg Introduce a setting to specify an input method 2021-01-18 16:43:05 +00:00
kwin.notifyrc SVN_SILENT made messages (.desktop file) - always resolve ours 2021-01-14 07:04:00 +01:00
kwinbindings.cpp Add keyboard shortcuts for general navigation following the Meta-for-desktop xdg spec 2020-12-07 15:09:08 +00:00
KWinDBusInterfaceConfig.cmake.in
layers.cpp Rename the variable where override-redirect windows are stored 2020-10-09 18:49:32 +03:00
layershellv1client.cpp wayland: Close layer-shell clients when associated output is disabled 2021-01-22 10:17:45 +00:00
layershellv1client.h wayland: Close layer-shell clients when associated output is disabled 2021-01-22 10:17:45 +00:00
layershellv1integration.cpp wayland: Arrange layer shell surfaces only on enabled outputs 2021-01-22 10:17:45 +00:00
layershellv1integration.h
linux_dmabuf.cpp
linux_dmabuf.h
logind.cpp Remove unnecessary comparisons 2020-11-07 02:56:09 +01:00
logind.h drm: Make sure the screens are turned on when we come from suspend 2020-11-03 17:59:02 +00:00
logo.png
main.cpp Introduce RenderLoop 2021-01-06 16:59:29 +00:00
main.h Re-apply color transforms when session is re-activated 2020-12-21 20:25:32 +02:00
main_wayland.cpp wayland: fix check for creating input method connection 2021-01-20 20:52:53 +05:30
main_wayland.h Restart the input method if it crashes 2021-01-18 16:43:05 +00:00
main_x11.cpp Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
main_x11.h Drop Platform::createScreens() 2020-12-21 09:20:16 +00:00
Mainpage.dox
Messages.sh Convert Night Color into a plugin 2020-11-27 18:55:01 +00:00
modifier_only_shortcuts.cpp
modifier_only_shortcuts.h
moving_client_x11_filter.cpp
moving_client_x11_filter.h
netinfo.cpp
netinfo.h
onscreennotification.cpp
onscreennotification.h
options.cpp platforms/x11: Always set swap interval to 1 2021-01-07 13:10:59 +00:00
options.h platforms/x11: Always set swap interval to 1 2021-01-07 13:10:59 +00:00
org.kde.kappmenu.xml
org.kde.kwin.Compositing.xml
org.kde.kwin.Effects.xml
org.kde.KWin.Plugins.xml Introduce infrastructure for compositor extensions 2020-11-24 15:50:33 +00:00
org.kde.KWin.Session.xml Add an explicit quit mechanism controlled by plasma 2020-11-22 22:04:59 +00:00
org.kde.KWin.VirtualDesktopManager.xml
org.kde.KWin.xml
osd.cpp
osd.h
outline.cpp
outline.h
overlaywindow.cpp
overlaywindow.h
placement.cpp placement: Remove unused function 2020-11-20 18:10:01 +01:00
placement.h placement: Make internal methods private 2020-11-20 18:18:52 +01:00
plasma-kwin_wayland.service.in
plasma-kwin_x11.service.in
platform.cpp Add test for TouchInputRedirection::m_touches 2021-01-18 17:00:47 +00:00
platform.h Add test for TouchInputRedirection::m_touches 2021-01-18 17:00:47 +00:00
plugin.cpp Introduce infrastructure for compositor extensions 2020-11-24 15:50:33 +00:00
plugin.h Introduce infrastructure for compositor extensions 2020-11-24 15:50:33 +00:00
pluginmanager.cpp Introduce infrastructure for compositor extensions 2020-11-24 15:50:33 +00:00
pluginmanager.h Introduce infrastructure for compositor extensions 2020-11-24 15:50:33 +00:00
pointer_input.cpp Adjust kwin to pointer constraints changes in kws 2020-11-03 22:11:28 +02:00
pointer_input.h
popup_input_filter.cpp
popup_input_filter.h
README.md
renderjournal.cpp Introduce RenderJournal 2021-01-06 16:59:29 +00:00
renderjournal.h Introduce RenderJournal 2021-01-06 16:59:29 +00:00
renderloop.cpp Properly schedule repaints with premature presentation timestamps 2021-01-14 20:45:20 +02:00
renderloop.h Introduce RenderLoop 2021-01-06 16:59:29 +00:00
renderloop_p.h platforms/drm: Make frame scheduling robust 2021-01-06 16:59:30 +00:00
rootinfo_filter.cpp
rootinfo_filter.h
rulebooksettings.cpp
rulebooksettings.h
rulebooksettingsbase.kcfg
rulebooksettingsbase.kcfgc
rules.cpp kwinrules: Allow multiple activities in rule settings 2021-01-03 23:03:45 +01:00
rules.h kwinrules: Allow multiple activities in rule settings 2021-01-03 23:03:45 +01:00
rulesettings.kcfg kwinrules: Allow multiple activities in rule settings 2021-01-03 23:03:45 +01:00
rulesettings.kcfgc
scene.cpp Fix recorded render time when glXSwapBuffers() blocks 2021-01-28 12:55:10 +00:00
scene.h Fix recorded render time when glXSwapBuffers() blocks 2021-01-28 12:55:10 +00:00
screenedge.cpp If include is define in .h remove it if it's defined in .cpp too (scripted) 2020-10-23 21:37:16 +02:00
screenedge.h
screenlockerwatcher.cpp
screenlockerwatcher.h
screens.cpp Prevent unused variable warnings when building for tests 2021-01-15 13:48:23 +01:00
screens.h Drop Platform::createScreens() 2020-12-21 09:20:16 +00:00
service_utils.cpp
service_utils.h Disable debug log messages for KWIN_UTILS by default 2021-01-26 10:50:57 +02:00
settings.kcfgc
shadow.cpp
shadow.h Trim trailing whitespace 2020-11-28 11:01:47 +00:00
shortcutdialog.ui
sm.cpp Fix fullscreen moveresize and set geometry restore to the screen a fullscreen client gets moved to 2021-01-20 19:36:07 +00:00
sm.h Initialise SessionState 2021-01-27 14:48:38 +00:00
subsurfacemonitor.cpp
subsurfacemonitor.h
syncalarmx11filter.cpp
syncalarmx11filter.h
tablet_input.cpp tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
tablet_input.h tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
tabletmodemanager.cpp Remove confusing debug message 2020-11-28 11:00:40 +00:00
tabletmodemanager.h
TESTING.md
thumbnailitem.cpp
thumbnailitem.h
toplevel.cpp Simplify Toplevel::addRepaintFull() 2021-01-21 10:18:00 +00:00
toplevel.h Perform compositing even if there is nothing to repaint 2021-01-06 16:59:29 +00:00
touch_hide_cursor_spy.cpp
touch_hide_cursor_spy.h
touch_input.cpp Process TOUCH_CANCEL events from libinput individually 2021-01-18 17:00:47 +00:00
touch_input.h Add test for TouchInputRedirection::m_touches 2021-01-18 17:00:47 +00:00
udev.cpp Drop check for if parent subsystem is PCI 2020-10-13 11:42:17 +00:00
udev.h Multi-GPU output support on Wayland 2020-10-05 21:05:55 +00:00
unmanaged.cpp Schedule a repaint when a window is damaged 2020-12-02 15:33:08 +00:00
unmanaged.h Schedule a repaint when a window is damaged 2020-12-02 15:33:08 +00:00
useractions.cpp Convert Night Color into a plugin 2020-11-27 18:55:01 +00:00
useractions.h
utils.cpp Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
utils.h
virtual_terminal.cpp
virtual_terminal.h
virtualdesktops.cpp Trim trailing whitespace 2020-11-28 11:01:47 +00:00
virtualdesktops.h
virtualdesktopsdbustypes.cpp
virtualdesktopsdbustypes.h
virtualkeyboard_dbus.cpp
virtualkeyboard_dbus.h
was_user_interaction_x11_filter.cpp
was_user_interaction_x11_filter.h
wayland_server.cpp Introduce helper to restart kwin on crash exit 2020-12-15 15:43:48 +00:00
wayland_server.h Introduce helper to restart kwin on crash exit 2020-12-15 15:43:48 +00:00
waylandclient.cpp wayland: Don't force a bpp of 24 for desktop windows 2020-12-14 14:09:24 +00:00
waylandclient.h Drop Toplevel::windowId() 2020-11-10 09:58:07 +00:00
waylandshellintegration.cpp
waylandshellintegration.h
window_property_notify_x11_filter.cpp
window_property_notify_x11_filter.h
workspace.cpp wayland: Fix (mouse precedence) focus policies on desktop switch 2021-01-27 13:56:46 +00:00
workspace.h Fix typos in comment 2020-11-17 21:55:42 +00:00
x11client.cpp x11: Update decoration input shape 2021-01-26 06:52:43 +00:00
x11client.h Fix fullscreen moveresize and set geometry restore to the screen a fullscreen client gets moved to 2021-01-20 19:36:07 +00:00
x11eventfilter.cpp
x11eventfilter.h
xcbutils.cpp
xcbutils.h
xcursortheme.cpp
xcursortheme.h
xdgshellclient.cpp wayland: Update decoration on surface commit 2021-01-24 23:52:27 +00:00
xdgshellclient.h Fix fullscreen moveresize and set geometry restore to the screen a fullscreen client gets moved to 2021-01-20 19:36:07 +00:00
xdgshellintegration.cpp Port wayland code away from factory methods in KWaylandServer::Display 2020-12-14 13:05:47 +00:00
xdgshellintegration.h
xkb.cpp Lower default severity of logging categories 2021-01-25 14:03:14 +02:00
xkb.h fix: KeyboardLayoutTest fails on updated DBus API 2021-01-20 16:39:32 +03:00
xkb_qt_mapping.h add audio pause mapping in xkb_qt_mapping. 2020-12-02 17:50:55 +08:00
xwaylandclient.cpp
xwaylandclient.h

KWin

KWin is an easy to use, but flexible, composited Window Manager for Xorg windowing systems (Wayland, X11) on Linux. Its primary usage is in conjunction with a Desktop Shell (e.g. KDE Plasma Desktop). KWin is designed to go out of the way; users should not notice that they use a window manager at all. Nevertheless KWin provides a steep learning curve for advanced features, which are available, if they do not conflict with the primary mission. KWin does not have a dedicated targeted user group, but follows the targeted user group of the Desktop Shell using KWin as it's window manager.

KWin is not...

  • a standalone window manager (c.f. openbox, i3) and does not provide any functionality belonging to a Desktop Shell.
  • a replacement for window managers designed for use with a specific Desktop Shell (e.g. GNOME Shell)
  • a minimalistic window manager
  • designed for use without compositing or for X11 network transparency, though both are possible.

Contacting KWin development team

Support

Application Developer

If you are an application developer having questions regarding windowing systems (either X11 or Wayland) please do not hesitate to contact us. Preferable through our mailing list. Ideally subscribe to the mailing list, so that your mail doesn't get stuck in the moderation queue.

End user

Please contact the support channels of your Linux distribution for user support. The KWin development team does not provide end user support.

Reporting bugs

Please use KDE's bugtracker and report for product KWin.

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.

Guidelines for new features

A new Feature can only be added to KWin if:

  • it does not violate the primary missions as stated at the start of this document
  • it does not introduce instabilities
  • it is maintained, that is bugs are fixed in a timely manner (second next minor release) if it is not a corner case.
  • it works together with all existing features
  • it supports both single and multi screen (xrandr)
  • it adds a significant advantage
  • it is feature complete, that is supports at least all useful features from competitive implementations
  • it is not a special case for a small user group
  • it does not increase code complexity significantly
  • it does not affect KWin's license (GPLv2+)

All new added features are under probation, that is if any of the non-functional requirements as listed above do not hold true in the next two feature releases, the added feature will be removed again.

The same non functional requirements hold true for any kind of plugins (effects, scripts, etc.). It is suggested to use scripted plugins and distribute them separately.