diff --git a/CMakeLists.txt b/CMakeLists.txt index 70437971d..9f0b3530a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,515 +1,516 @@ project(KWIN) cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) set(QT_MIN_VERSION "5.2.0") # TODO: remove if once we are split if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH} ) endif() find_package(ECM 0.0.11 REQUIRED NO_MODULE) include(FeatureSummary) include(WriteBasicConfigVersionFile) # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings) include(ECMInstallIcons) find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Concurrent Core DBus Quick Script Test UiTools Widgets X11Extras ) add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0) # required frameworks by Core find_package(KF5 CONFIG REQUIRED COMPONENTS Config ConfigWidgets CoreAddons Crash GlobalAccel I18n Notifications Service Plasma WidgetsAddons WindowSystem ) # required frameworks by config modules find_package(KF5 CONFIG REQUIRED COMPONENTS Completion KCMUtils KIO NewStuff XmlGui ) # optional frameworks find_package(KF5 CONFIG COMPONENTS Activities) # TODO: remove once the build system is completely cleaned find_package(KF5KDE4Support REQUIRED NO_MODULE) if(${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GL") find_package(OpenGL) set_package_properties(OpenGL PROPERTIES DESCRIPTION "The OpenGL libraries" URL "http://www.opengl.org" TYPE REQUIRED ) else() find_package(OpenGLES) set_package_properties(OpenGLES PROPERTIES DESCRIPTION "The OpenGLES libraries" URL "http://www.khronos.org/opengles" TYPE REQUIRED ) endif() find_package(EGL) set_package_properties(EGL PROPERTIES TYPE REQUIRED PURPOSE "Required to build KWin with EGL support" ) find_package(Wayland 1.2 COMPONENTS Client Egl Cursor) set_package_properties(Wayland PROPERTIES TYPE OPTIONAL PURPOSE "Required for building KWin with Wayland support" ) add_feature_info("Wayland-Client" Wayland_Client_FOUND "Required for building the Wayland backend in KWin") add_feature_info("Wayland-EGL" Wayland_Egl_FOUND "Required for building the Wayland EGL compositing backend in KWin") find_package(XKB) set_package_properties(XKB PROPERTIES TYPE OPTIONAL PURPOSE "Required for building KWin with Wayland support" ) find_package(X11) set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries" URL "http://www.x.org" TYPE REQUIRED ) # All the required XCB components find_package(XCB REQUIRED COMPONENTS XCB XFIXES DAMAGE COMPOSITE SHAPE SYNC RENDER RANDR KEYSYMS IMAGE SHM XTEST ) set_package_properties(XCB PROPERTIES TYPE REQUIRED) # and the optional XCB dependencies find_package(XCB COMPONENTS ICCCM) add_feature_info("XCB-ICCCM" XCB_ICCCM_FOUND "Required for building test applications for KWin") if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) endif() ########### configure tests ############### include(CMakeDependentOption) option(KWIN_BUILD_DECORATIONS "Enable building of KWin decorations." ON) option(KWIN_BUILD_KCMS "Enable building of KWin configuration modules." ON) option(KWIN_BUILD_TABBOX "Enable building of KWin Tabbox functionality" ON) option(KWIN_BUILD_SCREENEDGES "Enable building of KWin with screen edge support" ON) option(KWIN_BUILD_KAPPMENU "Enable building of KWin with application menu support" OFF) option(KWIN_BUILD_XRENDER_COMPOSITING "Enable building of KWin with XRender Compositing support" ON) cmake_dependent_option(KWIN_BUILD_ACTIVITIES "Enable building of KWin with kactivities support" ON "KF5Activities_FOUND" OFF) option(KWIN_PLASMA_ACTIVE "Enable building KWin for Plasma Active." OFF) # Binary name of KWin set(KWIN_NAME "kwin") set(KWIN_VERSION_MAJOR 4) set(KWIN_VERSION_MINOR 90) set(KWIN_VERSION_PATCH 1) set(KWIN_VERSION ${KWIN_VERSION_MAJOR}.${KWIN_VERSION_MINOR}.${KWIN_VERSION_PATCH} ) set(KWIN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(GENERIC_LIB_SOVERSION ${KWIN_VERSION_MAJOR}) set(GENERIC_LIB_VERSION "${KWIN_VERSION_MAJOR}.${KWIN_VERSION_MINOR}.${KWIN_VERSION_PATCH}") if(KWIN_PLASMA_ACTIVE) set(KWIN_BUILD_DECORATIONS OFF) set(KWIN_BUILD_KCMS OFF) set(KWIN_BUILD_SCREENEDGES OFF) set(KWIN_BUILD_XRENDER_COMPOSITING OFF) set(KWIN_BUILD_WITH_OPENGLES ON) set(KWIN_NAME "kwinactive") endif() cmake_dependent_option(KWIN_BUILD_KAPPMENU "Build without appmenu support" ON "KWIN_BUILD_DECORATIONS" FALSE) set(KWIN_BUILD_OPENGL FALSE) set(KWIN_BUILD_OPENGLES FALSE) if(OPENGL_FOUND AND (${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GL")) set(KWIN_BUILD_OPENGL TRUE) message("Building KWin with OpenGL support") endif() if(OPENGLES_FOUND AND (${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GLESv2")) set(KWIN_BUILD_OPENGLES TRUE) message("Building KWin with OpenGL ES 2 support") endif() if(NOT KWIN_BUILD_OPENGL AND NOT KWIN_BUILD_OPENGLES) message(FATAL_ERROR "KWin needs to be built against either OpenGL or OpenGL ES 2. Check your Qt config!") endif() # KWIN_HAVE_XRENDER_COMPOSITING - whether XRender-based compositing support is available: may be disabled if( KWIN_BUILD_XRENDER_COMPOSITING ) set( KWIN_HAVE_XRENDER_COMPOSITING 1 ) endif() if(KWIN_BUILD_OPENGL) include_directories(${OPENGL_INCLUDE_DIR}) endif() set(KWIN_HAVE_EGL ${EGL_FOUND}) if(KWIN_BUILD_OPENGLES) include_directories(${OPENGLES_INCLUDE_DIR}) endif() # for things that are also used by kwin libraries configure_file(libkwineffects/kwinconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/libkwineffects/kwinconfig.h ) # for kwin internal things if(Wayland_Client_FOUND AND XKB_FOUND) set(HAVE_WAYLAND ${Wayland_Client_FOUND}) set(HAVE_XKB ${XKB_FOUND}) set(HAVE_WAYLAND_EGL ${Wayland_Egl_FOUND}) else() set(HAVE_WAYLAND FALSE) set(HAVE_XKB FALSE) set(HAVE_WAYLAND_EGL FALSE) endif() include(CheckIncludeFiles) check_include_files(unistd.h HAVE_UNISTD_H) check_include_files(malloc.h HAVE_MALLOC_H) configure_file(config-kwin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwin.h ) ########### global ############### set(kwin_effects_dbus_xml ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.kwin.Effects.xml) include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/libkdecorations ${CMAKE_CURRENT_BINARY_DIR}/libkwineffects ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libkwineffects ${CMAKE_CURRENT_SOURCE_DIR}/libkdecorations ${CMAKE_CURRENT_SOURCE_DIR}/effects ${CMAKE_CURRENT_SOURCE_DIR}/tabbox ) add_subdirectory( libkdecorations ) add_subdirectory( libkwineffects ) add_subdirectory( killer ) if(KWIN_BUILD_KCMS) add_subdirectory( kcmkwin ) endif() if( KWIN_BUILD_DECORATIONS ) add_subdirectory( clients ) endif() add_subdirectory( data ) add_subdirectory( effects ) add_subdirectory( scripts ) add_subdirectory( tabbox ) add_subdirectory(scripting) add_definitions(-DKDE_DEFAULT_DEBUG_AREA=1212) ########### next target ############### set(kwin_KDEINIT_SRCS workspace.cpp dbusinterface.cpp client.cpp client_machine.cpp cursor.cpp tabgroup.cpp focuschain.cpp globalshortcuts.cpp input.cpp netinfo.cpp placement.cpp atoms.cpp utils.cpp layers.cpp main.cpp options.cpp outline.cpp decorations.cpp events.cpp killwindow.cpp geometrytip.cpp screens.cpp shadow.cpp sm.cpp group.cpp bridge.cpp manage.cpp overlaywindow.cpp activation.cpp useractions.cpp geometry.cpp rules.cpp composite.cpp toplevel.cpp unmanaged.cpp scene.cpp scene_xrender.cpp scene_opengl.cpp scene_qpainter.cpp glxbackend.cpp thumbnailitem.cpp lanczosfilter.cpp deleted.cpp effects.cpp compositingprefs.cpp paintredirector.cpp virtualdesktops.cpp xcbutils.cpp scripting/scripting.cpp scripting/workspace_wrapper.cpp scripting/meta.cpp scripting/scriptedeffect.cpp scripting/scriptingutils.cpp scripting/timer.cpp scripting/scripting_model.cpp scripting/dbuscall.cpp scripting/screenedgeitem.cpp ) if(KWIN_BUILD_TABBOX) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} tabbox/tabbox.cpp tabbox/clientmodel.cpp tabbox/desktopchain.cpp tabbox/desktopmodel.cpp tabbox/switcheritem.cpp tabbox/tabboxconfig.cpp tabbox/tabboxhandler.cpp ) endif() if(KWIN_BUILD_SCREENEDGES) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} screenedge.cpp ) endif() if(KWIN_BUILD_KAPPMENU) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} appmenu.cpp ) qt5_add_dbus_interface(kwin_KDEINIT_SRCS ${KDEBASE_WORKSPACE_SOURCE_DIR}/plasma-workspace/appmenu/org.kde.kappmenu.xml appmenu_interface) endif() if(KWIN_BUILD_ACTIVITIES) set( kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} activities.cpp ) endif() if(KWIN_HAVE_EGL) set(kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} eglonxbackend.cpp) endif() if(Wayland_Client_FOUND AND XKB_FOUND) set(kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} wayland_backend.cpp) if(KWIN_HAVE_EGL AND Wayland_Egl_FOUND) set(kwin_KDEINIT_SRCS ${kwin_KDEINIT_SRCS} egl_wayland_backend.cpp) endif() endif() kconfig_add_kcfg_files(kwin_KDEINIT_SRCS settings.kcfgc) qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.KWin.xml dbusinterface.h KWin::DBusInterface ) qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.kwin.Compositing.xml composite.h KWin::Compositor ) qt5_add_dbus_adaptor( kwin_KDEINIT_SRCS ${kwin_effects_dbus_xml} effects.h KWin::EffectsHandlerImpl ) qt5_add_dbus_interface( kwin_KDEINIT_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/org.freedesktop.ScreenSaver.xml screenlocker_interface) qt5_add_resources( kwin_KDEINIT_SRCS resources.qrc ) qt5_wrap_ui(kwin_KDEINIT_SRCS shortcutdialog.ui ) ########### target link libraries ############### set(kwin_OWN_LIBS kdecorations kwineffects kwinxrenderutils kwin4_effect_builtins ) set(kwin_QT_LIBS Qt5::Concurrent Qt5::DBus Qt5::Quick Qt5::Script Qt5::X11Extras ) set(kwin_KDE_LIBS KF5::ConfigCore KF5::CoreAddons KF5::ConfigWidgets KF5::Crash KF5::GlobalAccel KF5::I18n KF5::Notifications KF5::Service KF5::Plasma KF5::WindowSystem ) set(kwin_XLIB_LIBS ${X11_X11_LIB} ${X11_Xext_LIB} ${X11_Xcursor_LIB} ${X11_ICE_LIB} ${X11_SM_LIB} ) set(kwin_XCB_LIBS XCB::XCB XCB::XFIXES XCB::DAMAGE XCB::COMPOSITE XCB::SHAPE XCB::SYNC XCB::RENDER XCB::RANDR XCB::KEYSYMS XCB::SHM XCB::XTEST ) set(kwin_WAYLAND_LIBS Wayland::Client Wayland::Cursor XCB::XTEST XKB::XKB ) set(kwin_WAYLAND_EGL_LIBS Wayland::Egl ) set(kwin_OPENGL_LIBS ) find_library(XF86VM_LIBRARY Xxf86vm) if (XF86VM_LIBRARY) set(kwin_XLIB_LIBS ${kwin_XLIB_LIBS} ${XF86VM_LIBRARY}) else() add_definitions(-DKWIN_NO_XF86VM) endif() if(KWIN_BUILD_ACTIVITIES) set(kwin_KDE_LIBS ${kwin_KDE_LIBS} KF5::Activities) endif() if(KWIN_HAVE_EGL) set(kwin_OPENGL_LIBS ${kwin_OPENGL_LIBS} EGL::EGL) endif() set(kwinLibs ${kwin_OWN_LIBS} ${kwin_QT_LIBS} ${kwin_KDE_LIBS} ${kwin_XLIB_LIBS} ${kwin_XCB_LIBS} ${kwin_OPENGL_LIBS} ) if(Wayland_Client_FOUND AND XKB_FOUND) set(kwinLibs ${kwinLibs} ${kwin_WAYLAND_LIBS}) if(KWIN_HAVE_EGL AND Wayland_Egl_FOUND) set(kwinLibs ${kwinLibs} ${kwin_WAYLAND_EGL_LIBS}) endif() endif() kf5_add_kdeinit_executable( kwin ${kwin_KDEINIT_SRCS}) target_link_libraries(kdeinit_kwin ${kwinLibs}) set_target_properties(kwin PROPERTIES OUTPUT_NAME ${KWIN_NAME}) generate_export_header(kdeinit_kwin EXPORT_FILE_NAME kwin_export.h) if(KWIN_BUILD_OPENGL) target_link_libraries(kdeinit_kwin kwinglutils ${OPENGL_gl_LIBRARY}) # -ldl used by OpenGL code find_library(DL_LIBRARY dl) if (DL_LIBRARY) target_link_libraries(kdeinit_kwin ${DL_LIBRARY}) endif() elseif(KWIN_BUILD_OPENGLES) target_link_libraries(kdeinit_kwin ${kwinLibs} kwinglesutils ${OPENGLES_LIBRARIES}) set_target_properties(kdeinit_kwin PROPERTIES COMPILE_FLAGS "-DKWIN_HAVE_OPENGLES") endif() install(TARGETS kdeinit_kwin ${INSTALL_TARGETS_DEFAULT_ARGS} ) install(TARGETS kwin ${INSTALL_TARGETS_DEFAULT_ARGS} ) ########### install files ############### install( FILES kwin.kcfg DESTINATION ${KCFG_INSTALL_DIR} RENAME ${KWIN_NAME}.kcfg ) install( FILES kwin.notifyrc DESTINATION ${DATA_INSTALL_DIR}/${KWIN_NAME} RENAME ${KWIN_NAME}.notifyrc) install( FILES org.kde.KWin.xml org.kde.kwin.Compositing.xml org.kde.kwin.Effects.xml DESTINATION ${DBUS_INTERFACES_INSTALL_DIR} ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/kwin_export.h DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel) # Install the KWin/Script service type install( FILES scripting/kwinscript.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} ) ecm_install_icons( ${ICON_INSTALL_DIR} ) add_subdirectory(qml) add_subdirectory(autotests) add_subdirectory(tests) +add_subdirectory(doc) configure_file(KWinDBusInterfaceConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/KWinDBusInterfaceConfig.cmake" @ONLY) set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/KWinDBusInterface") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/KWinDBusInterfaceConfig.cmake DESTINATION ${CMAKECONFIG_INSTALL_DIR}) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 000000000..33cf92ac1 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,7 @@ +add_subdirectory(desktop) +add_subdirectory(kwincompositing) +add_subdirectory(kwindecoration) +add_subdirectory(kwinscreenedges) +add_subdirectory(kwintabbox) +add_subdirectory(windowbehaviour) +add_subdirectory(windowspecific) diff --git a/doc/desktop/CMakeLists.txt b/doc/desktop/CMakeLists.txt new file mode 100644 index 000000000..b3bc4ec8a --- /dev/null +++ b/doc/desktop/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kcontrol/desktop) diff --git a/doc/desktop/index.docbook b/doc/desktop/index.docbook new file mode 100644 index 000000000..5e3799de5 --- /dev/null +++ b/doc/desktop/index.docbook @@ -0,0 +1,141 @@ + + + +]> + +
+Virtual Desktops + + + +&Mike.McBride; &Mike.McBride.mail; +&Jost.Schenck; &Jost.Schenck.mail; + + + +2013-06-02 +4.11 + + +KDE +Systemsettings +desktop + + + + + + +Virtual Desktops + + +<guilabel>Desktops</guilabel> + +&kde; offers you the possibility to have several virtual +desktops. In this tab you can configure the number of desktops, the number of rows in the Pager icon +as well as their names. Just use the input box to adjust the number of +desktops. You can assign names to the desktops by entering text into the +text fields below. + +Enable Different widgets for each desktop +to use independent widgets and wallpapers on each individual desktop. + + + + + +<guilabel>Switching</guilabel> + + + +Desktop navigation wraps around +Enable this option if you want keyboard or active desktop border navigation +beyond the edge of a desktop to take you to the opposite edge of the new desktop. + + + + +Desktop Effect Animation +Select No Animation, Slide, +Desktop Cube Animation or Fade Desktop +from the drop down box. If the selected animation has settings options, click on the +tools icon on the right of the drop down box to launch a configuration dialog. + + + + +Desktop Switch On-Screen Display +Enable this option if you want to have an on-screen display for desktop switching. + + + + +Show desktop layout indicators +Enabling this option will show a small preview of the desktop layout +indicating the selected desktop. + + + + +Shortcuts +This section displays the configured shortcuts for switching the desktops +and allows you to edit them. + + + + + +Scrolling the mouse wheel over an empty space on the +desktop or on the Pager icon in the panel will change to the next +virtual desktop numerically, in the direction you scrolled (either up or down). + + + + +
diff --git a/doc/kwincompositing/CMakeLists.txt b/doc/kwincompositing/CMakeLists.txt new file mode 100644 index 000000000..b17f23967 --- /dev/null +++ b/doc/kwincompositing/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kcontrol/kwincompositing) diff --git a/doc/kwincompositing/index.docbook b/doc/kwincompositing/index.docbook new file mode 100644 index 000000000..9476dff8f --- /dev/null +++ b/doc/kwincompositing/index.docbook @@ -0,0 +1,82 @@ + + + +]> + +
+ + +Desktop Effects + +&Mike.McBride; &Mike.McBride.mail; + + + +2013-12-05 +&kde; 4.12 + + +KDE +KControl +desktop +effects + + + +Desktop Effects + + +Introduction + +This module is used to configure desktop effects +for &kde;. + + +This panel is divided into three tabs: General, +All Effects and Advanced. + + +<guilabel>General</guilabel> tab + +At the top of this tab in the section Activation is a checkbox labeled Enable +desktop effects at startup. If there is no mark in front of this checkbox, then all +visual effects are disabled. +All desktop effects can be turned on and off using the global shortcut +&Alt;&Shift;F12. + +Below that section there are some settings for the simple desktop effects like +improved window management, various animations, effects for desktop switching and +the animation speed. + + + +<guilabel>All Effects</guilabel> tab + +The main part of this page is a list of all available effects grouped +by Accessibility, Appearance, +Candy, Focus, Tools +and Window Management. +Use the incremental search bar above the list window to find items in the list. + +Check an effect in the list to enable it. Display the About +dialog by clicking the info button at the right side of the list item. +Some effects have settings options, in this case there is a tool button +at the left of the info button. Click it to open a configuration dialog. + + + +<guilabel>Advanced</guilabel> tab + +On this tab you can select a Compositing type and the Qt graphics system. +In the next two sections you can configure General Options and OpenGL Options. + + + + + + + + +
diff --git a/doc/kwindecoration/CMakeLists.txt b/doc/kwindecoration/CMakeLists.txt new file mode 100644 index 000000000..ab41cae4e --- /dev/null +++ b/doc/kwindecoration/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kcontrol/kwindecoration) diff --git a/doc/kwindecoration/buttons.png b/doc/kwindecoration/buttons.png new file mode 100644 index 000000000..1c4fdf7c7 Binary files /dev/null and b/doc/kwindecoration/buttons.png differ diff --git a/doc/kwindecoration/decoration.png b/doc/kwindecoration/decoration.png new file mode 100644 index 000000000..9fc84e542 Binary files /dev/null and b/doc/kwindecoration/decoration.png differ diff --git a/doc/kwindecoration/index.docbook b/doc/kwindecoration/index.docbook new file mode 100644 index 000000000..58ae826bd --- /dev/null +++ b/doc/kwindecoration/index.docbook @@ -0,0 +1,150 @@ + + + +]> + +
+ +Window Decorations + +&Rik.Hemsley; &Rik.Hemsley.mail; +&Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail; + + + +2013-12-05 +&kde; 4.12 + + +KDE +Systemsettings +kwin +window +border +theme +style + + + +Window Decoration + +This module allows you to select a style for the buttons and borders around +windows. + + +Window Decorations + + + +Window Decoration Configuration Module + + + + + + Window Decoration Configuration Module + + + + + +Choose a window decoration style from the preview list, using the +search field at the top of the screen. + +The &kde; default window decoration is called "Oxygen". + +Each style has a different look, but also a different +feel. Some have (sometimes invisible) +resize borders all around the edge, which make resizing +easier but moving more difficult. Some have no borders on certain +edges. One (BII) even has a dynamically sized and +positioned title element. + +You are encouraged to experiment with the different styles until +you find one which best suits your pattern of work. + +Below the preview pane you find three buttons to open configuration dialogs +for decoration and buttons of the selected style or to download additional +styles. + + + + +Decorations + +In this dialog you can change the decoration of the window. + +The available options depend on the selected style. + + + +Oxygen Decoration Options + + + + + + Oxygen Decoration Options + + + + + + + +Buttons + +This dialog allows you to customize the buttons location on the titlebar. You can move Close button to the left for example. Check the Use custom titlebar button positions option in order to customize your titlebars. Then use the &kde; titlebar below and the buttons on its left and right to rearrange them as you want them. + + + + +Window Decoration Configuration Module + + + + + + Window Decoration Configuration Module + + + + + + By default, Show window button tooltips is checked and tooltips are shown. + + +This page has instructions directly on it - just drag around the +buttons until you have the order that makes you comfortable. + + +Not all the window decorations are able to comply with your custom +set button order. The ones that cannot are being converted, but at the +time of this release they have not been all been changed. + + +Apart from choosing the window decoration itself, you can choose +here two further options: if there should be a tooltip while you hover +your mouse over a window decoration button, and if the window +decoration should attempt to use a custom set button order. + + +The tooltips can be quite useful if you have set a custom button +order, and then changed to an unfamiliar window decoration. + + + +For accessibility purposes, some window decorations support +extra wide borders. If this is available, you can also choose a +border size here. These large borders are easier to see for low +vision users, and easier to grab for people with limited mobility or +difficulty using a mouse. + + + + + + +
diff --git a/doc/kwindecoration/main.png b/doc/kwindecoration/main.png new file mode 100644 index 000000000..1946aa3ef Binary files /dev/null and b/doc/kwindecoration/main.png differ diff --git a/doc/kwinscreenedges/CMakeLists.txt b/doc/kwinscreenedges/CMakeLists.txt new file mode 100644 index 000000000..d18a81682 --- /dev/null +++ b/doc/kwinscreenedges/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kcontrol/kwinscreenedges) diff --git a/doc/kwinscreenedges/index.docbook b/doc/kwinscreenedges/index.docbook new file mode 100644 index 000000000..671d60caa --- /dev/null +++ b/doc/kwinscreenedges/index.docbook @@ -0,0 +1,50 @@ + + + +]> + +
+ + +Screen Edges + +&Mike.McBride; &Mike.McBride.mail; + + + +2010-10-28 +&kde; 4.5 + + +KDE +Systemsettings +desktop +effects + + + +Active screen edges allow you to activate effects by pushing your mouse +cursor against the edge of the screen. Here you can configure which effect +will get activated on each edge and corner of the screen. + + +Click with any mouse button onto a square and select an effect +in the context menu. Edges with a black square have already an attached effect, +a grey colored square indicates that no effect is selected for this edge. + +The number of accessible items in the context menu depends on the settings in the module + +Desktop Effects in the Workspace Appearance and Behavior +category. Select Enable desktop +effects to activate compositing, select the compositing type +OpenGL, and then choose your favorite effects on the +All Effects tab from the Windows Management +group. This activates the corresponding items in the context menu. + +If you are looking for the setting to enable switching of desktops by +pushing your mouse cursor against the edge of the screen choose one of the Present +Windows effects from the context menu. + +
diff --git a/doc/kwintabbox/CMakeLists.txt b/doc/kwintabbox/CMakeLists.txt new file mode 100644 index 000000000..33d20e1b0 --- /dev/null +++ b/doc/kwintabbox/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kcontrol/kwintabbox) diff --git a/doc/kwintabbox/index.docbook b/doc/kwintabbox/index.docbook new file mode 100644 index 000000000..e93d2b652 --- /dev/null +++ b/doc/kwintabbox/index.docbook @@ -0,0 +1,99 @@ + + + +]> +
+ +Task Switcher + +&Martin.Graesslin;&Martin.Graesslin.mail; + + + +2010-10-28 +&kde; 4.5 + + +KDE +System Settings +desktop +window +navigation + + + + +Navigating through Windows + +This module offers the possibility to configure the behaviour for Navigating through windows often referred to as &Alt; . There are two independent sets of effects which can have different settings. For each of this sets there is an own tab (Main and Alternative) in this module. + + + +The first set of effects on the Main tab has predefined shortcuts. If you want to use the second set of effects on the Alternative tab, you have to set a shortcut for these effects in the Shortcut Editor manually. + +The following documentation of options applies to the general settings and the alternative settings as well. + + +List windows and Sort order +You can configure which windows should be shown in the list initiated by pressing &Alt; (predefined for the settings on the Main tab) or the user defined shortcut for the alternative settings. So it is possible to only show windows on the current desktop or windows from all desktops. It is also possible to influence the sort order, you can either use a sort order based on the last usage of the windows or the stacking order of the windows. + +If you check Include desktop an entry for the desktop will be added to list with application windows. Then you can select this entry in the list to minimize all windows. + + + +Desktop Effects + +There are several effects which can be used instead of the normal window list when compositing is enabled. By default the Box Switch effect is used. This effect displays a small thumbnail of each window inside a box and the currently selected window is highlighted. + + +The Present Windows effect arranges the windows in a regular grid and by that provides thumbnails in the best possible size. This effect can be used for navigating through windows without &Alt; as well, if it is selected as screen edge action in the &systemsettings; module +Screen Edges. This effect provides additional setting options and shortcuts in a dialog opened by clicking on the tools icon beside the drop down box. + + +Cover Switch and Flip Switch effect are more fancy effects which require OpenGL. Cover Switch displays the windows in a gallery with a large thumbnail of the currently selected window in the center of the screen while all other windows are rotated on the left and right. Flip Switch displays all windows on a 3D stack. The selected window is on top of the stack and navigating through the windows will move the stack so that the new selected window is on the top. + + +If the effect provides additional settings the configure button will be activated. By clicking this button a configuration dialog will be shown. + + +When compositing is not active or gets suspended the normal window list will be shown. There is no loss in functionality if an effect is selected and compositing is not active. + + + +Display list + +When no effect is used an outline illustrating position and size of the selected window can be shown while switching. The list can be combined with the Highlight selected windows effect when compositing is active. This effect will highlight the currently selected window by fading out all other windows. + + +If you want to configure the layout of one item you can use the dialog which opens by clicking Configure Layout. There are several predefined layouts which provide an informative or compact view, small or large icons and window title only. You can change the way the items are laid out: horizontal, vertical or in a tabular layout. + + +There is an additional configuration group for an optional view of the selected item. It is possible to place this view next to the list with all items. This is useful if you use an icon only layout mode and want to see the name of the current selected window as well. + + + + +Shortcuts + +The shortcut editor provides the configuration interface for the keyboard shortcuts for navigating through windows. Each of the two possible sets of effects has two shortcuts: one for the forward direction and one for the reverse direction. Please note that the window list can only be shown if you select a shortcut with a keyboard modifier such as the &Alt; or &Ctrl; key. This modifier has to be hold while switching. Selecting a shortcut without a modifier key can break the behaviour of navigating through windows. + + + + +
+ + + diff --git a/doc/windowbehaviour/CMakeLists.txt b/doc/windowbehaviour/CMakeLists.txt new file mode 100644 index 000000000..e93dcf9ec --- /dev/null +++ b/doc/windowbehaviour/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kcontrol/windowbehaviour) diff --git a/doc/windowbehaviour/index.docbook b/doc/windowbehaviour/index.docbook new file mode 100644 index 000000000..9982ff7db --- /dev/null +++ b/doc/windowbehaviour/index.docbook @@ -0,0 +1,676 @@ + + + +]> + + + +
+ +Window Behavior + +&Mike.McBride; &Mike.McBride.mail; +&Jost.Schenck; &Jost.Schenck.mail; + + + +2013-11-15 +&kde; 4.12 + + +KDE +KControl +system settings +actions +window placement +window size + + + +Window Behavior + + In the upper part of this control module you can see several +tabs: Focus, Titlebar Actions, +Window Actions, Moving and +Advanced. In the +Focus panel you can configure how windows gain or +lose focus, &ie; become active or inactive. Using +Titlebar Actions and Window Actions +you can configure how titlebars and windows react to +mouse clicks. Moving allows you to configure how +windows move and place themselves when started. The +Advanced options cover some specialized options +like window tabbing and window +shading. + + + + +Please note that the configuration in this module will not take effect +if you do not use &kde;'s native window manager, &kwin;. If you do use a +different window manager, please refer to its documentation for how to +customize window behavior. + + + + +Focus + + +The focus of the desktop refers to the window which the +user is currently working on. The window with focus is often referred to +as the active window. + + +Focus does not necessarily mean the window is the one at the +front — this is referred to as raised, and +although this is configured here as well, focus and raising of windows +are configured independently. + + +Focus Policy + + +There are six methods &kde; can use to determine the current focus: + + + + +Click To Focus + + +A window becomes active when you click into it. +This behaviour is common on other operating systems and likely what you want. + + + + +Click To Focus - Mouse Precedence + + +This is mostly the same as Click To Focus. +If an active window has to be chosen by the system +(⪚ because the currently active one was closed) +the window under the mouse is the preferred candidate. +Unusual, but possible variant of Click To Focus. + + + + + +Focus Follows Mouse + + +Moving the mouse pointer actively over a normal window activates it. New +windows such as the mini command line invoked with +&Alt;F2 will receive the focus, +without you having to point the mouse at them explicitly. +⪚ windows randomly appearing under the mouse will not gain the focus. +Focus stealing prevention takes place as usual. +Think as Click To Focus just without having to actually click. + + + +In other window managers, this is sometimes known as Sloppy focus +follows mouse. + + + + + +Focus Follows Mouse - Mouse Precedence + + +This is mostly the same as Focus Follows Mouse. +If an active window has to be chosen by the system +(⪚ because the currently active one was closed) +the window under the mouse is the preferred candidate. +Choose this, if you want a hover controlled focus. + + + + + +Focus Under Mouse + + +The window that happens to be under the mouse pointer becomes active. If +the mouse is not over a window (for instance, it's on the desktop) the last +window that was under the mouse has focus. New windows such as the mini +command line invoked with &Alt;F2 will +not receive the focus, you must move the mouse over them to type. + + + + + +Focus Strictly Under Mouse + +Similar to Focus Under Mouse, but even more +strict with its interpretation. Only the window under the mouse pointer is +active. If the mouse pointer is not over a window, no window has focus. +New windows such as the mini command line invoked with +&Alt;F2 will not receive the focus, +you must move the mouse over them to type. + + + + + + +Note that Focus Under Mouse and +Focus Strictly Under Mouse prevent certain +features, such as Focus stealing prevention and the +&Alt; +walk-through-windows dialog, from working properly. + + + + + +Focus stealing prevention level + +This option specifies how much KWin will try to prevent unwanted focus +stealing caused by unexpected activation of new windows. + + + +None +Prevention is turned off and new windows always become activated. + + +Low +Prevention is enabled; when some window does not have support +for the underlying mechanism and KWin cannot reliably decide whether to activate +the window or not, it will be activated. This setting may have both worse and better +results than the medium level, depending on the applications. + + +Medium +Prevention is enabled. + + + +High +New windows get activated only +if no window is currently active or if they belong to the currently active +application. This setting is probably not really usable when not using mouse +focus policy. + + +Extreme +All windows must be explicitly activated by the user. + + +Windows that are prevented from stealing focus are marked as demanding +attention, which by default means their taskbar entry will be highlighted. +This can be changed in the Notifications control module. + + + +Raising window + +Once you have determined the focus policy, there are the window +raising options. + + + +By placing a mark in front of Raise on hover, delayed by, &kde; can +bring a window to the front if the mouse is over that window for a +specified period of time. You can determine the delay for this option by using the spin box control. + + + + +Setting the delay too short will cause a rapid fire changing of +windows, which can be quite distracting. Most people will like a delay +of 100-300 ms. This is responsive, but it will let you slide over the +corners of a window on your way to your destination without bringing +that window to the front. + + + + +If you do not use auto raise, make sure the +Click raises active window option has a mark in front of it. You +will not be happy with both auto raise and +Click raise active window disabled, the net effect is that +windows are not raised at all. + + + + + + + +Titlebar Actions + + +In this panel you can configure what happens to windows when a mousebutton is +clicked on their titlebars. + + + +Titlebar double-click + + +In this drop down box you can select either +Shade, several variations of +Maximize or Lower. + + + +Selecting Maximize causes &kde; to maximize the +window whenever you doubleclick on the titlebar. You can further +choose to maximize windows only horizontally or only +vertically. + +Shade, on the other hand, causes the window to be +reduced to simply the titlebar. Double clicking on the titlebar again, +restores the window to its normal size. + + + + + + +You can have windows automatically unshade when you simply place the +mouse over their shaded titlebar. Just check the Enable +hover check box in the Advanced tab of +this module. This is a great way to reclaim desktop space when you are +cutting and pasting between a lot of windows, for example. + + + + + + +<guilabel>Titlebar & Frame</guilabel> + + +This section allows you to determine what happens when you single click +on the titlebar or frame of a window. Notice that you can have +different actions associated with the same click depending on whether +the window is active or not. + + + For each combination of mousebuttons, Active and +Inactive, you can select the most appropriate choice. The actions are +as follows: + + + +Activate + + +Make this window active. + + + + + +Lower + + +Will move this window to the bottom of the display. This will get the +window out of the way. + + + + + +Nothing + + +Just like it says. Nothing happens. + + + + + +Operations Menu + + +Will bring up a small submenu, where you can choose window related +commands (&ie; Maximize, Minimize, Close, &etc;). + + + + + +Raise + + +Will bring the window to the top of the display. All other windows +which overlap with this one, will be hidden below it. + + + + + +Toggle Raise & Lower + + +This will raise windows which are not on top, and lower windows which +are already on top. + + + + + + + + +<guilabel>Maximize Button</guilabel> + +This section allows you to determine the behavior of the three mouse buttons +onto the maximize button. You have the choice between vertical only, horizontal +only or both directions. + + + + + + +Window Actions + + +<guilabel>Inactive Inner Window</guilabel> + + +This part of the module, allows you to configure what happens when you +click on an inactive window, with any of the three mouse buttons or use +the mouse wheel. + + + +Your choices are as follows: + + + + +Activate, Raise & Pass Click + + +This makes the clicked window active, raises it to the top of the +display, and passes a mouse click to the application within the window. + + + + + +Activate & Pass Click + + +This makes the clicked window active and passes a mouse click to the +application within the window. + + + + + +Activate + + +This simply makes the clicked window active. The mouse click is not +passed on to the application within the window. + + + + + +Activate & Raise + + +This makes the clicked window active and raises the window to the top of +the display. The mouse click is not passed on to the application within +the window. + + + + + + + + + + +<guilabel>Inner Window, Titlebar & Frame</guilabel> + + +This bottom section, allows you to configure additional actions, when +a modifier key (by default &Alt;) is pressed, and a mouse click is +made on a window. + + +Once again, you can select different actions for +Left, Middle and +Right button clicks and the Mouse +wheel. + + +Your choices are: + + + +Lower + + +Will move this window to the bottom of the display. This will get the +window out of the way. + + + + + +Move + + +Allows you to drag the selected window around the desktop. + + + + + +Nothing + + +Just like it says. Nothing happens. + + + + + +Raise + + +Will bring the window to the top of the display. All other windows +which overlap with this one, will be hidden below it. + + + + + +Resize + + +Allows you to change the size of the selected window. + + + + + +Toggle Raise & Lower + + +This will raise windows which are not on top, and lower windows which +are already on top. + + + + + + + + + + + + +Moving + + +<guilabel>Windows</guilabel> + +The options here determine how windows appear on screen when you +are moving them. + + + +Display window geometry when moving or resizing + +Enable this option if you want a window's geometry to be displayed +while it is being moved or resized. The window position relative to the top-left +corner of the screen is displayed together with its size. + + + + + + + +<guilabel>Snap Zones</guilabel> + +The rest of this page allows you to configure the Snap +Zones. These are like a magnetic field along the side of +the desktop and each window, which will make windows snap alongside +when moved near. + + + +Border snap zone: + + +Here you can set the snap zone for screen borders. Moving a +window within the configured distance will make it snap to the edge of +the desktop. + + + + +Window snap zone: + + +Here you can set the snap zone for windows. As with screen +borders, moving a window near to another will make it snap to the edge +as if the windows were magnetized. + + + + +Center snap zone: + + +Here you can set the snap zone for the screen center, &ie; the +strength of the magnetic field which will make windows snap +to the center of the screen when moved near it. + + + + + +Snap windows only when overlapping + + +If checked, windows will not snap together if they are only near +each other, they must be overlapping, by the configured amount or +less. + + + + + + + + +Advanced + + +In the Advanced panel you can do more advanced fine +tuning to the window behavior. + + + +Shading + + +Enable hover + + +If this option is enabled, a shaded window will un-shade automatically +when the mouse pointer has been over the titlebar for some time. Use +the spinbox to configure the delay un-shading. + + + + + + +Window Tabbing + + +Automatically group similar windows +When turned on attempt to automatically detect when a newly opened window is +related to an existing one and place them in the same window group. + + + +Switch to automatically grouped windows immediately +When turned on immediately switch to any new window tabs that were +automatically added to the current group. + + + +Placement +The placement policy determines where a new window will appear +on the desktop. Smart will try to achieve a minimum +overlap of windows, Cascade will cascade the +windows, and Random will use a random +position. Centered will open all new windows in +the center of the screen, and Zero-Cornered will +open all windows with their top left corner in the top left corner of +the screen. + + + + + +Special Window + +Hide utility windows for inactive applications +When turned on, utility windows (tool windows, torn-off menus,...) of +inactive applications will be hidden and will be shown only when the +application becomes active. Note that applications have to mark the windows +with the proper window type for this feature to work. + + + + + + + + +
diff --git a/doc/windowspecific/CMakeLists.txt b/doc/windowspecific/CMakeLists.txt new file mode 100644 index 000000000..ad103099a --- /dev/null +++ b/doc/windowspecific/CMakeLists.txt @@ -0,0 +1,2 @@ +########### install files ############### +kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kcontrol/windowspecific) diff --git a/doc/windowspecific/Face-smile.png b/doc/windowspecific/Face-smile.png new file mode 100644 index 000000000..501cc796a Binary files /dev/null and b/doc/windowspecific/Face-smile.png differ diff --git a/doc/windowspecific/akgregator-info.png b/doc/windowspecific/akgregator-info.png new file mode 100644 index 000000000..c05311f76 Binary files /dev/null and b/doc/windowspecific/akgregator-info.png differ diff --git a/doc/windowspecific/akregator-attributes.png b/doc/windowspecific/akregator-attributes.png new file mode 100644 index 000000000..b22478fe6 Binary files /dev/null and b/doc/windowspecific/akregator-attributes.png differ diff --git a/doc/windowspecific/akregator-fav.png b/doc/windowspecific/akregator-fav.png new file mode 100644 index 000000000..553fc4468 Binary files /dev/null and b/doc/windowspecific/akregator-fav.png differ diff --git a/doc/windowspecific/config-win-behavior.png b/doc/windowspecific/config-win-behavior.png new file mode 100644 index 000000000..afe9ebb48 Binary files /dev/null and b/doc/windowspecific/config-win-behavior.png differ diff --git a/doc/windowspecific/emacs-attribute.png b/doc/windowspecific/emacs-attribute.png new file mode 100644 index 000000000..4a75d35dd Binary files /dev/null and b/doc/windowspecific/emacs-attribute.png differ diff --git a/doc/windowspecific/emacs-info.png b/doc/windowspecific/emacs-info.png new file mode 100644 index 000000000..c1a106e5f Binary files /dev/null and b/doc/windowspecific/emacs-info.png differ diff --git a/doc/windowspecific/focus-stealing-pop2top-attribute.png b/doc/windowspecific/focus-stealing-pop2top-attribute.png new file mode 100644 index 000000000..187e713d9 Binary files /dev/null and b/doc/windowspecific/focus-stealing-pop2top-attribute.png differ diff --git a/doc/windowspecific/index.docbook b/doc/windowspecific/index.docbook new file mode 100644 index 000000000..ea782b6a6 --- /dev/null +++ b/doc/windowspecific/index.docbook @@ -0,0 +1,1025 @@ + + + +]> + + +Window Rules + +&Lauri.Watts; &Lauri.Watts.mail; + + + Parts of this documentation was converted from the KDE UserBase KWin Rules page. + + + + + +&FDLNotice; +2012-06-02 + &kde; SC 4.9 + +Here you can customize window settings specifically only for +some windows. + + +KDE +KControl +window settings +window placement +window size + + + +Window Specific Settings: Quick Start + +Here you can customize window settings specifically only for +some windows. + + +Please note that this configuration will not take effect if you +do not use &kwin; as your window manager. If you do use a different +window manager, please refer to its documentation for how to customize +window behavior. + + +Many of the settings you can configure here are those you can +configure on a global basis in the Window Behavior +&systemsettings; module, however some of them are even more detailed. + +They encompass geometry, placement, whether a window should be +kept above or below others, focus stealing prevention, and translucency +settings. + +You can access this module in two ways: from the titlebar of the +application you wish to configure, or from the &systemsettings;. If you +start it from within &systemsettings; you can use the +New... to create a window profile, and the +Detect Window Properties button on the resulting dialog to +partially fill in the required information for the application +you wish to configure. + +You can also at any time Modify... or +Delete any stored settings profile, and +reorder the list. Reordering the list using the Move Up +and Move Down buttons effects on how they are applied. + + + + + +Overview +&kwin; allows the end-user to define rules to alter an application's window attributes. + +For example, when an application is started, it can be forced to always run on Virtual Desktop 2. Or a defect in an application can be worked-around to force the window above others. + +Step-by-step examples are provided along with detailed information on using the &kwin; Rule Editor to specify Window Matching and Window Attributes. + + +Examples and Application Workaround +To see what's possible, detailed examples are provided which can also be used to model your own rules. + +A special page is to dedicated to address Application Workaround. + + +KWin Rule Editor +Invoking the KWin Rule Editor + + + + + + + + + + + + + +There are several ways to invoke the &kwin; Rule Editor. Below are two: + + +Right-click on the title-bar of any window, choose More ActionsWindow Manager Settings... and in the Configure window, select Window Rules or + + +System SettingsWindow BehaviorWindow Rules + +The main window is used to: + + +Affect rules with New..., Modify... and Delete +Share rules with others via Import and Export +Ensure desired rule evaluation using Move Up and Move Down + +Rule Evaluation +When an application starts (or the rules are modified), &kwin; evaluates the rules from the top of the list to the bottom. For all rules which match a window, the collective set of attributes are applied to the window, then the window is displayed. + +Should two or more matching rules enable the same attribute, the setting in the first rule in the list is used. + +You can tailor children windows for the application by placing the more restrictive rules first - see the Kopete and Kopete Chat Window example. + + + +Rule Editor + + + + + + + + + + + + + +The editor is composed of four tabs: + + +Window matching +Size & Position +Arrangement & Access +Appearance & Fixes + +As the name implies, Window matching is used to specify criteria to match one or more windows. The other three tabs are used to alter the attributes of the matching windows. + +Panels can also be affected. + +Window Matching +Each window rule has user specified Window Matching criteria. &kwin; uses the criteria to determine whether the rule is applicable for an application. + + +Window Attributes +Along with Window Matching criteria, each window rule has a set of Window Attributes. The attributes override the corresponding application's settings and are applied before the window is displayed by &kwin;. + + + + + +Window Matching + + + + + + + + + + + + + +The Window Matching tab is used to specify the criteria &kwin; uses to evaluate whether the rule is applicable for a given window. + +Zero (match any window) or more of the following may be specified: + + +Window class (application) - match the class. +Match whole window class - include matching the secondary class. + + +Window role - restrict the match to the function of the window (⪚ a main window, a chat window, &etc;) +Window types - restrict the match to the type of window: Normal Window, Dialog Window, &etc; +Window title - restrict the match to the title of the window. +Machine (hostname) - restrict the match to the host name associated with the window. + +While it's possible to manually enter the above information, the preferred method is to use the Detect Window Properties button. + +For each field, the following operators can be applied against the field value: + + +Unimportant - ignore the field. +Exact Match +Substring Match + +Both Exact Match and Substring Match implement case insensitive matching. For example, AB matches the string AB, ab, Ab and aB. + + +Regular Expression - Qt's regular expressions are implemented - see pattern matching using regular expressions. + +Detect Window Properties + + + + + + + + + + + + + +The Detect Window Properties function simplifies the process of entering the matching-criteria. + + +For the application you'd like to create a rule, start the application. +Next, in the Window matching tab, set the number of seconds of delay before the Detect Window Properties function starts. The default is zero seconds. +Click on Detect Window Properties and +When the mouse-cursor turns to cross-hairs, place it inside the application window (not the title bar) and left-click. +A new window is presented with information about the selected window. Select the desired fields: +Secondary class name - some applications have a secondary class name. This value can be used to restrict windows by this value. +Window role +Window type +Window title + + + +Click the OK button to back-fill the Window Matching criteria. + +By using a combination of the information, a rule can apply to an entire application (by Class) or a to a specific window Type within the Class - say a Toolbar. + + + +Window Attributes + + + + + + + + + + + + + +The attributes which can be set are grouped by function in three tabs: + + +Size & Position +Arrangement & Access +Appearance & Fixes + +Each attribute has a set of parameters which determines its disposition. + +Parameters +Each attribute, minimally, accepts one of the following parameters. Additional, attribute-specific arguments are listed within each attribute definition. + + + Do Not Affect + + Ensure a subsequent rule, which matches the window, does not affect the attribute. + + + Apply Initially + + Start the window with the attribute and allow it to be changed at run-time. + + + Remember + + Use the attribute setting as defined in the rule and if changed at run-time, save and use the new value instead. + + + Force + + The setting cannot be changed at run-time. + + + Apply Now, Force Temporarily + + Apply/Force the setting once and unset the attribute.The difference between the two is at run-time, Apply Now allows the attribute to be changed and Force Temporarily prohibits it to be altered until all affected windows exit. + + + +For Apply Now, if the rule has no other attributes set, the rule is deleted after evaluation whereas Force Temporarily, the rule is deleted after the last affected window terminates. + + +Attributes +The Detect Window Properties button back-fills attribute-specific values - for more information see Window Matching. For example the height and width values of the Size attribute is set to the height and width of the detected window. + +Yes/No arguments are used to toggle on or off attributes. Leniency with grammar helps one understand how a setting will be processed. For example, the attribute Skip taskbar, when set to No means do not skip the taskbar. In other words, show the window in the taskbar. + +Size & Position + + Position + + Position the window's upper left corner at the specified x,y coordinate. + + + +&kwin;'s origin, (0,0), is the upper left of the desktop. + + + Size + + The width and height of the window. + + + Maximized horizontally, Maximized vertically, Fullscreen + + These attributes are used to toggle the maximum horizontal/minimum horizontal/full-screen window attribute. + + + Desktop + + Place the window on the specified (Virtual) Desktop. Use All Desktops to place the window on all Virtual Desktops. + + + Minimized, Shaded + + Toggle the Minimize and Shading window attribute. For example, a window can be started Minimized or if it is started Minimized, it can be forced to not. + + + +Maximized attribute is emulated by using both Maximized horizontally and Maximized vertically or Initial placement with the Maximizing argument. + + + Initial placement + + Override the global window placement strategy with one of the following: + +Default - use the global window placement strategy. +No Placement - top-left corner. +Smart - place where no other window exists. +Maximizing - start the window maximized. +Cascade - staircase-by-title. +Centered - center of the desktop. +Random +Top-Left Corner +Under Mouse +On Main Window - restrict placement of a child window to the boundaries of the parent window. + + + + + Ignore requested geometry + + Toggle whether to accept or ignore the window's requested geometry position. To avoid conflicts between the default placement strategy and the window's request, the placement strategy is ignored when the window's request is accepted. + + + Minimum size, Maximum size + + The minimum and maximum size allowed for the window. + + + Obey geometry restrictions + + Toggle whether to adhere to the window's requested aspect ratio or base increment.In order to understand this attribute, some background is required. Briefly, windows must request from the Window Manager, a base increment: the minimum number of height X width pixels per re-size request. Typically, it's 1x1. Other windows though, for example terminal emulators or editors, use fixed-fonts and request their base-increment according to the size of one character. + + + + +Arrangement & Access + + Keep above, Keep below + + Toggle whether to keep the window above/below all others. + + + Autogroup with identical + + Toggle the grouping (commonly known as tabbing) of windows. + + + Autogroup in foreground + + Toggle whether to make the window active when it is added to the current Autogroup. + + + Autogroup by ID + + Create a group via a user-defined ID. More than one rule can share the same ID to allow for seemingly unrelated windows to be grouped. + + + Tiling + + Override the default window behavior to either Tiled or Floating. + + + Skip taskbar + + Toggle whether to display the window in the taskbar. + + + Skip pager + + Toggle whether to display the window in pager: + + + + + + + + + + + + + + + + + + Skip switcher + + Toggle whether to display the window in the ALT+TAB list. + + + Shortcut + + Assign a shortcut to the window. When Edit... is clicked, additional instructions are presented. + + + + +Appearance & Fixes + + No titlebar and frame + + Toggle whether to display the titlebar and frame around the window. + + + Active/Inactive opacity + + When the window is active/inactive, set its opacity to the percentage specified. + + + +Active/Inactive opacity can only be affected when Desktop Effects are enabled. + + + Moving/resizing + + Deprecated as of >4.8 + + + + Focus stealing prevention + + When a window wants focus, control on a scale (from None to Extreme) whether to honor the request and place above all other windows, or ignore its request (potentially leaving the window behind other windows): + +None - Always grant focus to the window. +Low +Normal +High +Extreme - The window's focus request is denied. Focus is only granted by explicitly requesting via the mousing. + + + + + +See Accept focus to make a window read-only - not accept any keyboard input. + + + Accept focus + + Toggle whether the window accepts keyboard input. Make the window read-only. + + + Ignore global shortcuts + + Toggle whether to ignore global shortcuts (as defined by System SettingsShortcuts and GesturesGlobal Shortcuts or by running kcmshell4 keys in konsole) while the window is active. + + + Closeable + + Toggle whether to display the Close button on the title bar. + + + +A terminal window may still be closed by the end user by ending the shell session however using Accept focus to disable keyboard input will make it more difficult to close the window. + + + Window type + + Change the window to another type and inherit the characteristics of that window: + +Normal Window +Dialog Window +Utility Window +Dock (panel) +Toolbar +Torn-Off Menu +Splash Screen +Desktop +Standalone Menubar + + + + + +Use with care because unwanted results may be introduced. For example, a Splash Screen is a automatically closed by &kwin; when clicked. + + + Block compositing + + Toggle whether to disable compositing while the window exists. If compositing is enabled and the rule specifies to disable compositing, while any matching window exists, compositing will be disabled. Compositing is re-enabled when the last matching window terminates. + + + + + + +Examples +The first example details all the necessary steps to create the rules. In order to keep this page a manageable size, subsequent examples only list steps specific to the example. + +The Pager attribute refers to the Virtual Desktop Manager: + + + + + + + + + + + + +Pin a Window to a Desktop and set other Attributes +Pin &akregator; to Virtual Desktop 2. Additionally, start the application with a preferred size and position. For each attribute, use the Apply Initially parameter so it can be overridden at run-time. + +The &kwin; rule is created as follows: + + +Start &akregator; on desktop two, size and position it to suit: + + + + + + + + + + + +Right-click on the titlebar and select More ActionsWindow Manager Settings...: + + + + + + + + + + + +Select the Window Rules in the left column and click on New...: + + + + + + + + + + + +The Edit Window-Specific Settings window is displayed. Window matching is the default tab: + + + + + + + + + + + +Click Detect Window Properties with 0s delay the cursor immediately turns into cross-hairs. Click (anywhere) inside the &akregator; window (but not the title bar). The window criteria are presented. Match only by primary class name so leave the check boxes unchecked - for additional information see window matching: + + + + + + + + + + + +Clicking OK the previous window back-fills the results in the Window Matching tab. Enter a meaningful text in the Description field (which is displayed in the KWin Rule window): + + + + + + + + + + + +Enable the window attributes: Position, Size and Desktop. The initial values are set by Detect Window Properties and can be overridden: + + + + + + + + + + + +Clicking OK in the previous window returns to the main KWin Rules. The new rule with its description is listed: + + + + + + + + + + + +Click OK to close the window. +Done. + + +Application on all Desktops and Handle One Child Window Uniquely +Except for conversation windows, display &kopete; and its children windows on all desktops and skip the systray and pager. For children conversation windows, treat them as the parent window except show them in systray. + +For each attribute, use the Force parameter so it can not be overridden. + +In order to implement the above, two rules need to be created: + + +A rule for Kopete Chat and +A rule for &kopete; + +The Kopete Chat rule's matching-criteria is more restrictive than the Kopete rule as it needs to match a specific Window Role: the chat window. Due to rule evaluation processing, the Kopete Chat rule must precede the &kopete; rule in the KWin Rule list for Kopete. + +Kopete Chat Rule +Assuming a Kopete Chat window is open: + + +Use Detect Window Properties and select the Kopete Chat window. Check the Window role box to restrict the criteria to chat windows - for additional information see window matching: + + + + + + + + + + + +Clicking OK in the previous window back-fills the results in the Window Matching tab. Enter a meaningful text in the Description box: + + + + + + + + + + + +Enable the following attributes: + + + + + + + + + + + +Click through to complete entry of the rule. + +The Skip taskbar attribute is set to No to display the window in the taskbar which loosely translates to: no do not skip taskbar . + + +Kopete Rule +Assuming &kopete; is open: + + +Use Detect Window Properties and select the &kopete; window. Match only by primary class name so leave the check boxes unchecked - for additional information see window matching: + + + + + + + + + + + +Clicking OK in the previous window back-fills the results in the Window Matching tab. Enter a meaningful text in the Description box: + + + + + + + + + + + +Enable the following attributes: + + + + + + + + + + + +Click through to complete entry of the rule. + + +Kopete KWin Rule List +As mentioned, due to rule evaluation processing, the Kopete Chat rule must precede the &kopete; rule: + + + + + + + + + + + + + + +Suppress a Window from showing on Pager +KNotes currently does not allow for its notes to skip the pager however a rule easily solves this shortcoming. + +Assuming a sticky note' window is available: + + +Use Detect Window Properties and select any sticky note window. Match only by primary class name so leave the check boxes unchecked - for additional information see window matching: + + + + + + + + + + + +Clicking OK in the previous window back-fills the results in the Window Matching tab. Enter a meaningful text in the Description box: + + + + + + + + + + + +Enable the Skip Pager attribute with the Force parameter: + + + + + + + + + + + +Click through to complete entry of the rule. + + +Force a Window to the Top +To pop an active window to the top, set its Focus stealing prevention attribute to None, typically, in conjunction with the Force parameter: + + + + + + + + + + + + + +Multiple Rules per Application +Thunderbird has several different child windows. This example: + + +Pin Thunderbird's main window on Virtual Desktop 1 with a specific size and location on the desktop. +Allow the Thunderbird composer window to reside on any desktop and when activated, force focus and pop it to the top of all windows. +Pop the Thunderbird reminder to the top and do not give it focus so it isn't inadvertently dismissed. + +Each rule's matching criteria is sufficiently restrictive so their order within the main &kwin; window is not important to affect rule evaluation. + +Thunderbird - Main +Assuming the Thunderbird Main window is open, sized and position to suit: + + +Use Detect Window Properties and select the Thunderbird Main window. Check the Window role box to restrict the criteria to the main window - for additional information see window matching: + + + + + + + + + + + +Clicking OK in the previous window back-fills the results in the Window Matching tab. Enter a meaningful text in the Description box: + + + + + + + + + + + +Enable the following attributes: + + + + + + + + + + + +Click through to complete entry of the rule. + + +Thunderbird - Composer +Assuming a Thunderbird Composer window is open: + + +Use Detect Window Properties and select the Thunderbird Compose window. Check the Window role and Window type boxes to restrict the criteria to composition windows - for additional information see window matching: + + + + + + + + + + + +Clicking OK in the previous window back-fills the results in the Window Matching tab. Enter a meaningful text in the Description box: + + + + + + + + + + + +Enable the following attributes: + + + + + + + + + + + +Click through to complete entry of the rule. + + +Thunderbird - Reminder +Assuming a Thunderbird Reminder window is open: + + +Use Detect Window Properties and select the Thunderbird Reminder window. Check the Secondary class name and Window Type boxes to restrict the criteria to reminder windows - for additional information see window matching: + + + + + + + + + + + +Clicking OK in the previous window back-fills the results in the Window Matching tab. Enter a meaningful text in the Description box: + + + + + + + + + + + +Enable the following attributes: + + + + + + + + + + + +Click through to complete entry of the rule. + + + + + +Application Workarounds +Below are Workarounds for misbehaving applications. + +If you are unfamiliar with creating &kwin; Rules, see this detailed example to base your new rule. + +Full-screen Re-size Error +&Emacs; and gVim, when maximized (full-screen mode) and under certain conditions may encounter window re-sizing issues - see Emacs window resizes ... A &kwin; Rule will work-around the issue. + +Assuming an &Emacs; window is open: + + +Use Detect Window Properties and select the &Emacs; window. Match only by primary class name so leave the check boxes unchecked - for additional information see window matching + + + + + + + + + + + +Clicking OK in the previous window back-fills the results in the Window Matching tab. Enter a meaningful text in the Description text box: + + + + + + + + + + + +Ignore &Emacs;'s full-screen request by enabling the Obey geometry restrictions attribute, toggling it to off (No) to ignore and selecting the Force parameter: + + + + + + + + + + + +Click through to complete entry of the rule. + + + + + + +Credits and License + +Documentation Copyright see the UserBase + KWin Rules page history + +&underFDL; + +&documentation.index; + diff --git a/doc/windowspecific/knotes-attribute.png b/doc/windowspecific/knotes-attribute.png new file mode 100644 index 000000000..3f15cc9ab Binary files /dev/null and b/doc/windowspecific/knotes-attribute.png differ diff --git a/doc/windowspecific/knotes-info.png b/doc/windowspecific/knotes-info.png new file mode 100644 index 000000000..522b984cc Binary files /dev/null and b/doc/windowspecific/knotes-info.png differ diff --git a/doc/windowspecific/kopete-attribute-2.png b/doc/windowspecific/kopete-attribute-2.png new file mode 100644 index 000000000..95dc5b00d Binary files /dev/null and b/doc/windowspecific/kopete-attribute-2.png differ diff --git a/doc/windowspecific/kopete-chat-attribute.png b/doc/windowspecific/kopete-chat-attribute.png new file mode 100644 index 000000000..06e303e4c Binary files /dev/null and b/doc/windowspecific/kopete-chat-attribute.png differ diff --git a/doc/windowspecific/kopete-chat-info.png b/doc/windowspecific/kopete-chat-info.png new file mode 100644 index 000000000..4569419a8 Binary files /dev/null and b/doc/windowspecific/kopete-chat-info.png differ diff --git a/doc/windowspecific/kopete-info.png b/doc/windowspecific/kopete-info.png new file mode 100644 index 000000000..ca4dfe770 Binary files /dev/null and b/doc/windowspecific/kopete-info.png differ diff --git a/doc/windowspecific/kwin-detect-window.png b/doc/windowspecific/kwin-detect-window.png new file mode 100644 index 000000000..ae31d5ebc Binary files /dev/null and b/doc/windowspecific/kwin-detect-window.png differ diff --git a/doc/windowspecific/kwin-kopete-rules.png b/doc/windowspecific/kwin-kopete-rules.png new file mode 100644 index 000000000..489013125 Binary files /dev/null and b/doc/windowspecific/kwin-kopete-rules.png differ diff --git a/doc/windowspecific/kwin-rule-editor.png b/doc/windowspecific/kwin-rule-editor.png new file mode 100644 index 000000000..e42b7b26a Binary files /dev/null and b/doc/windowspecific/kwin-rule-editor.png differ diff --git a/doc/windowspecific/kwin-rules-main-n-akregator.png b/doc/windowspecific/kwin-rules-main-n-akregator.png new file mode 100644 index 000000000..a801fef82 Binary files /dev/null and b/doc/windowspecific/kwin-rules-main-n-akregator.png differ diff --git a/doc/windowspecific/kwin-rules-main.png b/doc/windowspecific/kwin-rules-main.png new file mode 100644 index 000000000..fa290fab1 Binary files /dev/null and b/doc/windowspecific/kwin-rules-main.png differ diff --git a/doc/windowspecific/kwin-rules-ordering.png b/doc/windowspecific/kwin-rules-ordering.png new file mode 100644 index 000000000..1397150df Binary files /dev/null and b/doc/windowspecific/kwin-rules-ordering.png differ diff --git a/doc/windowspecific/kwin-window-attributes.png b/doc/windowspecific/kwin-window-attributes.png new file mode 100644 index 000000000..b62235228 Binary files /dev/null and b/doc/windowspecific/kwin-window-attributes.png differ diff --git a/doc/windowspecific/kwin-window-matching.png b/doc/windowspecific/kwin-window-matching.png new file mode 100644 index 000000000..50162f980 Binary files /dev/null and b/doc/windowspecific/kwin-window-matching.png differ diff --git a/doc/windowspecific/pager-4-desktops.png b/doc/windowspecific/pager-4-desktops.png new file mode 100644 index 000000000..4f2b28324 Binary files /dev/null and b/doc/windowspecific/pager-4-desktops.png differ diff --git a/doc/windowspecific/tbird-compose-attribute.png b/doc/windowspecific/tbird-compose-attribute.png new file mode 100644 index 000000000..ee0cdf46f Binary files /dev/null and b/doc/windowspecific/tbird-compose-attribute.png differ diff --git a/doc/windowspecific/tbird-compose-info.png b/doc/windowspecific/tbird-compose-info.png new file mode 100644 index 000000000..2bde0f934 Binary files /dev/null and b/doc/windowspecific/tbird-compose-info.png differ diff --git a/doc/windowspecific/tbird-main-attribute.png b/doc/windowspecific/tbird-main-attribute.png new file mode 100644 index 000000000..98e81eebc Binary files /dev/null and b/doc/windowspecific/tbird-main-attribute.png differ diff --git a/doc/windowspecific/tbird-main-info.png b/doc/windowspecific/tbird-main-info.png new file mode 100644 index 000000000..ecaff4847 Binary files /dev/null and b/doc/windowspecific/tbird-main-info.png differ diff --git a/doc/windowspecific/tbird-reminder-attribute-2.png b/doc/windowspecific/tbird-reminder-attribute-2.png new file mode 100644 index 000000000..9110bc65c Binary files /dev/null and b/doc/windowspecific/tbird-reminder-attribute-2.png differ diff --git a/doc/windowspecific/tbird-reminder-info.png b/doc/windowspecific/tbird-reminder-info.png new file mode 100644 index 000000000..bcaf2c444 Binary files /dev/null and b/doc/windowspecific/tbird-reminder-info.png differ diff --git a/doc/windowspecific/window-matching-emacs.png b/doc/windowspecific/window-matching-emacs.png new file mode 100644 index 000000000..d0404b1b9 Binary files /dev/null and b/doc/windowspecific/window-matching-emacs.png differ diff --git a/doc/windowspecific/window-matching-init.png b/doc/windowspecific/window-matching-init.png new file mode 100644 index 000000000..0bdbcf3f3 Binary files /dev/null and b/doc/windowspecific/window-matching-init.png differ diff --git a/doc/windowspecific/window-matching-knotes.png b/doc/windowspecific/window-matching-knotes.png new file mode 100644 index 000000000..2e33a43c9 Binary files /dev/null and b/doc/windowspecific/window-matching-knotes.png differ diff --git a/doc/windowspecific/window-matching-kopete-chat.png b/doc/windowspecific/window-matching-kopete-chat.png new file mode 100644 index 000000000..a232d3b9f Binary files /dev/null and b/doc/windowspecific/window-matching-kopete-chat.png differ diff --git a/doc/windowspecific/window-matching-kopete.png b/doc/windowspecific/window-matching-kopete.png new file mode 100644 index 000000000..dbab3bd3b Binary files /dev/null and b/doc/windowspecific/window-matching-kopete.png differ diff --git a/doc/windowspecific/window-matching-ready-akregator.png b/doc/windowspecific/window-matching-ready-akregator.png new file mode 100644 index 000000000..f2c0f7c28 Binary files /dev/null and b/doc/windowspecific/window-matching-ready-akregator.png differ diff --git a/doc/windowspecific/window-matching-tbird-compose.png b/doc/windowspecific/window-matching-tbird-compose.png new file mode 100644 index 000000000..30e8494df Binary files /dev/null and b/doc/windowspecific/window-matching-tbird-compose.png differ diff --git a/doc/windowspecific/window-matching-tbird-main.png b/doc/windowspecific/window-matching-tbird-main.png new file mode 100644 index 000000000..4dda36019 Binary files /dev/null and b/doc/windowspecific/window-matching-tbird-main.png differ diff --git a/doc/windowspecific/window-matching-tbird-reminder.png b/doc/windowspecific/window-matching-tbird-reminder.png new file mode 100644 index 000000000..2787ac1ff Binary files /dev/null and b/doc/windowspecific/window-matching-tbird-reminder.png differ