Commit graph

24 commits

Author SHA1 Message Date
Devin Lin
839d5e2bff panels: Add support for defining device specific panel tweaks
This adds support for specifying options needed to deal with phone
display panel pecularities (ex. screen curves, notches, punch holes)

This is implemented as settings in ~/.config/plasmamobilerc, which can
set panel heights, paddings, and center spacings to duck display
cutouts. The pixel values are scaling independent, and so are not
affected when the display scaling is changed.

This is then exposed over DBus, so that components from outside of
plasmashell (ex. KWin) can access it easily without needing to connect to
kscreen themselves. Each screen is exposed as a single object.

Currently support is only added in the status bar and the navigation
panel.

Currently all screens have the settings applied. In the future, we may
want to limit this just to the internal screen (?)

---

This also adds a "devices" folder (in `devices/configs`) where per-device configs can be set.

This is installed to `/usr/share/plasma-mobile-device-configs`.
In `plasmamobilerc` (installed to `/etc/xdg/plasmamobilerc`, or
`~/.config/plasmamobilerc`), envmanager will read:

```toml
[Device]
device=oneplus-enchilada
```

for the device config to use and write its settings to
`~/.config/plasma-mobile/plasmamobilerc`.
2025-11-04 23:08:18 -05:00
Luis Büchi
90abaad9c8 envmanager: stop loading mobile config when desktop one should be 2025-10-28 03:21:13 +01:00
Devin Lin
09715da168 envmanager: Use config overlay for applications-blacklistrc
Use a config overlay for applications-blacklistrc, so that new options
that we add are updated in installs. This brings it inline with all of
the other config files we manage, and so I also remove unused
functionality that we used in the past to "save" and restore config
files.
2025-09-16 08:23:32 -04:00
Devin Lin
8fa5d1e053 envmanager: Allow user to change the vkbd
Currently the vkbd setting (to maliit) is immutable, preventing users
from selecting different input methods. Loosen the envmanager setting so
that it's just a default value, which can be overriden by users.
2025-07-25 16:21:38 -04:00
Devin Lin
92a1cfc740 envmanager: Write options as immutable, and add kdeglobals
This commit writes options as immutable to the config file ([$i]
suffix), so that user defined options from desktop do not override our
specified mobile settings.

This commit also moves kdeglobals settings to be written to
~/.config/plasma-mobile/kdeglobals rather than directly to
~/.config/kdeglobals, continuing the work from
!723

Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/467
2025-06-13 07:16:18 -04:00
Devin Lin
0e6221ce52 envmanager: Add overlay configs through XDG_CONFIG_DIRS
We currently directly write our settings to ~/.config/kwinrc and ~/.config/ksmserver.

Instead, create a separate config file with our settings (in ~/.config/plasma-mobile), and in startplasmamobile, add that path to XDG_CONFIG_DIRS. These options will be applied in the mobile session, unless the user explicitly sets the config option.
2025-05-22 23:12:43 -04:00
Devin Lin
9c2e2c7db3 Revert "envmanager: Handle SSD toggling with kwin rules"
This reverts commit c45f9ed446.

The kwin rules setting causes all desktop windows to have window decorations. Revert this for now until we figure out a solution.
2025-04-24 11:28:49 +02:00
Devin Lin
c45f9ed446 envmanager: Handle SSD toggling with kwin rules
Replace the convergentwindows KWin script SSD toggling with KWin rules to ensure
windows are maximized and have no window border (and toggle off for
docked mode). KWin rules work immediately at window creation, which is
more efficient than listening to window creation events and manually
changing properties on them.

Currently, window rules setting maximization don't seem to address all cases where a window gets unmaximized, so for the time being we will still need the logic in convergentwindows to handle any sidecases.
2025-03-21 16:00:12 +00:00
Luis Büchi
d7ae1917af envmanager: disable session restore for mobile
session restore could lead to soft lock since dialer can open
on top of the login screen.
2024-12-20 22:32:29 +01:00
Devin Lin
b3c7f418d7 envmanager: Ensure KWin is reloaded
We need to also call a workspace reconfigure to ensure settings are
properly applied live.
2024-11-15 03:45:48 +00:00
Devin Lin
051e8b7903 envmanager: Fix KWin effect and script reloading
Previously, we had a silent failure of the dbus call to "reloadConfig"
which turned out to be a signal and not a method that we can call. To
reload effects, we need to manually call dbus to load and unload each
individual one. A similar situation exists for scripts, except that we
only unload scripts through individual calls, and call `start` to load
all of the enabled scripts at once.
2024-10-31 20:33:13 +00:00
Nicolas Fella
d69839f202 Remove unused includes 2024-07-14 01:19:42 +02:00
Devin Lin
2fae8b3381 envmanager: Ensure KConfigGroup being written to is not derived from const
This otherwise causes an assertion failure if assertions are enabled.
2024-06-26 13:15:57 -04:00
Carl Schwan
d63e5e04f5
envmanager: Fix some for-loop
Avoid detaching
2024-01-22 16:33:41 +01:00
Carl Schwan
d9330ad10d Fix crash in envmanager
To delete an entry, we need to ensure the KConfigGroup and none of its
parent config group is not const otherwise we it an assert in KConfig.
2024-01-21 22:11:08 +00:00
Carl Schwan
d161292426
Use new Qt6 QStringLiteral operator
Shorter than typing QStringLiteral all the time
2024-01-17 01:07:31 +01:00
Carl Schwan
b070f6e3f7
Use a reference for the singleton
This is a bit nicer to work with than a pointer and doesn't require a
heap allocation.
2024-01-17 01:02:51 +01:00
Devin Lin
7056649bf4 envmanager: Ensure that lnf is not constantly reapplied, overwriting user settings 2023-12-08 19:09:26 -08:00
Devin Lin
630a85cbcb bin: Ensure that plasma-mobile-envmanager is run prior to shell start 2023-11-23 10:28:19 -08:00
Devin Lin
5c0fd57600 initialstart: Add first login experience
Adds an experience for users on first login, allowing some basic configuration.

This is separate from a first start wizard, which would run as a separate user with elevated permissions, and include options that an installer would have.
2023-04-01 07:09:57 +00:00
Devin Lin
372626b786 taskswitcher: Restore status bar and navigation panel 2023-03-31 22:10:02 -07:00
Devin Lin
f46986a9ed envmanager: Ensure keys are deleted 2023-03-30 08:42:28 -07:00
Devin Lin
30c951473e envmanager: Ensure that it is not a graphical application 2023-03-29 22:43:44 -07:00
Devin Lin
3e1e1e7d22 envmanager: Extract kded settings management to separate app, add window decoration customization 2023-03-29 19:41:10 -07:00
Renamed from kded/settings.cpp (Browse further)