My KWIN fork where I work on features like per-output virtual desktops
Find a file
2021-01-18 16:43:05 +00:00
3rdparty Introduce ColorManager component 2020-12-13 23:53:33 +02:00
autotests cmake: Drop Qt5::Sensors dependency 2021-01-15 23:27:32 +02:00
cmake/modules cmake: Remove FindFontconfig.cmake 2021-01-06 11:21:03 +02:00
data Drop hwcomposer backend 2021-01-05 17:38:36 +00:00
decorations Add a QRect to showWindowMenu 2020-11-22 21:47:31 +00:00
doc
effects SVN_SILENT made messages (.desktop file) - always resolve ours 2021-01-14 07:04:00 +01:00
helpers Missing includes (for strdup() and strlen()) 2020-12-16 13:53:24 +01:00
kcmkwin SVN_SILENT made messages (.desktop file) - always resolve ours 2021-01-17 06:42:32 +01:00
kconf_update Fix a typo 2021-01-07 21:28:00 +02:00
libinput tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
libkwineffects Introduce RenderLoop 2021-01-06 16:59:29 +00:00
LICENSES
platformsupport platformsupport: Set PUBLIC include directories 2021-01-07 09:49:26 +00:00
plugins SVN_SILENT made messages (.desktop file) - always resolve ours 2021-01-17 06:42:32 +01:00
qml Fix Connections warnings 2020-11-11 19:22:40 +00:00
scripting
scripts SVN_SILENT made messages (.desktop file) - always resolve ours 2021-01-14 07:04:00 +01:00
tabbox [kcmkwin/kwinscreenedges] Disable left touch edge by default 2020-11-20 14:25:15 +00:00
tests cmake: Remove FindUDev.cmake 2021-01-05 23:08:47 +02:00
xwl
.gitignore Add .gitignore file to ignore generated .clang-format 2020-12-18 10:03:45 +00:00
abstract_client.cpp Drop AbstractClient::isInitialPositionSet() 2020-11-27 10:41:13 +02:00
abstract_client.h Drop AbstractClient::isInitialPositionSet() 2020-11-27 10:41:13 +02:00
abstract_opengl_context_attribute_builder.cpp
abstract_opengl_context_attribute_builder.h
abstract_output.cpp Introduce RenderLoop 2021-01-06 16:59:29 +00:00
abstract_output.h Introduce RenderLoop 2021-01-06 16:59:29 +00:00
abstract_wayland_output.cpp Add TestOutputManagement::testOutputDeviceDisabled test 2021-01-14 08:21:59 +00:00
abstract_wayland_output.h Add manufacturer, model, and serialNumber properties to AbstractOutput 2020-11-24 18:16:19 +00:00
activation.cpp
activities.cpp
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 cmake: Don't search for Qt5Sensors 2021-01-15 23:30:25 +02: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 Add ftrace markers 2021-01-14 09:31:59 +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
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
deleted.h
dmabuftexture.cpp
dmabuftexture.h
effectloader.cpp
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 Prettify license headers 2020-08-07 19:57:56 +00:00
group.cpp
group.h
HACKING.md
idle_inhibition.cpp
idle_inhibition.h
input.cpp tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01:00
input.h tablet_v2: Use libinput device groups to deduce the device's tablet 2021-01-06 18:47:59 +01: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
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 Revert "refactor: localize checkLayoutChange() check" 2020-12-13 03:06:16 +00:00
keyboard_input.h Prettify license headers 2020-08-07 19:57:56 +00:00
keyboard_layout.cpp Remove a basic SNI for keyboard layout 2021-01-07 23:58:15 +00:00
keyboard_layout.h Remove a basic SNI for keyboard layout 2021-01-07 23:58:15 +00:00
keyboard_layout_switching.cpp Remove a basic SNI for keyboard layout 2021-01-07 23:58:15 +00:00
keyboard_layout_switching.h
keyboard_repeat.cpp
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
layershellv1client.cpp Schedule a repaint when a window is damaged 2020-12-02 15:33:08 +00:00
layershellv1client.h Schedule a repaint when a window is damaged 2020-12-02 15:33:08 +00:00
layershellv1integration.cpp Port wayland code away from factory methods in KWaylandServer::Display 2020-12-14 13:05:47 +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 Restart the input method if it crashes 2021-01-18 16:43:05 +00:00
main_wayland.h Restart the input method if it crashes 2021-01-18 16:43:05 +00:00
main_x11.cpp Re-apply color transforms when session is re-activated 2020-12-21 20:25:32 +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 TestOutputManagement::testOutputDeviceDisabled test 2021-01-14 08:21:59 +00:00
platform.h Introduce RenderLoop 2021-01-06 16:59:29 +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 Port kwinrules kcm to kconfigxt 2020-03-16 13:21:43 +01:00
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 Replace window repaints with layer repaints 2021-01-06 16:59:30 +00:00
scene.h Replace window repaints with layer repaints 2021-01-06 16:59:30 +00:00
screenedge.cpp
screenedge.h
screenlockerwatcher.cpp
screenlockerwatcher.h Prettify license headers 2020-08-07 19:57:56 +00:00
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
settings.kcfgc
shadow.cpp
shadow.h Trim trailing whitespace 2020-11-28 11:01:47 +00:00
shortcutdialog.ui
sm.cpp Add an explicit quit mechanism controlled by plasma 2020-11-22 22:04:59 +00:00
sm.h Add an explicit quit mechanism controlled by plasma 2020-11-22 22:04:59 +00:00
subsurfacemonitor.cpp
subsurfacemonitor.h
syncalarmx11filter.cpp
syncalarmx11filter.h Prettify license headers 2020-08-07 19:57:56 +00:00
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 Replace window repaints with layer repaints 2021-01-06 16:59:30 +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
touch_input.h
udev.cpp
udev.h
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
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 Prettify license headers 2020-08-07 19:57:56 +00:00
waylandshellintegration.h
window_property_notify_x11_filter.cpp
window_property_notify_x11_filter.h
workspace.cpp Drop flag to indicate if swap buffers is blocking 2021-01-06 16:59:29 +00:00
workspace.h Fix typos in comment 2020-11-17 21:55:42 +00:00
x11client.cpp Remove unused field 2021-01-12 13:06:38 +02:00
x11client.h Remove unused field 2021-01-12 13:06:38 +02:00
x11eventfilter.cpp Prettify license headers 2020-08-07 19:57:56 +00:00
x11eventfilter.h
xcbutils.cpp
xcbutils.h
xcursortheme.cpp
xcursortheme.h
xdgshellclient.cpp Implement xdgshell v3 2021-01-06 01:08:25 +00:00
xdgshellclient.h Implement xdgshell v3 2021-01-06 01:08:25 +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 feat: QML Keyboard Layout applet: allow Short Name override 2020-11-27 17:35:35 +00:00
xkb.h feat: expose keyboard layout Short Name via DBus 2020-11-24 16:34:57 +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.