Commit graph

101 commits

Author SHA1 Message Date
70c1810d82 Skip window activation in convergence mode
In phone mode, tapping a running app activates its existing
window. In convergence mode this prevents launching a new
instance of the same application.

Skip activateWindowByStorageId when convergence mode is
enabled so that launchApp is always reached, matching
standard desktop launcher behaviour.
2026-04-10 13:03:57 +02:00
d89a303337 Replace navigation panel with unified dock bar
In convergence mode the separate navigation panel is redundant
with window title-bar controls. Remove it by setting its
thickness to zero and visibility to false, then embed Home and
Overview buttons at the left and right ends of the favourites
bar. Running application icons with context menus are shown
between the favourites and the Overview button.

Add HomeScreen::triggerOverview() to invoke the KWin Overview
shortcut over D-Bus so the homescreen containment can open it
without access to the task-panel Plasmoid.
2026-04-09 10:15:14 +02:00
Devin Lin
a8b858dc3e Remove kirigami version in imports
This fixes potential issues stemming from pinning versions on Kirigami
qml api imports
2026-03-06 22:08:07 -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
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
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
7cecb980d7 popups: Use dark background and consistent outlines with action drawer
Have popup views use a similar coloring scheme as the action drawer,
which was introduced with
https://invent.kde.org/plasma/plasma-mobile/-/merge_requests/827
2025-10-08 23:13:46 -04:00
Devin Lin
ddc04069a3 startupfeedback: Revert to original animation 2025-10-08 22:21:48 -04:00
Devin Lin
3ce21b972e startupfeedback: Always tint background with theme color
Currently with a light theme, often colors calculated from icons are incredible bright and vivid. This can cause the user to be flashed all of a sudden with a bright color when launching an app. This commit adopt the dark background blending scheme for all usecases.
2025-10-08 21:49:10 -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
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
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
Devin Lin
bc3e80c479 mobileshell: Manually specify QML files, and private some internal files
The globbing pattern for finding QML files is problematic because it
breaks when we add/delete a file (requiring us to delete
~/kde/build/plasma-mobile). It also placed every file (both public and
internal files) in the same flat namespace, carrying the risk of name
collisions between unrelated folders.

This commit manually specifies every file in the package. It also moves internal files in the actiondrawer folder into its own namespace. Followup MRs will do this process for other folders.
2025-07-18 11:01:26 -04:00
Devin Lin
7c07dc0122 components: Remove unused ExtendedAbstractButton
This component is not used anywhere in the shell, remove it.
2025-06-25 16:47:01 -04:00
Micah Stanley
7e2019cb0e MobileShell: Unify Item Background Elements
We so far have been recreating the background elements for all the item throughout the shell. This merge request simplifies this by unifying these elements into a single component, making is easier to keep things at a consistent design while also being able to adjust things when needed in the future.

Per request, I tried to keep thing looking mostly the same as before.

The first picture is what the action drawer looks like now, the one after is with these changes.

![Screenshot_20250621_154201](/uploads/7bd5129d942c8fbc3706dd1728b3a1dd/Screenshot_20250621_154201.png)
![Screenshot_20250621_155520](/uploads/9d2e925c9483579dec765813465e4d2d/Screenshot_20250621_155520.png)
2025-06-22 20:16:16 -04:00
Micah Stanley
a9ddcf726d MarqueeLabel: Smooth Scrolling
This merge request reworks the MarqueeLabel to add smooth scrolling, giving it a more clean appearance while also improving scrolling when filled when characters of different lengths.

Before:

![margueeLabel_before__トリミング_](/uploads/b162949db828a0e243b0ef109456bfdd/margueeLabel_before__トリミング_.webm)

After:

![margueeLabel__トリミング_](/uploads/7ec2a2b72799a56412b08d04b2f6eb00/margueeLabel__トリミング_.webm)
2025-06-12 08:25:42 -04:00
Micah Stanley
e4323f4ef0 notification list: fix notification scrolling within action drawer and lockscreen
This merge request fixes an issue with notification list scrolling and also adds a few general improvements.

To accomplish this, the notification widget was moved outside of the action drawer swipe area and lock screen swipe area, separating them from the parent-child relationship. Instead, the notification widget is now layered separately on top. This change seems to fix the conflict when both areas are accepting swipes from the same direction.

Additionally, changes were made to the notification list widget for the action drawer to make it behave similarly to the folio home screen app library. Specifically, when at the top of the list, one can swipe down over the notification area to expand the action drawer. In landscape mode, the media widget, clock, and date were also added to the notification list to provide more room for viewing notifications when scrolling.

Closes https://invent.kde.org/plasma/plasma-mobile/-/issues/318
2025-03-20 02:06:33 +00:00
Micah Stanley
48dedcd546 taskpanel/panel: make navbar and statusbar accessible from within fullscreen windows
These changes make the navigation and status bar accessible from within fullscreen applications by allowing the user to tap on the top or tap or drag on the bottom of the screen.

Also, since the top panel is now over top of all fullscreen applications, this moves the action drawer swipe area back into the status bar.

![navandstatusbar](/uploads/29bce14baf957059669689345c909896/navandstatusbar.gif)
2024-11-25 17:30:47 +00:00
Devin Lin
76882f5b5d actiondrawer: Share components between portrait and landscape
This avoids having to completely load the quicksettings, status bar,
media widget, and notifications list from scratch when the view changes.
We now have a single instance of each component which is reparented to
the new view (portrait/landscape).

Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/406
2024-10-31 15:27:00 +00:00
Sebastian Kügler
2b822e8c6a [mobileshell]: apply scale factor to status bar
This change allows scaling of the statusbar (the top panel).

As we have to accommodate for a wide variety of devices with different
physical pixel sizes, we need a way to scale the top panel / status bar.
This change introduces a config value (in plasmamobilerc, such as other
shell settings) that controls this size.

For example (plasmamobilerc):

[General]
statusBarScaleFactor=1.5

(Config UI in kcm mobileshell in separate patch)

Signed-off-by: Sebastian Kügler <sebas@kde.org>
2024-10-25 17:53:25 +00:00
Devin Lin
eb9509ce68 Remove trailing whitespace 2024-07-26 23:47:44 -04:00
Devin Lin
5207c06a12 startupfeedback: Fix multi-screen behaviour
Fix the model screen filtering not working properly, and account for case when opened window is already active.
2024-07-15 20:53:42 +00:00
Devin Lin
2d2b7407a6 startupfeedback: Change to be window based and controlled by a model
This makes the startup feedback more robust, by having instances be controlled by a model which can listen to window changes. Being window based also allows for the close button and gestures to work properly with it, since it will show up in the task switcher as well.

Fixes:
* https://invent.kde.org/plasma/plasma-mobile/-/issues/357
* https://invent.kde.org/plasma/plasma-mobile/-/issues/338
* https://invent.kde.org/plasma/plasma-mobile/-/issues/335 (dark themes now tint the background color)
* https://invent.kde.org/plasma/plasma-mobile/-/issues/330
* https://invent.kde.org/plasma/plasma-mobile/-/issues/30
2024-07-13 16:30:07 +00:00
Devin Lin
e2e6590222 startupfeedback: Add support for multiple screens
Addresses https://invent.kde.org/plasma/plasma-mobile/-/issues/175
2024-06-23 16:48:32 +00:00
Marius P
17e92e72fc Proofreading 2024-06-17 00:02:08 +03:00
Devin Lin
e7877a6d7a navigationpanel: Remove feature that moves it to the right when the screen height is small
This feature continuously causes issues, and I don't really have time to keep looking at it again and again.

https://invent.kde.org/plasma/plasma-mobile/-/issues/321
2024-03-26 20:53:56 -04:00
Devin Lin
264197b7c6 components/mobileshell: Don't tie MarqueeLabel durations to kirigami duration lengths
Otherwise setting the animation speed will affect the MarqueeLabel speed, which will look very glitched if it's fast.
2024-03-16 11:53:25 -04:00
Devin Lin
a66d07f3ff taskswitcher: Fix navigation panel position when in landscape mode
It used to get confused when in landscape mode, but the navigation panel is on the bottom of the screen.
2024-03-08 21:00:23 -05:00
Devin Lin
601dde21ab Fix low inertia scrolling with shell flickables
See https://invent.kde.org/teams/plasma-mobile/issues/-/issues/273
2024-02-25 17:53:58 -05:00
Devin Lin
4b99637427 startupfeedback: Iron out animation 2023-11-22 22:31:23 -08:00
Devin Lin
76177166cf navigationpanel: Have it on the bottom if the screen height is large enough 2023-11-22 20:48:22 -08:00
Devin Lin
e0768d64c0 startupfeedback: Handle case where same icon is used for opening 2023-11-18 18:27:43 -08:00
Devin Lin
4dddf9a46c startupfeedback: Ensure that old colours don't get shown when launching app 2023-11-18 10:11:57 -08:00
Devin Lin
a7ac976263 startupfeedback: Improve animation behaviour with activated apps 2023-11-15 22:33:44 -08:00
Devin Lin
83ce339cda components/hapticsplugin: Introduce direct haptics API for hfd-service
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/270

Introduce a direct haptics API for now for shell usage, and port to it. Also remove the vibration intensity setting as that didn't do anything.
2023-11-15 08:13:25 -08:00
Yari Polla
4f45654af6 Port mobileshell plugins to ecm_add_qml_module 2023-11-02 11:08:17 +00:00
Yari Polla
5013c1704e components/baseitem: remove useless children push 2023-10-15 18:03:40 +00:00
Devin Lin
1963340d4f Switch some uses of IconItem to Kirigami.Icon, and fix some theme porting 2023-07-24 22:24:23 -04:00
Alexey Andreyev
127bbdf653 Port away from PlasmaCore and PlasmaExtras to Kirigami
See also:

https://pointieststick.com/2023/06/14/call-to-action-easy-porting-opportunity-in-plasma/
2023-07-25 01:13:52 +00:00
Devin Lin
dffa0a9581 components: Port to MultiEffect 2023-05-12 22:07:48 -04:00
Devin Lin
12b9f1df9f components: Add TextDropShadow
Introduce shadow component that uses MultiEffect from Qt 6.5
2023-05-12 19:43:24 -04:00
Devin Lin
2603f461e6 homescreens/halcyon: Fix list highlight within folder 2023-04-19 22:18:05 -07:00
Devin Lin
f2777c016f startupfeedback: Remove debug message 2023-04-06 19:37:06 -07:00
Yari Polla
2da1bb150f components/gridview: simplify component 2023-03-20 15:12:55 +01:00
Devin Lin
4bdacff13c taskswitcher: Account for shell panels in app preview
change
2023-03-19 22:17:44 -07:00
Devin Lin
f25840bfc2 mobileshellstate: Move to DBus API instead of trying to use shared QML context
This also allows us to trigger behaviour from other processes that import mobileshell
2023-03-19 18:32:52 -07:00
Devin Lin
6160280b0c mobileshell: Dynamically load in heavy dependencies for singletons 2023-03-18 22:43:59 -07:00
Devin Lin
2d1610aaa2 mobileshell: Add constants singleton to reduce dependency on mobileshellstate 2023-03-18 22:06:48 -07:00
Devin Lin
0c2f215a3f startupfeedback: Restore trigger from Plasma 2023-03-18 19:01:48 -07:00