Commit graph

24063 commits

Author SHA1 Message Date
David Edmundson
fbb71f9c0b XWayland: Don't dispatch xwayland events in QAbstractEventDispatcher sleeps
QAbstractEventDispatcher blocks and waits constantly on every external event
processed; every timer or update from an X or wayland client, mouse
move or DRM event.

Right now every time this happens we go and check Xwayland for new
events, this is a system call (poll) that based on strace will
unsurprisingly immediately return with EAGAIN as there's nothing to read
from X. If there is something to read our socket notifier will fire. On block we do still need to read any events read in the meantime that weren't dispatched.

This cuts down our system calls significantly, which hopefully should have a
noticeable impact on performance especially when the kernel is under
load.

---

Found whilst analysing strace (by accident whilst looking for something else!)

In a simple case of xwayland nested running glxgears we go from 28 calls per frame to 21. With many many clients and more input events it'll be an even higher percentage.
2023-02-08 10:34:20 +00:00
l10n daemon script
d983b78107 GIT_SILENT Sync po/docbooks with svn 2023-02-08 03:29:52 +00:00
l10n daemon script
608fbbfa32 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-02-08 02:07:04 +00:00
Vlad Zahorodnii
7c1d188747 scripting: Remove unnecessary x11window.h include 2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
6de388c79c scripting: Make workspace.getClient() return Window 2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
09fd29dccc scripting: Remove unrelated signals
The current state is inconsistent. Some window-specific signals are
exposed in the workspace, some not.

This change drops those signals. One should monitor the signals it's
interested in instead.
2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
7fd7c07b30 scripting: Remove noop signals 2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
93c1a610bc scripting: Remove X11 specific signals 2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
452bb20741 Drop Workspace::{oldDisplayWidth,oldDisplayHeight}
They're unused.
2023-02-07 21:34:07 +00:00
Vlad Zahorodnii
77bf51c3b5 effects/overview: Drop "blur background" option
The blur effect is used to improve the contrast. The option was added
thinking "why not? it might be useful." This was perhaps a mistake and
it should have been added with a clear valid usecase in mind.

CCBUG: 457495
2023-02-07 19:36:20 +00:00
Vlad Zahorodnii
a3748b8e48 effects: Drop EffectWindow::(un)referencePreviousWindowPixmap 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
89283c4cc6 effects: Drop support for effect proxy'ing
It's not used by any effect. We use other means to share functionality
between effects now.
2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
66837f7cce effects: Remove deprecated feature enums 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
909e10dace effects: Drop PAINT_DISABLED_BY_TAB_GROUP 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
65f4313e04 effects: Drop EffectWindow::geometry 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
4f44c28032 effects: Drop EffectWindow::isCurrentTab 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
20487c7cda effects: Drop legacy EffectsHandler::desktopChanged overloads 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
522e2ee7c4 effects: Drop EffectWindow::desktop() 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
9371fc8ae9 scripting: Prefer VirtualDesktop objects 2023-02-07 15:41:43 +02:00
Vlad Zahorodnii
0218a8f3ba scripting: Drop deprecated apis 2023-02-07 14:07:03 +02:00
Ismael Asensio
e504c58286 kcms/tabbox: Manage shortcuts via ShortcutSettings
Leverage the standardized ShortcutSettings config object to handle
the shortcuts config for the tabox (setting default values, reading
and saving to KGlobalAccel, etc).

This way, we can remove the extra methods in TabBoxConfigForm and
improve separation between UI and logic.

It also fixes the actions getting stored untranslated when saving
from the KCM (until next restart of KWin)
2023-02-07 07:59:25 +00:00
Vlad Zahorodnii
d6315bebd0 scripting: Flatten source tree
It makes source tree tidier.
2023-02-07 07:08:04 +00:00
l10n daemon script
87c510328e GIT_SILENT Sync po/docbooks with svn 2023-02-07 02:28:10 +00:00
Ismael Asensio
9c2224acb3 kcms/tabbox: Expose shortcuts as a KConfigSkeleton
Provide a new KConfigSkeleton (ShortcutSettings) so that the
KCModuleData knows if any of the shortcuts is non-default.

This improves the UX by showing an "orange dot" in system
settings when just a shorcut has been changed.

We also need to implement a new specific KConfigSkeletonItem
(`ShortcutItem`) that uses KGlobalAccel to retrieve and store
the shortcuts, instead of storing them in a config file.
2023-02-06 21:01:35 +01:00
Vlad Zahorodnii
600de787d8 scripting: Drop org.kde.kwin 2.x
It's superseded by 3.x.
2023-02-06 18:59:10 +00:00
David Edmundson
2ca4627207 Autotests: Dont warp cursor before X is available kwin side 2023-02-06 16:24:01 +00:00
David Edmundson
466f2fe8ba Launch xwayland on demand
This installs a socket notifier onto our xwayland socket, when a user
connects we launch xwayland. The client then connections once kwin has
established itself as the compositor.

For a full desktop plasma session this patch effectively does nothing
too useful as we still start kcminit and make xrdb calls on startup
which in turn will launch X, but for the same reason this patch should
be harmless now as we're still processing the xrdb calls before any
clients will connect.
2023-02-06 16:24:01 +00:00
David Edmundson
29b456ff25 Autotests: Use a helper method to create X11 connection 2023-02-06 16:02:50 +00:00
Ismael Asensio
8507e602f3 kcms/tabbox: Handle config directly within the configuration form
By passing the config object to the TabBoxConfigurationForm, we
can handle it directly instead of bouncing information from and
back between the forms and the KCM main class.

Now the user changes in the UI translate to the config objects,
which can directly provide `isSaveNeeded()` and `isDefaults()` info.

This allows to simplify the logic on both classes, reducing the
coupling between them and minimizing the number of exposed public
methods and some boilerplate.
2023-02-06 14:01:14 +01:00
Vlad Zahorodnii
9807c83929 {x11,wayland}: Fix restoring fullscreen windows
If the window has been originally on another output, make sure that the
window will be properly put back on it.

This logic seem to originate from 7d67380205,
but it's not necessary anymore because geometry restore will be updated
if the window is moved to another output by the user.

BUG: 465358
2023-02-06 11:33:35 +00:00
Ismael Asensio
a648553be0 kcms/tabbox: Improve model initialization
- Add the switchers to the model directly, instead of using
  temporal lists and a second loop over them
- Use the same model for main and alternative forms

This makes this code a little more clear and efficient
2023-02-06 09:11:34 +00:00
l10n daemon script
8b8bfe515e GIT_SILENT Sync po/docbooks with svn 2023-02-06 02:34:01 +00:00
Joshua Goins
ee01e4b473 Update decoration kcm docbook
This includes screenshots for the new frameless style KCM, as well as
changing some of the outdated text.
2023-02-05 02:22:14 +00:00
Joshua Goins
21dbf0f413 kcm/decoration: Change it to the new frameless style
This now matches other modern KCMs and removes the weird titlebar tab view,
moving it to a separate page.
2023-02-05 02:22:14 +00:00
l10n daemon script
2d1b6e9b2c GIT_SILENT Sync po/docbooks with svn 2023-02-05 02:21:23 +00:00
l10n daemon script
68889026d4 GIT_SILENT Sync po/docbooks with svn 2023-02-04 02:48:10 +00:00
l10n daemon script
71c9b7db87 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-02-04 02:09:27 +00:00
Vlad Zahorodnii
271de0ccc6 scripts: Port some scripts to org.kde.kwin v3 qml api 2023-02-03 17:22:16 +00:00
Vlad Zahorodnii
d619e0b4d5 tiling: Ensure padding is writen to config
Root tile's padding is not monitored so new padding values are never written to the config.

BUG: 464863
2023-02-03 16:40:41 +00:00
Marco Martin
1332d7de2c Also cancel translucencyMoveResizeAnimations
When a window goes away it was stoppping translucencyWindowTypeAnimation
and translucencyInactiveAnimation but any translucencyMoveResizeAnimations

was hanging there forever, causing ghost windows

BUG:439332
2023-02-03 16:23:05 +01:00
Vlad Zahorodnii
37c4a4536e scene: Sync Window::readyForPainting() to window item visibility
If a window is made ready for painting with some delay, the item won't
schedule an update. To fix that, sync the item visibility state with
Window::readyForPainting(). When the item visibility changes, a repaint
will be scheduled.

BUG: 464955
2023-02-03 14:09:27 +00:00
Vlad Zahorodnii
2babccda04 x11: Fix maximize animation
Window::maximize() used to be split in two halves:

- generic Window::setMaximized() and Window::maximize()
- protocol-specific Window::changeMaximize()

Window::changeMaximize() used to block all geometry updates and
Window::maximize() emit "maximize mode changed" signals. With that,
frameGeometryChanged came always before clientMaximizedStateChanged.

After merging Window::changeMaximize() and Window::maximize(), the order
of the signals has been reversed because of RAII. Unblock geometry
updates explicitly to preserve the old behavior.

BUG: 465157
2023-02-03 10:33:42 +02:00
l10n daemon script
cf02612710 GIT_SILENT Sync po/docbooks with svn 2023-02-03 02:34:32 +00:00
Xaver Hugl
1746af4b02 gesture: use the global direction enums 2023-02-02 16:21:36 +00:00
Xaver Hugl
a9334cb9c6 unify touchpad gesture APIs
There don't need to be separate functions for real time and not real time
2023-02-02 16:21:36 +00:00
Vlad Zahorodnii
e5901070cc Drop support for _KDE_NET_WM_TEMPORARY_RULES
It's an obscure feature, which perhaps not worth putting an effort to
make it work on wayland and x11.
2023-02-02 15:34:24 +00:00
Vlad Zahorodnii
d18f7efac2 scripting: Remove deprecated properties in WindowThumbnailItem 2023-02-02 15:13:38 +00:00
Vlad Zahorodnii
5de308792f effects/fade: Remove hidden FadeWindows option
Enable/disable the fade effect in system settings instead.
2023-02-02 14:48:12 +00:00
Vlad Zahorodnii
c1fb295cd6 plugins/nightcolor: Drop legacy shortcut with localized key 2023-02-02 13:51:28 +00:00
Vlad Zahorodnii
78e0ff6b97 Avoid resizing the tile until interactive resize is actually active
It's confusing, but handleInteractiveMoveResize() can be called while
interactive move resize is inactive.
2023-02-02 12:07:13 +00:00