bf48c3b80d
Currently, kwin blits the dnd icon onto the cursor image. This doesn't work on mobile because the cursor is usually hidden there. As a short term solution, put the dnd icon in the Scene. In the future, it needs to be put in its own render layer.
367 lines
9.8 KiB
CMake
367 lines
9.8 KiB
CMake
# for things that are also used by kwin libraries
|
|
configure_file(libkwineffects/kwinconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/libkwineffects/kwinconfig.h)
|
|
configure_file(config-kwin.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwin.h)
|
|
|
|
set(kwin_effects_dbus_xml ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.kwin.Effects.xml)
|
|
qt_add_dbus_interface(effects_interface_SRCS ${kwin_effects_dbus_xml} kwineffects_interface)
|
|
add_library(KWinEffectsInterface STATIC ${effects_interface_SRCS})
|
|
set_property(TARGET KWinEffectsInterface PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
|
|
target_link_libraries(KWinEffectsInterface Qt::DBus)
|
|
|
|
add_subdirectory(effects)
|
|
add_subdirectory(scripts)
|
|
add_subdirectory(tabbox)
|
|
add_subdirectory(scripting)
|
|
add_subdirectory(helpers)
|
|
add_subdirectory(qml)
|
|
|
|
add_subdirectory(libkwineffects)
|
|
if (KWIN_BUILD_KCMS)
|
|
add_subdirectory(kcmkwin)
|
|
endif()
|
|
|
|
add_library(kwin SHARED)
|
|
set_target_properties(kwin PROPERTIES
|
|
VERSION ${PROJECT_VERSION}
|
|
SOVERSION ${PROJECT_VERSION_MAJOR}
|
|
)
|
|
|
|
target_sources(kwin PRIVATE
|
|
3rdparty/xcursor.c
|
|
activation.cpp
|
|
appmenu.cpp
|
|
atoms.cpp
|
|
client_machine.cpp
|
|
colors/colordevice.cpp
|
|
colors/colormanager.cpp
|
|
composite.cpp
|
|
core/colorlut.cpp
|
|
core/colorpipelinestage.cpp
|
|
core/colortransformation.cpp
|
|
core/inputbackend.cpp
|
|
core/inputdevice.cpp
|
|
core/output.cpp
|
|
core/outputbackend.cpp
|
|
core/outputconfiguration.cpp
|
|
core/outputlayer.cpp
|
|
core/overlaywindow.cpp
|
|
core/renderbackend.cpp
|
|
core/renderjournal.cpp
|
|
core/renderlayer.cpp
|
|
core/renderlayerdelegate.cpp
|
|
core/renderloop.cpp
|
|
core/rendertarget.cpp
|
|
core/session.cpp
|
|
core/session_consolekit.cpp
|
|
core/session_logind.cpp
|
|
core/session_noop.cpp
|
|
cursor.cpp
|
|
cursordelegate_opengl.cpp
|
|
cursordelegate_qpainter.cpp
|
|
cursorsource.cpp
|
|
dbusinterface.cpp
|
|
debug_console.cpp
|
|
decorationitem.cpp
|
|
decorations/decoratedclient.cpp
|
|
decorations/decorationbridge.cpp
|
|
decorations/decorationpalette.cpp
|
|
decorations/decorations_logging.cpp
|
|
decorations/settings.cpp
|
|
deleted.cpp
|
|
dmabuftexture.cpp
|
|
dndiconitem.cpp
|
|
dpmsinputeventfilter.cpp
|
|
effectloader.cpp
|
|
effects.cpp
|
|
events.cpp
|
|
focuschain.cpp
|
|
ftrace.cpp
|
|
gestures.cpp
|
|
globalshortcuts.cpp
|
|
group.cpp
|
|
hide_cursor_spy.cpp
|
|
idle_inhibition.cpp
|
|
idledetector.cpp
|
|
input.cpp
|
|
input_event.cpp
|
|
input_event_spy.cpp
|
|
inputmethod.cpp
|
|
inputpanelv1integration.cpp
|
|
inputpanelv1window.cpp
|
|
internalwindow.cpp
|
|
item.cpp
|
|
keyboard_input.cpp
|
|
keyboard_layout.cpp
|
|
keyboard_layout_switching.cpp
|
|
keyboard_repeat.cpp
|
|
killwindow.cpp
|
|
layers.cpp
|
|
layershellv1integration.cpp
|
|
layershellv1window.cpp
|
|
linux_dmabuf.cpp
|
|
main.cpp
|
|
modifier_only_shortcuts.cpp
|
|
mousebuttons.cpp
|
|
moving_client_x11_filter.cpp
|
|
netinfo.cpp
|
|
onscreennotification.cpp
|
|
options.cpp
|
|
osd.cpp
|
|
outline.cpp
|
|
placeholderinputeventfilter.cpp
|
|
placeholderoutput.cpp
|
|
placement.cpp
|
|
placementtracker.cpp
|
|
plugin.cpp
|
|
pluginmanager.cpp
|
|
pointer_input.cpp
|
|
popup_input_filter.cpp
|
|
rootinfo_filter.cpp
|
|
rulebooksettings.cpp
|
|
rules.cpp
|
|
scene.cpp
|
|
screenedge.cpp
|
|
scripting/dbuscall.cpp
|
|
scripting/desktopbackgrounditem.cpp
|
|
scripting/screenedgeitem.cpp
|
|
scripting/scriptedeffect.cpp
|
|
scripting/scripting.cpp
|
|
scripting/scripting_logging.cpp
|
|
scripting/scriptingutils.cpp
|
|
scripting/tilemodel.cpp
|
|
scripting/v2/clientmodel.cpp
|
|
scripting/v3/clientmodel.cpp
|
|
scripting/v3/virtualdesktopmodel.cpp
|
|
scripting/windowthumbnailitem.cpp
|
|
scripting/workspace_wrapper.cpp
|
|
shadow.cpp
|
|
shadowitem.cpp
|
|
sm.cpp
|
|
surfaceitem.cpp
|
|
surfaceitem_internal.cpp
|
|
surfaceitem_wayland.cpp
|
|
surfaceitem_x11.cpp
|
|
syncalarmx11filter.cpp
|
|
tablet_input.cpp
|
|
tabletmodemanager.cpp
|
|
tiles/customtile.cpp
|
|
tiles/quicktile.cpp
|
|
tiles/tile.cpp
|
|
tiles/tilemanager.cpp
|
|
touch_input.cpp
|
|
unmanaged.cpp
|
|
useractions.cpp
|
|
virtualdesktops.cpp
|
|
virtualdesktopsdbustypes.cpp
|
|
virtualkeyboard_dbus.cpp
|
|
was_user_interaction_x11_filter.cpp
|
|
wayland_server.cpp
|
|
waylandshellintegration.cpp
|
|
waylandwindow.cpp
|
|
window.cpp
|
|
window_property_notify_x11_filter.cpp
|
|
windowitem.cpp
|
|
workspace.cpp
|
|
x11eventfilter.cpp
|
|
x11syncmanager.cpp
|
|
x11window.cpp
|
|
xdgactivationv1.cpp
|
|
xdgshellintegration.cpp
|
|
xdgshellwindow.cpp
|
|
xkb.cpp
|
|
xwaylandwindow.cpp
|
|
)
|
|
|
|
target_link_libraries(kwin
|
|
kwineffects
|
|
kwinglutils
|
|
|
|
Qt::Concurrent
|
|
Qt::DBus
|
|
Qt::Quick
|
|
|
|
KF5::ConfigCore
|
|
KF5::ConfigWidgets
|
|
KF5::CoreAddons
|
|
KF5::Crash
|
|
KF5::GlobalAccel
|
|
KF5::GlobalAccelPrivate
|
|
KF5::I18n
|
|
KF5::Package
|
|
KF5::Service
|
|
KF5::WindowSystem
|
|
|
|
KDecoration2::KDecoration
|
|
KDecoration2::KDecoration2Private
|
|
|
|
XCB::COMPOSITE
|
|
XCB::CURSOR
|
|
XCB::DAMAGE
|
|
XCB::GLX
|
|
XCB::ICCCM
|
|
XCB::KEYSYMS
|
|
XCB::RANDR
|
|
XCB::RENDER
|
|
XCB::SHAPE
|
|
XCB::SHM
|
|
XCB::SYNC
|
|
XCB::XCB
|
|
XCB::XFIXES
|
|
XCB::XINERAMA
|
|
|
|
UDev::UDev
|
|
XKB::XKB
|
|
EGL::EGL
|
|
epoxy::epoxy
|
|
|
|
Threads::Threads
|
|
Wayland::Server
|
|
lcms2::lcms2
|
|
)
|
|
if (QT_MAJOR_VERSION EQUAL "5")
|
|
target_link_libraries(kwin Qt5::X11Extras Qt5::XkbCommonSupportPrivate)
|
|
endif()
|
|
|
|
if (KWIN_BUILD_NOTIFICATIONS)
|
|
target_link_libraries(kwin KF5::Notifications)
|
|
endif()
|
|
|
|
kconfig_add_kcfg_files(kwin
|
|
settings.kcfgc
|
|
rulesettings.kcfgc
|
|
rulebooksettingsbase.kcfgc
|
|
)
|
|
|
|
ki18n_wrap_ui(kwin
|
|
debug_console.ui
|
|
shortcutdialog.ui
|
|
)
|
|
|
|
set(kwin_dbus_SRCS)
|
|
qt_add_dbus_adaptor(kwin_dbus_SRCS scripting/org.kde.kwin.Script.xml scripting/scripting.h KWin::AbstractScript)
|
|
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.KWin.xml dbusinterface.h KWin::DBusInterface)
|
|
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.kwin.Compositing.xml dbusinterface.h KWin::CompositorDBusInterface)
|
|
qt_add_dbus_adaptor(kwin_dbus_SRCS ${kwin_effects_dbus_xml} effects.h KWin::EffectsHandlerImpl)
|
|
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.KWin.VirtualDesktopManager.xml dbusinterface.h KWin::VirtualDesktopManagerDBusInterface)
|
|
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.KWin.Session.xml sm.h KWin::SessionManager)
|
|
qt_add_dbus_adaptor(kwin_dbus_SRCS org.kde.KWin.Plugins.xml dbusinterface.h KWin::PluginManagerDBusInterface)
|
|
qt_add_dbus_interface(kwin_dbus_SRCS org.freedesktop.DBus.Properties.xml dbusproperties_interface)
|
|
|
|
if (KWIN_BUILD_SCREENLOCKER)
|
|
qt_add_dbus_interface(kwin_dbus_SRCS ${KSCREENLOCKER_DBUS_INTERFACES_DIR}/kf5_org.freedesktop.ScreenSaver.xml screenlocker_interface)
|
|
qt_add_dbus_interface(kwin_dbus_SRCS ${KSCREENLOCKER_DBUS_INTERFACES_DIR}/org.kde.screensaver.xml kscreenlocker_interface)
|
|
endif()
|
|
|
|
qt_add_dbus_interface(kwin_dbus_SRCS org.kde.kappmenu.xml appmenu_interface)
|
|
|
|
target_sources(kwin PRIVATE
|
|
${kwin_dbus_SRCS}
|
|
)
|
|
|
|
add_subdirectory(backends)
|
|
add_subdirectory(scenes)
|
|
add_subdirectory(utils)
|
|
add_subdirectory(wayland)
|
|
add_subdirectory(xwayland)
|
|
|
|
if (KWIN_BUILD_ACTIVITIES)
|
|
target_sources(kwin PRIVATE activities.cpp)
|
|
target_link_libraries(kwin KF5::Activities)
|
|
endif()
|
|
|
|
if (KWIN_BUILD_SCREENLOCKER)
|
|
target_sources(kwin PRIVATE screenlockerwatcher.cpp)
|
|
target_link_libraries(kwin PW::KScreenLocker)
|
|
endif()
|
|
|
|
if (KWIN_BUILD_TABBOX)
|
|
target_sources(kwin PRIVATE
|
|
tabbox/clientmodel.cpp
|
|
tabbox/desktopchain.cpp
|
|
tabbox/desktopmodel.cpp
|
|
tabbox/switcheritem.cpp
|
|
tabbox/tabbox.cpp
|
|
tabbox/tabbox_logging.cpp
|
|
tabbox/tabboxconfig.cpp
|
|
tabbox/tabboxhandler.cpp
|
|
tabbox/x11_filter.cpp
|
|
)
|
|
target_link_libraries(kwin Qt::GuiPrivate)
|
|
endif()
|
|
|
|
qt_generate_dbus_interface(virtualkeyboard_dbus.h org.kde.kwin.VirtualKeyboard.xml OPTIONS -A)
|
|
qt_generate_dbus_interface(tabletmodemanager.h org.kde.KWin.TabletModeManager.xml OPTIONS -A)
|
|
|
|
generate_export_header(kwin EXPORT_FILE_NAME kwin_export.h)
|
|
|
|
add_executable(kwin_x11 main_x11.cpp)
|
|
target_link_libraries(kwin_x11
|
|
KWinX11Platform
|
|
kwin
|
|
)
|
|
kcoreaddons_target_static_plugins(kwin_x11 "kwin/effects/plugins")
|
|
|
|
install(TARGETS kwin ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} LIBRARY NAMELINK_SKIP)
|
|
install(TARGETS kwin_x11 ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
|
|
|
|
add_executable(kwin_wayland main_wayland.cpp)
|
|
|
|
target_link_libraries(kwin_wayland
|
|
kwin
|
|
KWinXwaylandServerModule
|
|
)
|
|
kcoreaddons_target_static_plugins(kwin_wayland "kwin/effects/plugins")
|
|
|
|
install(TARGETS kwin_wayland ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
|
|
if (HAVE_LIBCAP)
|
|
install(
|
|
CODE "execute_process(
|
|
COMMAND
|
|
${SETCAP_EXECUTABLE}
|
|
CAP_SYS_NICE=+ep
|
|
\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_BINDIR}/kwin_wayland)"
|
|
)
|
|
endif()
|
|
|
|
add_subdirectory(platformsupport)
|
|
add_subdirectory(plugins)
|
|
|
|
target_link_libraries(kwin_wayland
|
|
KWinQpaPlugin
|
|
KF5GlobalAccelKWinPlugin
|
|
KF5WindowSystemKWinPlugin
|
|
KF5IdleTimeKWinPlugin
|
|
)
|
|
|
|
add_custom_target(
|
|
KWinDBusInterfaces
|
|
ALL
|
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/org.kde.kwin.VirtualKeyboard.xml
|
|
${CMAKE_CURRENT_BINARY_DIR}/org.kde.KWin.TabletModeManager.xml
|
|
)
|
|
|
|
if (PipeWire_FOUND)
|
|
target_link_libraries(kwin_wayland KWinScreencastPlugin)
|
|
endif()
|
|
|
|
install(FILES kwin.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR})
|
|
if (KWIN_BUILD_NOTIFICATIONS)
|
|
install(FILES kwin.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR})
|
|
endif()
|
|
install(
|
|
FILES
|
|
org.kde.KWin.VirtualDesktopManager.xml
|
|
org.kde.KWin.xml
|
|
org.kde.kwin.Compositing.xml
|
|
org.kde.kwin.Effects.xml
|
|
org.kde.KWin.Plugins.xml
|
|
${CMAKE_CURRENT_BINARY_DIR}/org.kde.kwin.VirtualKeyboard.xml
|
|
${CMAKE_CURRENT_BINARY_DIR}/org.kde.KWin.TabletModeManager.xml
|
|
DESTINATION
|
|
${KDE_INSTALL_DBUSINTERFACEDIR}
|
|
)
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kwin_export.h DESTINATION ${KDE_INSTALL_INCLUDEDIR} COMPONENT Devel)
|
|
|
|
# Install the KWin/Script service type
|
|
install(FILES scripting/kwinscript.desktop DESTINATION ${KDE_INSTALL_KSERVICETYPESDIR})
|