Commit graph

1140 commits

Author SHA1 Message Date
Devin Lin
d91ae2e74f folio: Fix folder view delegates using page view delegate dimensions
Fixes: https://invent.kde.org/plasma/plasma-mobile/-/issues/478
2026-01-15 21:25:22 -05:00
Devin Lin
81232b3ed7 folio: Fix delegate drop placement not accounting for view padding
This is exacerbated now that we have device-specific view margins (to
deal with notches and the like), which caused the drag and drop
positions to be wildly inaccurate.
2026-01-13 21:57:13 -05:00
Devin Lin
22b095e340 gestures: Set kwin touch area to be gesture guide area height
Use a heuristic (the height of the gesture guide panel) to set the
gesture trigger area.
2025-12-25 22:27:44 -05:00
Devin Lin
28f7224a5b gestures: Add optional gesture guide panel
This adds a gesture handle mode to the navigation panel, which can be
enabled during gesture-only mode. This reserves space for the system
gesture to be able to be used, allowing us to extend the height in KWin
of the gesture recognition area (which is currently far too short for devices such as Pixel 3a).

This also allows for navigation with a mouse; clicking on the handle
triggers the task switcher, holding it triggers the "home" action.
2025-12-14 18:36:42 -05:00
Devin Lin
4c76f55b5c folio: Refactor and implement support for proper drag & drop
This refactors the homescreen state object to isolate drag & drop from
swipe states, allowing for using proper system-level drag & drop for delegate
movement. This then ports the new applet list to use it.
2025-12-13 21:24:05 -05:00
Devin Lin
e5cb775830 folio: Fix some state transitions
Fixes some potential state problems when transitioning to the app
drawer.
2025-12-05 11:51:41 -05:00
Devin Lin
e480114d53 panels: Use standard foreground colors when startup feedback is open
The startup feedback uses theme adjusted colors, we can use standard
foreground colors for the panels for better contrast rather than relying
on the shadow.
2025-12-05 09:11:17 -05:00
Balló György
3b2033857e homescreens/folio: Use locale-aware sorting for application list
This fixes the problem that application names starting with non-English
characters are placed at the end of the list.
2025-11-28 23:08:39 -05:00
Devin Lin
44e5ed6bbf folio: Fix typo with keyboard navigation logic 2025-11-24 23:24:17 -05:00
Bohdan Onofriichuk
6a327acde6 containments/homescreens/halcyon: port from the clock dataengine 2025-11-15 12:14:44 +02:00
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
Devin Lin
3d8250c010 folio & halcyon: Use standardized containment config for settings
This switching Folio and Halcyon to define their settings as a
containment config so that it fits in with the other containment
options.

This removes the convoluted maze of nested settings windows due to
wrapping the containment settings with a custom settings window around
it.
2025-10-05 15:30:15 -04:00
Devin Lin
dc1fa9b187 homescreens/folio: Add keyboard navigation on pages
Implements the rest of https://invent.kde.org/plasma/plasma-mobile/-/issues/219
2025-09-15 15:47:38 -04:00
Devin Lin
074007ef48 homescreens/folio: Fix folder animating from wrong y
There was a typo with the padding to use in the calculation for the y
position of the folder, it should use the top padding not the right
padding.
2025-09-14 23:20:06 -04:00
Devin Lin
929cde56db animation: Make fast animations less jolty
Use less steep animation curves to avoid "jolty" behaviour.
2025-09-14 08:07:52 -04:00
Devin Lin
a95598d5e4 panels: Fix panels having partial opacity and convoluted vkbd colors
A custom 0.95 opacity was added to the panels in
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/642 for
overlaying applications. This
required some complicated logic and layering to mix with other modes of
operation. Since this broke at some point, simplify the logic completely
so that it's just a flat colour. This also fixes the navigation panel
not having a colour when the keyboard is shown over the homescreen.
2025-09-13 22:18:32 -04:00
Devin Lin
674c5034ae animations: Use Kirigami units and speed up several of them
This converts many of the animation durations to Kirigami units so that
they can be controlled system wide. It also speeds up several of the
animation durations (ex. in folio) from 800ms to 400ms to improve the
feel and responsiveness of the shell.
2025-09-12 05:41:20 -04:00
Florian RICHER
9cd44c8db8
Fix Settings Buttons alignements and width
When we use languages with long text translation, the width is > width
screen and the alignment is bad with multiple line.
2025-09-11 14:18:30 +00:00
Florian RICHER
6f862e24c3 Fix Applet Label overflow
For languages with big translation, the label is above of New stuff
button.
2025-09-11 04:51:59 -04:00
l10n daemon script
625deeb11d 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"
2025-09-09 02:09:50 +00:00
Kunda Ki
7f3dcab42b Fix various typos
Fixes typos in various source comments.  
Found via `codespell -S "*.po,*.svg,*.pgm,*.xml,./po,*.desktop,*.json,*.actions" -L aline,aparent,childs,distroname,indexin,indx,logicaly,lokal,nd,splitted,te`
2025-09-05 12:21:15 +00:00
Nicolas Fella
3f02922206 Remove duplicate and unneeded ID 2025-08-22 13:42:42 +02:00
Devin Lin
c76e19037c Ensure i18n is used with double quotes and add CI check
Apparently i18n doesn't support string literals with single quotes as
parameters. Fix occurrences of this and add a CI check to ensure this
won't happen in the future.
2025-08-11 18:19:41 -04:00
Devin Lin
1e2ba92a5a panel: Fix startup feedback fill showing on lockscreen
Ensure that the startup feedback background fill does not show up on the
lockscreen.
2025-07-30 13:43:43 -04:00
Devin Lin
f7f657131b folio: Port to plasma_add_applet
Use plasma_add_applet to deploy as a module: https://invent.kde.org/plasma/libplasma/-/merge_requests/1116
2025-07-16 23:21:46 -04:00
Devin Lin
32584ebd54 halcyon: Move settings to config group
Similar to
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/784 but for
halcyon (see rationale there).
2025-07-16 16:09:50 -04:00
Devin Lin
7dc2d980aa folio: Move settings to config group, and consolidate
Currently Folio's settings are being written to the main KConfigGroup of the
containment, when can interfere with other generic containment settings.
ShellCorona in plasma-workspace also expects the settings to be in
sub-config group when it preserves them when changing containments.

This commit moves all of the settings to its own config group, and also
consolidates config read/write for favourites and pages into
FolioSettings.
2025-07-16 15:44:59 -04:00
Devin Lin
5139984e94 halcyon: Restore translation flag
It was accidentally removed with the plasma_add_applet port
2025-07-16 13:05:56 -04:00
Florian RICHER
78312b6c44 folio: ApplicationListModel initialize m_homeScreen 2025-07-16 11:32:32 -04:00
Devin Lin
8a0b3d4f56 homescreens/halcyon: Port to plasma_add_applet 2025-07-15 18:14:55 -04:00
Devin Lin
ecefc446a6 homescreens/folio: Do not initialize shared_ptr with a QObject parent
This MR ensures that delegates created with make_shared do not also get
initialized with a QObject parent. Some of the classes used the same
constructor parameter for HomeScreen and used it as a parent simultaneously. This was refactored
so that they are separated.
2025-07-15 18:10:03 -04:00
Devin Lin
b41a80466a taskpanel: Use 'visible' to check keyboard state, not 'active'
The virtual keyboard can be active but not visible. We want to use the
visibile property when determining whether there is a keyboard visually
showing.
2025-07-11 15:29:57 -04:00
Devin Lin
d0b1df97a6 homescreens/halcyon: Unify search widget with folio
This commit drops halcyon's search widget in favour of using the same
widget as folio to share code. This also brings over its keyboard
navigation features.
2025-07-10 17:04:42 -04:00
Devin Lin
0bcab0ae3a homescreens/folio: Add keyboard navigation to app drawer and fix on
search

This commit is a subset of
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/694 to add
keyboard navigation to the app drawer.

Pressing the arrow keys while in the app drawer will allow you to
navigate between the apps and the search bar, and going up will exit the
app drawer. Escape/Back is also supported for unfocusing the search bar
and exiting the view.

This also fixes an issue in the keyboard navigation on the search screen
where it wouldn't close when there are no search results.
2025-07-10 17:04:08 -04:00
Florian RICHER
11792ae565 Add NewStuff Button 2025-07-07 22:36:55 -04:00
Florian RICHER
78a7e641e2 Add model.isSupported checking 2025-07-05 10:30:30 -04:00
Florian RICHER
ceeb3b3770 folio: Load SettingsComponent as Async
Avoid to load SettingsComponent in same time as Homescreen because it take ~200ms to load.
2025-07-03 15:41:43 -04:00
Devin Lin
3b6951bf1e panel: Overlay over lockscreen
Overlay the shell's status panel and quicksettings panel over the lockscreen, instead of rendering a second copy in the lockscreen theme. This will allow us to improve the lockscreen loading speed.

Key changes:
- Overlay quicksettings window and the status bar over the lockscreen when it is shown
- Refactor the top panel's showing logic to be cleaner (as it supports various overlay modes over fullscreen apps already)
- Implement lockscreen support to the status bar and quicksettings panel in the to panel
- Forward quicksettings panel requests for "unlock" over DBus to the lockscreen
- Add "raiselockscreen" QML plugin to easily request a window to be raised over the lockscreen

Notes:
- Now that we are sharing the quicksettings panel from the shell, notifications that are already there will be shown on the lockscreen (compared to right now, where only new notifications would be shown)

Depends on: 
- https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2339
- https://invent.kde.org/plasma/kscreenlocker/-/merge_requests/283
- https://invent.kde.org/plasma/kwin/-/merge_requests/7839

Implements: https://invent.kde.org/plasma/plasma-mobile/-/issues/199

![Screencast_20250612_013325](/uploads/49e9981cb863056b4c0c46a144e5ee7d/Screencast_20250612_013325.webm)
2025-07-02 10:27:33 -04:00
Devin Lin
6af5d97595 folio: Ensure y anim signals don't get emitted if value didn't change
This ensures extraneous signals from being emitted when values don't
change in y animations. This fixes the vkbd in the search widget getting
in a weird stuck state due to multiple focuses on the search widget.
2025-06-28 11:04:11 -04:00
Devin Lin
47a886988f homescreen: Use generic app name when X-KDE-PlasmaMobile-UseGenericName is set in a .desktop file
This commit adds support for using the generic app name when the "X-KDE-PlasmaMobile-UseGenericName" .desktop key is set.

This allows us to have applications that we consider "system apps" to have a generic name, without needing to change the "Name" tag itself when used in other desktop environments (ex. Plasma Desktop).
2025-06-28 00:19:50 -04:00
Micah Stanley
d4eaf693c6 Folio/Halcyon: Expand Background Blur Effect using a MaskLayer
This merge request expands upon the folio and halcyon background blur effects, making the folio background blur include the backgrounds of folder icons, the favorites bar, and wallpaper selector, and for halcyon, it now includes the folder icons, app library, search, and wallpaper selector. To accomplish this, a mask layer plugin was created to easily attach to these elements. This way, we can use a `OpacityMask` to cut out from the existing blur layer, thus hopefully keeping the performance cost low. And with my limited testing, it does at least seems to run about the same on my oneplus 6t, though it is not really a low end device, so I can not fairly judge the impact for something slower (eg. PinePhone). To be on the safe side, a third option was also added to the folio settings, allowing for the ability to toggle back to the old functionality if needed.

![Screenshot_20250613_135521](/uploads/d5aa81d6589b61fbba675e4a6e621b55/Screenshot_20250613_135521.png)
![Screenshot_20250613_135536](/uploads/bd726459a131f736e2711ced3fe90d4f/Screenshot_20250613_135536.png)
![Screenshot_20250613_135505](/uploads/c603627b4e65d4b956a1e0b6463d28f3/Screenshot_20250613_135505.png)
![Screenshot_20250627_093729](/uploads/e5f1ad672361c2b9bae23e57905336eb/Screenshot_20250627_093729.png)
2025-06-27 14:27:30 -04:00
Devin Lin
d4f1c78d61 doubletaptolock: Simplify, and use "lock" instead of "sleep"
This MR does several things as a followup to
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/748:
- Use the word "lock" instead of "sleep" since we are locking the
  device, not putting it to sleep
- Simplify usage by using existing MouseAreas instead of including our
  own for this feature (I encountered several focus captures in folio that prevented the
SwipeArea from getting events)
2025-06-27 00:14:26 -04:00
Devin Lin
5e3fa11be7 panel & taskpanel: Port to use plasma_add_applet
Use plasma_add_applet to deploy the applets as a module: https://invent.kde.org/plasma/libplasma/-/merge_requests/1116

We eventually need to do this for Halcyon and Folio homescreens too, but
they also have a bunch of C++ classes to be ported to declarative type
registration.
2025-06-26 20:46:48 -04:00
Devin Lin
1d3ceb5801 homescreens/halcyon: Add settings page
Add a settings page to halcyon, which allows for toggling whether the
wallpaper is blurred and double tapping on the homescreen to lock the
device. This also does a bit of refactoring for folio and halcyon to
share the same wallpaper blurring item.
2025-06-26 18:57:12 -04:00
Devin Lin
ca9696b84d notifications: Fix do-not-disturb
The implementation of do-not-disturb broke after the port to our own
notification popups. Since the notification widget is quite deep in the
ActionDrawer, just implement the DBus listening directly in
NotificationsWidget. Also add the missing pulseAudio object in
NotificationPopupProvider to implement notification inhibition.
2025-06-25 20:08:38 -04:00
Devin Lin
46578fde73 singletons: Initialize singletons in shell desktop, not panel
We have some singletons (ex. for notification popups, volume, dbus) that
need to be initialized somewhere in plasmashell. Currently they are done
from the panel containment, which is a bit of a strange location. There isn't really
any offical way it seems to do this, so move it to the shell package
which feels more central.
2025-06-25 19:33:00 -04:00
Florian RICHER
2b51e0c30c homescreens/folio: Add options to turn off and lock the phone after a double tap on screen
Linked to issue: https://invent.kde.org/teams/plasma-mobile/issues/-/issues/318
2025-06-25 16:39:36 -04:00
Florian RICHER (aka MrDev023)
43672a5ec5 homescreens/folio: Block propagation if edit mode is active to avoid widget to trigger event
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/387 and https://invent.kde.org/plasma/plasma-mobile/-/issues/353

I can't only block the touch events because it blocks also MouseEvent.
> I think because it's used to convert it by QT into Mouse Event with source == MouseEventSynthesizedByQt or MouseEventSynthesizedBySystem.

So the solution, it's to check if mouse event is a synthetized event and if edit mode has been triggered to block or not the event propagation

Test:

- On VM with kwin_wayland command
- On mobile
2025-06-18 05:53:15 -04:00
Micah Stanley
8e3e05ddea Folio: Add Haptic Feedback
This merge request adds haptic feedback to the folio home screen when:
- Pressing and holding on an app icon
- Pressing and holding on an widget
- Pressing and holding for opening the settings component
2025-05-01 05:04:38 -04:00
l10n daemon script
efb518c817 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"
2025-04-27 01:31:31 +00:00