Commit graph

3020 commits

Author SHA1 Message Date
Vlad Zahorodnii
6d20d19fec platforms/x11: Always set swap interval to 1
With the new compositing scheduling, we want the screen to be redrawn as
close as possible to the next vblank. Furthermore, compositing is no
longer driven by a timer. This change removes the NoSwapEncourage swap
strategy as it doesn't make sense now, in addition to that it just does
not work on Wayland.
2021-01-07 13:10:59 +00:00
Vlad Zahorodnii
b8a70e62d5 Introduce RenderLoop
At the moment, our frame scheduling infrastructure is still heavily
based on Xinerama-style rendering. Specifically, we assume that painting
is driven by a single timer, etc.

This change introduces a new type - RenderLoop. Its main purpose is to
drive compositing on a specific output, or in case of X11, on the
overlay window.

With RenderLoop, compositing is synchronized to vblank events. It
exposes the last and the next estimated presentation timestamp. The
expected presentation timestamp can be used by effects to ensure that
animations are synchronized with the upcoming vblank event.

On Wayland, every outputs has its own render loop. On X11, per screen
rendering is not possible, therefore the platform exposes the render
loop for the overlay window. Ideally, the Scene has to expose the
RenderLoop, but as the first step towards better compositing scheduling
it's good as is for the time being.

The RenderLoop tries to minimize the latency by delaying compositing as
close as possible to the next vblank event. One tricky thing about it is
that if compositing is too close to the next vblank event, animations
may become a little bit choppy. However, increasing the latency reduces
the choppiness.

Given that, there is no any "silver bullet" solution for the choppiness
issue, a new option has been added in the Compositing KCM to specify the
amount of latency. By default, it's "Medium," but if a user is not
satisfied with the upstream default, they can tweak it.
2021-01-06 16:59:29 +00:00
Ismael Asensio
6eda92a0fd kcm/kwinrules: Detect and suggest activities from a window
Add the activities info to the list of properties provided by
the `queryWindowInfo()` dBus method, and suggest them to the
user when inspecting a given window.

An empty activity list means "All Activities" (null UUID)
Also get the null UUID value instead of having it hardcoded.
2021-01-05 14:31:07 +01:00
Cyril Rossi
8a79f38de8 KCM KWinScripts implement KCModuleData to highlight default at module level
Use highlight in KPluginSelector
Also remove PluginKeyword in .desktop file
2021-01-05 08:53:04 +00:00
Ismael Asensio
247d9c38d1 kcm/kwinrules: Restore method textOfValue()
This convenience invokable method was removed in 66ee89855
by mistake, since it's still used in RulesEditor.qml

While at it, optimize arguments to const &
2021-01-04 19:30:00 +01:00
Michael Tunnell
5193658aa2 Apply Initially as default value of new Properties
Change the default value from "Do Not Affect" to "Apply Initially" when
adding new properties in Window Rules.

REASON: prior "Do Not Affect" as default and occasionally I forget to
change the setting to something else when adding new properties.
Unfortunately, this means I forget to do it and so it isn't saved when
I close the window. I will then go back in to change it to Apply Initially
or in some cases have to add the new property again as it wasn't saved in
the set.

I think if Apply Initially were to be the default it would be an easier
and faster experience to add new properties.
2021-01-04 01:52:39 +00:00
Ismael Asensio
66ee898556 kcm/kwinrules: Allow to select multiple activities
This commit addresses the UI part

BUG: 430499
2021-01-04 00:34:34 +01:00
Cyril Rossi
0420048405 KCM KWinCompositing implement KCModuleData to highlight default at module level
Fix Rendering backend combobox that was not highlighted.
Particular case due to OpenGLIsUnsafe kcfg entry which is an indicating
flag and not a configurable setting.
2020-12-17 13:21:23 +00:00
l10n daemon script
58ae454f6b 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"
2020-12-17 06:47:43 +01:00
l10n daemon script
f7cd5c5d4a 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"
2020-12-11 06:35:01 +01:00
l10n daemon script
9799456f3b 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"
2020-12-09 06:48:24 +01:00
Vlad Zahorodnii
6b94be8652 Revert "Change the defaults for active screen"
This reverts commit bcba2e252f.

This change broke a dozen of tests, most of which were fixed. However,
it made more clear that we need to re-evaluate if enabling this option
by default is a good idea.
2020-12-03 12:04:10 +02:00
Ismael Asensio
a6c51c5445 kcm/rules: Add a Duplicate action to rules list
Useful action, especially for heavy kwin rules users

As an example, this can help users to migrate their rules to Wayland
(where some matching properties such as window class may be different)
while keeping a version of the rule compatible with X11.

BUG: 429588
FIXED-IN: 5.21
2020-11-29 00:16:51 +01:00
Vlad Zahorodnii
2a8395c7dd Trim trailing whitespace 2020-11-28 11:01:47 +00:00
Claudius Ellsel
bcba2e252f Change the defaults for active screen
As suggested in https://bugs.kde.org/show_bug.cgi?id=425798#c12.

CCBUG: 425798 - https://bugs.kde.org/show_bug.cgi?id=425798
2020-11-27 08:18:02 +00:00
Xaver Hugl
8f104815e8 Add a QRect to showWindowMenu
This is so we don't have to rely on the cursor position for the popup

BUG: 393163
2020-11-22 21:47:31 +00:00
Nate Graham
3df7985570 [kcmkwin/kwinscreenedges] Disable left touch edge by default
On X11, it creates a dead pixel on the left edge which interferes with
left panels, the left-nost widget on bottom and top panels, and scroll
events on the left-most pixel in various apps.

It works properly on Wayland, but unfortunately turning it off by
default only on X11 but not Wayland is not easily doable. So let's turn
it off by default everywhere.

BUG: 387775
FIXED-IN: 5.21
2020-11-20 14:25:15 +00:00
Aleix Pol
4f484180cd Add emit to signal calls
To signify they're emitting.
2020-11-19 22:32:08 +01:00
Nate Graham
592c82abeb [kcmkwin/kwindecoration] Clean up QML code
Various fixes:
- Remove unneeded PlasmaCore import
- Re-arrange imports to be alphabetical and grouped consistently
- Use standard import names
- Use Kirigami units explicitly
- Remove unused ids
- Remove unneeded cases of setting aproperty to its default value
- Use Layouts where appropriate instead of lots of anchors
- Reduce number of unnecessary items
- Fix inappropriate mutation of `width` and `height` inside layouts

Visual changes are extremely minor and of a bugfixy nature.

BUG: 428883
FIXED-IN: 5.21
2020-11-18 14:53:11 +00:00
Ismael Asensio
871611e9ec kcm/decorations: Fix border size updating for thumbnails
The property was only being updated on changes, but reset back
to `Normal` on KCM loading or after clicking Apply.
2020-11-16 17:23:07 +00:00
Ismael Asensio
47efd17763 kcm/decorations: Fix thumbnail border size on theme change
Correctly update the thumbnails' border sizes when the theme
changes and `Theme's Default` is selected,
as different themes may have different border defaults.

Before 9cf52340e, this was implicitly done on QML side.
Do it explicitly now on C++ side.
2020-11-16 16:29:30 +00:00
l10n daemon script
7659261982 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"
2020-11-16 06:14:08 +01:00
Ismael Asensio
9cf52340ef kcm/decorations: Simplify border selection
Use a single combobox instead of checkbox + combobox.
Adds a new property that acts as a proxy for the configuration value,
while internal configuration properties are kept unchanged.

BUG: 426157
BUG: 417430
FIXED-IN: 5.21
2020-11-13 22:00:04 +01:00
Ismael Asensio
1829dce1a9 kwinrules: Show error when detected window is unmanaged
BUG: 340477
2020-11-13 20:29:01 +01:00
Ismael Asensio
bf7e7b2130 kwinrules: Improvements on Detect Properties button
Slight UX and code improvents:

- Disable the detection button when property sheet is open.

- Add a minimum limit (smallDuration) to the delay before detecting
a window. Otherwise we freeze the window before even showing the
button release feedback, which can feel unexpected

- Prefer Q_INVOKABLE over public slot to expose method to QML
2020-11-13 20:18:04 +01:00
Konrad Materka
d2f3372749 Fix Connections warnings
Qt 5.15 introduced new syntax for defining Connections. Fix warnings like this one:
QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
2020-11-11 19:22:40 +00:00
Marco Martin
f64bea0f68 move decorations kcm to appearance
the application style category doesn't exist anymore
2020-11-10 14:03:36 +00:00
Nicolas Fella
37ba0404c8 [kcms/effectsmodel] Add config module role to effectsmodel and use it to open config
For builtin effects the information comes from the EffectData struct.
For plugin effects the X-KDE-ConfigModule key is read from the plugin metadata.
For plugins that do not yet make use of it we fall back to the old way.
For scripted effects this is empty since the config is loaded in a different way.
2020-11-08 13:36:32 +00:00
Nicolas Fella
648f495830 Add missing includes
It worked until now because they were included transitively
2020-11-08 13:36:32 +00:00
l10n daemon script
2be28ac65a 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"
2020-11-08 06:22:50 +01:00
Cyril Rossi
c61ba64a9c KCM KWin ScreenEdge and TouchScreenEdge use KCModuleData 2020-11-03 13:36:46 +01:00
Ismael Asensio
cfeca03e48 kwinrules: Limit hightlight scrolling duration
By default, the rules list moves to the hightlighted item
(the one being edited) with a constant velocity. This can
be too slow when the list contains hundreds of items.

By setting `highlightMoveDuration` we set a maximum limit
for this animation.

BUG: 428139
2020-11-02 15:00:24 +00:00
Ismael Asensio
d9528a5d1d kwinrules: Change singal name to better match its meaning 2020-10-30 20:16:37 +01:00
Ismael Asensio
335eca223a kwinrules: Do not force suggested property values
This is unnecesary and also causes a bug, overwriting
previously set properties with the new detected values
when calling for the menu `Edit window properties`.
2020-10-30 20:16:37 +01:00
Ismael Asensio
73f335adc2 kwinrules: Fix binding loop on coordinate editor
Only set the model value when the user explicitly interacts
with the control.

This fixes a bug where some detected properties (position
and size) were not fully applied due to the the binding loop.
2020-10-27 21:50:00 +01:00
Ismael Asensio
3d80665c0a [kwinrules] Allow negative numbers in position
This was limited by the range of the edition spinbox, not by the
rules mechanism which already allowed it.

BUG: 428083
2020-10-26 21:15:38 +01:00
Ismael Asensio
7cf74d7df7 Revert "[kwinrules] Show defaults indicator in System Settings"
That commit broke CI's build, while it's building fine locally.

Let's revert it until having a better understanding of the cause.
Also revert the attempt to fix it, which didn't succeed.

This reverts commit 9cbac6fe3a.
This reverts commit 3e15f64055.
2020-10-25 21:26:40 +01:00
Ismael Asensio
3e15f64055 Fix CI error caused by 9cbac6fe
Include header "rulebookdata.h" instead of class forwarding.
The header is automatically generated by kcmutils_generate_module_data
and includes a namespace
2020-10-25 20:32:41 +01:00
Ismael Asensio
9cbac6fe3a [kwinrules] Show defaults indicator in System Settings
The default is having no rules, so the indicator will show
whenever there is one or more rules in the list.
2020-10-25 18:57:44 +01:00
Laurent Montel
2ac8611523 If include is define in .h remove it if it's defined in .cpp too (scripted) 2020-10-23 21:37:16 +02:00
Luigi Toscano
773e0355b3 Generic wording for apps which can remember their settings
Only a subset of KDE applications (part of KXMLGUI ones) support
this setting, and on the other hand non KDE applications
may support it as well.
As there is no way to identify the subset of affected applications
not even with technical terms, make the description a bit more
generic, leaving it open to future improvements to the set of
supported applications.
2020-10-21 19:17:23 +00:00
Alexander Lohnau
d1a0c1491a Do not explicitely define Exec line for KCM 2020-10-19 15:53:26 +00:00
Cyril Rossi
d11daecce5 KCM KWinTabbox use KCModuleData
Allow to display a dot in the category list when settings has changed
from default.

CCBUG: 426775
2020-10-14 12:10:36 +00:00
l10n daemon script
5cb6f51ef6 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"
2020-10-11 06:01:48 +02:00
l10n daemon script
237d52be01 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"
2020-10-09 06:39:13 +02:00
Ismael Asensio
23788ad9b9 [kcm/kwinrules] Add properties to a rule one-by-one
Change the labels to singular `Property` and close the property sheet
after clicking on one item.

The behaviour of the sheet is now more similar to a menu, and not so
much as a dialog which needs to be dismissed to go on.

The idea is to simplify the rule editor workflow and make it more evident
to the users. By making the `Add property` close after each selection,
the user can see immediately that the property has been added to the
rule list so they can edit it.

Also use ListView transitions to add visual hints when adding
or removing properties, and try to position the new added item
into the visible view.
2020-10-07 23:08:23 +02:00
Benjamin Port
7546af6b4c KCM KWin Decoration: Add module data
depends on https://invent.kde.org/frameworks/kcmutils/-/merge_requests/19
2020-10-07 12:29:02 +02:00
Benjamin Port
5290583f8a KCM KWin Decoration: Remove isDefault
Custom code for isDefault is not needed. Indeed, testing dropdown value is not needed to know if we have a default value or not. Testing theme and border size auto is enough, and it's done automatically by KConfigXT
2020-10-07 10:14:07 +00:00
Ismael Asensio
715f0dbbcc [kcm/kwinrules] Port to new Connections syntax
While at it remove `FIXME`comment that no longer applies
2020-10-02 23:19:59 +00:00
Nicolas Fella
3694580e2b [kcms/effectmodel] Use KPluginMetaData to load scripted config
Instead of going through the semi-deprecated KPluginTrader and KPluginInfo we can use KPluginLoader directly.
2020-10-01 14:28:46 +00:00