My KWIN fork where I work on features like per-output virtual desktops
Find a file
Aleix Pol e28e4cb189 Move inputConfig away from KWin::Application
We were calling it from tests that were not running a KWin::Application
and not even including the symbols from main.cpp and main.h. The only
reason they linked was that it was static_casting up the QCoreApplication.
2020-07-13 12:54:34 +02:00
3rdparty [wayland] Rework Xcursor theme loading code 2020-06-18 07:14:58 +00:00
autotests Move inputConfig away from KWin::Application 2020-07-13 12:54:34 +02:00
cmake/modules Add Findepoll.cmake 2020-06-05 12:41:24 +02:00
colorcorrection Revert "[kcm/effects] Clip ListView" 2020-02-22 11:53:59 +01:00
data ScreenshotEffect: Use Service Property to authorize screenshot without confirmation 2020-06-16 19:00:04 +02:00
decorations [decorations] Fix rendering for depth 30 (10bpc) 2020-07-10 13:08:53 +00:00
doc Change CommandAllKey to Meta 2020-05-22 22:39:08 -04:00
effects SVN_SILENT made messages (.desktop file) - always resolve ours 2020-06-25 09:53:28 +02:00
helpers
kcmkwin Merge branch 'Plasma/5.19' 2020-06-25 09:46:22 -06:00
kconf_update [kwinrules] Add kconf_update script to fix placement rule 2020-05-27 18:13:00 +00:00
libinput Wayland: Allow to set a scroll Factor for input devices 2020-04-07 19:08:49 +02:00
libkwineffects No need to recalculate the matrix if yInverted doesn't change 2020-06-23 14:58:48 +02:00
platformsupport [wayland] Add support for cropped and scaled surfaces 2020-06-03 10:00:48 +03:00
plugins Fix DrmOutput sometimes being freed with a pending pageflip, often when waking from sleep. 2020-07-07 18:33:28 -07:00
qml Move from Quad to Cubic 2020-03-04 19:40:35 +01:00
scripting SVN_SILENT made messages (.desktop file) - always resolve ours 2020-06-18 09:05:32 +02:00
scripts [scripts/videowall] Reenable the config dialog 2020-07-09 09:47:08 +00:00
tabbox SVN_SILENT made messages (.desktop file) - always resolve ours 2020-06-18 09:05:32 +02:00
tests Remove orientation sensor 2020-02-29 09:59:30 +05:30
xwl [xwl] Fix xcb to wayland clipboard 2020-06-29 15:06:33 +01:00
abstract_client.cpp Introduce the client geometry in Toplevel 2020-06-18 07:40:58 +00:00
abstract_client.h Introduce the client geometry in Toplevel 2020-06-18 07:40:58 +00:00
abstract_opengl_context_attribute_builder.cpp
abstract_opengl_context_attribute_builder.h
abstract_output.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
abstract_output.h Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
abstract_wayland_output.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
abstract_wayland_output.h Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
activation.cpp Make it possible to have a separate cursor for the tablet 2020-04-03 01:16:45 +02:00
activities.cpp Store normal clients and desktop clients in the same list 2020-05-14 16:21:47 +03:00
activities.h
appmenu.cpp
appmenu.h
atoms.cpp
atoms.h
client_machine.cpp
client_machine.h
CMakeLists.txt Update version number for 5.19.2 2020-06-23 11:18:17 +01:00
composite.cpp Store normal clients and desktop clients in the same list 2020-05-14 16:21:47 +03:00
composite.h Revert "[platforms/x11] Never block on retrace, always present after paint" 2020-01-16 10:00:08 +01:00
config-kwin.h.cmake [effects/zoom] Implement focus tracking with QAccessibilityClient 2020-06-01 10:43:59 +03:00
COPYING
cursor.cpp Move inputConfig away from KWin::Application 2020-07-13 12:54:34 +02:00
cursor.h Move inputConfig away from KWin::Application 2020-07-13 12:54:34 +02:00
dbusinterface.cpp
dbusinterface.h
debug_console.cpp Store normal clients and desktop clients in the same list 2020-05-14 16:21:47 +03:00
debug_console.h Implement the tablet wayland protocol in kwin 2020-03-20 03:05:41 +01:00
debug_console.ui
deleted.cpp Introduce the client geometry in Toplevel 2020-06-18 07:40:58 +00:00
deleted.h Introduce the client geometry in Toplevel 2020-06-18 07:40:58 +00:00
effectloader.cpp
effectloader.h
effects.cpp Move inputConfig away from KWin::Application 2020-07-13 12:54:34 +02:00
effects.h [wayland] Destroy XdgToplevelClient and XdgPopupClient on unmap 2020-06-01 15:13:03 +03:00
egl_context_attribute_builder.cpp
egl_context_attribute_builder.h
events.cpp Merge branch 'Plasma/5.19' 2020-06-24 17:26:19 +03:00
fixqopengl.h
focuschain.cpp
focuschain.h
geometrytip.cpp
geometrytip.h
gestures.cpp Improve tests behaviour on set ups with high dpi 2020-03-24 00:16:04 +01:00
gestures.h
globalshortcuts.cpp
globalshortcuts.h
group.cpp
group.h
HACKING.md Revert "[kcm/effects] Clip ListView" 2020-02-22 11:53:59 +01:00
idle_inhibition.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
idle_inhibition.h Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
input.cpp Move inputConfig away from KWin::Application 2020-07-13 12:54:34 +02:00
input.h Implement the tablet wayland protocol in kwin 2020-03-20 03:05:41 +01:00
input_event.cpp Implement the tablet wayland protocol in kwin 2020-03-20 03:05:41 +01:00
input_event.h Implement the tablet wayland protocol in kwin 2020-03-20 03:05:41 +01:00
input_event_spy.cpp Implement the tablet wayland protocol in kwin 2020-03-20 03:05:41 +01:00
input_event_spy.h Implement the tablet wayland protocol in kwin 2020-03-20 03:05:41 +01:00
internal_client.cpp Introduce the client geometry in Toplevel 2020-06-18 07:40:58 +00:00
internal_client.h Introduce the client geometry in Toplevel 2020-06-18 07:40:58 +00:00
keyboard_input.cpp Move inputConfig away from KWin::Application 2020-07-13 12:54:34 +02:00
keyboard_input.h
keyboard_layout.cpp Use monochrome icon for keyboard layout sni 2020-06-28 19:12:32 +00:00
keyboard_layout.h
keyboard_layout_switching.cpp
keyboard_layout_switching.h
keyboard_repeat.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
keyboard_repeat.h
killwindow.cpp
killwindow.h
kwin.kcfg Change CommandAllKey to Meta 2020-05-22 22:39:08 -04:00
kwin.notifyrc SVN_SILENT made messages (.desktop file) - always resolve ours 2020-06-18 09:05:32 +02:00
kwinbindings.cpp
KWinDBusInterfaceConfig.cmake.in
layers.cpp Store normal clients and desktop clients in the same list 2020-05-14 16:21:47 +03:00
linux_dmabuf.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
linux_dmabuf.h Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
logind.cpp
logind.h
logo.png GIT_SILENT: add KWin icon as repository logo 2020-05-20 12:47:52 +00:00
main.cpp Move inputConfig away from KWin::Application 2020-07-13 12:54:34 +02:00
main.h Move inputConfig away from KWin::Application 2020-07-13 12:54:34 +02:00
main_wayland.cpp [wayland] Allow nested mode to have a fractional scale < 1 2020-05-28 08:53:54 +00:00
main_wayland.h
main_x11.cpp Remove QSessionManager usage 2020-04-06 11:51:47 +02:00
main_x11.h
Mainpage.dox
Messages.sh
modifier_only_shortcuts.cpp Add support to keyboard shortcuts inhibitor 2020-05-29 08:49:11 +00:00
modifier_only_shortcuts.h
moving_client_x11_filter.cpp
moving_client_x11_filter.h
netinfo.cpp
netinfo.h
onscreennotification.cpp Move from Quad to Cubic 2020-03-04 19:40:35 +01:00
onscreennotification.h
options.cpp Change CommandAllKey to Meta 2020-05-22 22:39:08 -04:00
options.h [x11] Hold a passive grab on buttons only when needed 2020-06-24 13:48:54 +00:00
org.kde.kappmenu.xml
org.kde.kwin.ColorCorrect.xml [nightcolor] Expose transition timings to d-bus 2020-01-15 21:15:26 +02:00
org.kde.kwin.Compositing.xml
org.kde.kwin.Effects.xml
org.kde.KWin.Session.xml Remove QSessionManager usage 2020-04-06 11:51:47 +02:00
org.kde.KWin.VirtualDesktopManager.xml
org.kde.KWin.xml
osd.cpp
osd.h
outline.cpp
outline.h
outputscreens.cpp
outputscreens.h
overlaywindow.cpp
overlaywindow.h
placement.cpp Allow corner-tiling by quickly combining edge tiling shortcuts 2020-06-12 13:50:24 +00:00
placement.h
platform.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
platform.h [wayland] Rework Xcursor theme loading code 2020-06-18 07:14:58 +00:00
pointer_input.cpp [wayland] Switch to SurfaceInterface::bufferScale() 2020-06-24 06:59:15 +00:00
pointer_input.h Fix build with loadThemeCursor templates 2020-06-22 16:51:38 +01:00
popup_input_filter.cpp Use AbstractClient instead of XdgShellClient wherever possible 2020-03-04 09:57:13 +02:00
popup_input_filter.h Use AbstractClient instead of XdgShellClient wherever possible 2020-03-04 09:57:13 +02:00
README.md Capstone commit to prevent force push reversed commits returning accidentally. 2020-06-03 09:54:00 +00:00
rootinfo_filter.cpp
rootinfo_filter.h
rulebooksettings.cpp Port kwinrules kcm to kconfigxt 2020-03-16 13:21:43 +01:00
rulebooksettings.h Port kwinrules kcm to kconfigxt 2020-03-16 13:21:43 +01:00
rulebooksettingsbase.kcfg Port kwinrules kcm to kconfigxt 2020-03-16 13:21:43 +01:00
rulebooksettingsbase.kcfgc Port kwinrules kcm to kconfigxt 2020-03-16 13:21:43 +01:00
rules.cpp Port kwinrules kcm to kconfigxt 2020-03-16 13:21:43 +01:00
rules.h Port kwinrules kcm to kconfigxt 2020-03-16 13:21:43 +01:00
rulesettings.kcfg Fix minor typo: inital -> initial 2020-03-17 09:41:12 +02:00
rulesettings.kcfgc Port kwinrules kcm to kconfigxt 2020-03-16 13:21:43 +01:00
scene.cpp [scene] Discard pixmaps on buffer size change 2020-07-01 09:43:27 +00:00
scene.h [scene] Setup scene window connections with correct receiver object 2020-06-10 09:36:55 +03:00
screenedge.cpp The old behavior before D28224 was (X + Y) instead of (X + X) 2020-06-24 06:54:44 +00:00
screenedge.h
screenlockerwatcher.cpp
screenlockerwatcher.h
screens.cpp Make it possible to have a separate cursor for the tablet 2020-04-03 01:16:45 +02:00
screens.h Improve tests behaviour on set ups with high dpi 2020-03-24 00:16:04 +01:00
service_utils.cpp ScreenshotEffect: Use Service Property to authorize screenshot without confirmation 2020-06-16 19:00:04 +02:00
service_utils.h ScreenshotEffect: Use Service Property to authorize screenshot without confirmation 2020-06-16 19:00:04 +02:00
settings.kcfgc
shadow.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
shadow.h Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
shortcutdialog.ui
sm.cpp Remove QSessionManager usage 2020-04-06 11:51:47 +02:00
sm.h Remove QSessionManager usage 2020-04-06 11:51:47 +02:00
subsurfacemonitor.cpp [scene] Discard pixmaps on buffer size change 2020-07-01 09:43:27 +00:00
subsurfacemonitor.h [scene] Discard pixmaps on buffer size change 2020-07-01 09:43:27 +00:00
syncalarmx11filter.cpp [x11] Enable synchronized resizing for Xwayland clients 2020-04-29 16:37:23 +03:00
syncalarmx11filter.h [x11] Enable synchronized resizing for Xwayland clients 2020-04-29 16:37:23 +03:00
tablet_input.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
tablet_input.h Implement the tablet wayland protocol in kwin 2020-03-20 03:05:41 +01:00
tabletmodemanager.cpp Fix the tablet mode manager 2020-03-11 13:06:57 +05:30
tabletmodemanager.h
TESTING.md
thumbnailitem.cpp Use AbstractClient instead of XdgShellClient wherever possible 2020-03-04 09:57:13 +02:00
thumbnailitem.h
toplevel.cpp [wayland] Switch to SurfaceInterface::bufferScale() 2020-06-24 06:59:15 +00:00
toplevel.h Introduce the client geometry in Toplevel 2020-06-18 07:40:58 +00:00
touch_hide_cursor_spy.cpp
touch_hide_cursor_spy.h
touch_input.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
touch_input.h
udev.cpp Handle differences in paths for Linux vs FreeBSD 2020-06-05 12:41:28 +02:00
udev.h
unmanaged.cpp Update clientGeometry for Unmanaged windows 2020-06-30 14:59:54 +01:00
unmanaged.h Introduce the client geometry in Toplevel 2020-06-18 07:40:58 +00:00
useractions.cpp Move core shade code to AbstractClient 2020-05-07 22:03:31 +03:00
useractions.h
utils.cpp Reduce the amount of objects that are compiled several times 2020-04-02 00:41:55 +02:00
utils.h Reduce the amount of objects that are compiled several times 2020-04-02 00:41:55 +02:00
virtual_terminal.cpp Handle differences in paths for Linux vs FreeBSD 2020-06-05 12:41:28 +02:00
virtual_terminal.h
virtualdesktops.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
virtualdesktops.h Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
virtualdesktopsdbustypes.cpp
virtualdesktopsdbustypes.h
virtualkeyboard.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
virtualkeyboard.h
virtualkeyboard_dbus.cpp
virtualkeyboard_dbus.h
was_user_interaction_x11_filter.cpp
was_user_interaction_x11_filter.h
wayland_server.cpp [wayland] Rework Xcursor theme loading code 2020-06-18 07:14:58 +00:00
wayland_server.h [wayland] Rework Xcursor theme loading code 2020-06-18 07:14:58 +00:00
waylandclient.cpp [wayland] Rework xdg-shell implementation 2020-06-01 15:12:59 +03:00
waylandclient.h [wayland] Rework xdg-shell implementation 2020-06-01 15:12:59 +03:00
waylandshellintegration.cpp [wayland] Destroy XdgToplevelClient and XdgPopupClient on unmap 2020-06-01 15:13:03 +03:00
waylandshellintegration.h [wayland] Destroy XdgToplevelClient and XdgPopupClient on unmap 2020-06-01 15:13:03 +03:00
waylandxdgshellintegration.cpp [wayland] Destroy XdgToplevelClient and XdgPopupClient on unmap 2020-06-01 15:13:03 +03:00
waylandxdgshellintegration.h [wayland] Destroy XdgToplevelClient and XdgPopupClient on unmap 2020-06-01 15:13:03 +03:00
window_property_notify_x11_filter.cpp
window_property_notify_x11_filter.h
workspace.cpp Allow corner-tiling by quickly combining edge tiling shortcuts 2020-06-12 13:50:24 +00:00
workspace.h Allow corner-tiling by quickly combining edge tiling shortcuts 2020-06-12 13:50:24 +00:00
x11client.cpp Merge branch 'Plasma/5.19' 2020-06-25 16:14:12 +03:00
x11client.h Merge branch 'Plasma/5.19' 2020-06-24 17:26:19 +03:00
x11eventfilter.cpp
x11eventfilter.h
xcbutils.cpp
xcbutils.h
xcursortheme.cpp [wayland] Rework Xcursor theme loading code 2020-06-18 07:14:58 +00:00
xcursortheme.h [wayland] Rework Xcursor theme loading code 2020-06-18 07:14:58 +00:00
xdgshellclient.cpp Prevent move/resize event when handling a maximize event 2020-07-07 08:35:12 +00:00
xdgshellclient.h [wayland] Queue maximize and fullscreen requests if initial state isn't committed yet 2020-07-01 09:18:29 +00:00
xkb.cpp Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
xkb.h Port KWin to KWaylandServer 2020-04-30 12:56:08 +02:00
xkb_qt_mapping.h
xwaylandclient.cpp [x11] Disable synchronized resizing for Xwayland < 1.21 2020-04-29 16:37:31 +03:00
xwaylandclient.h [x11] Disable synchronized resizing for Xwayland < 1.21 2020-04-29 16:37:31 +03:00

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.