Commit graph

151 commits

Author SHA1 Message Date
6e48055b40 Clamp restored window below the dock
KWin restores geometry before the compositor re-commits the
exclusive zone, so the window can land partly behind the dock.
A deferred check clips the bottom edge once the round-trip
completes.
2026-04-18 13:20:13 +02:00
l10n daemon script
ef88e5a7f2 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"
2026-03-15 01:41:15 +00: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
e915990621 taskswitcher: Don't set layer on task item, to avoid blurriness
Don't set a layer on the task item because it'll be put into a VBO and reduce the quality when the item is blown up in size.
2026-02-17 21:30:22 -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
Nicolas Fella
8e8f794f02 Use workspace to find output
We want the LogicalOutput from workspace(), not the BackendOutput
2025-12-02 20:14:03 +01:00
Nicolas Fella
37dcef56d9 Adjust to renamed KWin::Output class 2025-11-26 17:46:31 +01: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
Luis Büchi
64bcfb7ebc taskswitcher: fix double tap navpanel task switch being inconsistent 2025-11-03 02:02:19 +01: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
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
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
l10n daemon script
c3ee2fe339 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-08-05 01:37:48 +00:00
Luis Büchi
0fe7879afa taskswitcher: make task scrub mode more resistant against overlapping UI 2025-07-15 17:36:55 +02:00
Luis Büchi
1fa16ee491 taskswitcher: fix incorrect enum access & remove long broken logic in QML 2025-07-11 23:58:37 +02:00
Luis Büchi
04bcbd9f8d taskswitcher: fully qualify property lookups 2025-07-10 19:01:04 +02:00
Luis Büchi
0d2e15cea4 taskswitcher: add QML type registration to taskmodel 2025-07-06 00:27:02 +02:00
Nicolas Fella
25a3706d7f [mobiletaskswitcher] Add missing dependency to QML module
The module exposes TaskFilterModel, which extends QSortFilterProxyModel

QSortFilterProxyModel is registered to QML as part of the QtCore module, so we need to add that to DEPENDENCIES for tools like qmllint to work properly
2025-07-04 14:59:13 +02:00
Luis Büchi
5d33295443 add type annotations to taskswitcher QML and do more explicit typing 2025-06-26 16:30:41 +02:00
Devin Lin
62f9237aec taskswitcher: Fix task close icon colour in light mode
Breeze changed the icon for the "close" button to be a plain X, instead
of having a red background. Ensure that we use the complementary colour
scheme.
2025-06-11 00:22:38 -04:00
Roy Kollen Svendsen
2b1f66ecdc taskswitcher: Fix build when KWin is built without activities support
Fixes:
../kwin/mobiletaskswitcher/plugin/taskfiltermodel.cpp:81:40: error: ‘class KWin::Workspace’ has no member named ‘activities’; did you mean ‘ActivityRaise’?
   81 |     auto activity = Workspace::self()->activities()->current();
      |                                        ^~~~~~~~~~
      |                                        ActivityRaise

This occurs when KWin is built with -DKWIN_BUILD_ACTIVITIES=OFF:

https://invent.kde.org/plasma/kwin/-/blob/master/src/workspace.h#L424
2025-06-10 09:12:25 -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
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
Micah Stanley
842354bd70 Shell: Add Setting to Auto Hide Panels so Applications Can Fill the Entire Device Screen Space
This merge request adds a new setting to auto hide the status and navigation panels so applications will be able to fill out the entire device screen area. Also, this adds a new quick settings toggle to quickly change this property.
2025-04-21 15:56:33 +00: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
Micah Stanley
013d034516 Gesture Navigation: Disable Gestures When Action Drawer, Notification Popup Drawer, or VolumeOSD are Visible
Disables gesture navigation when Action Drawer, Notification Popup Drawer, or VolumeOSD are visible as activating the task switcher in these situation can feel a bit weird.

Note:
~~Draft for in till I can get side loading working again so I can test it on device.~~

Still can't seem to get side loading working quite yet. Though, I did run the test I could from my laptop and it does seems to be working fine, so I will be removing this from draft.
2025-03-19 01:21:46 +00:00
l10n daemon script
b4af02e227 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-03-02 01:28:49 +00:00
Devin Lin
bbac7e98b4 taskswitcher: Switch to declarative effect
This switches the kwin effect to be a declarative effect. However, for
now I have retained much of the logic that exists in cpp as a QML
plugin.

Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/448

Also implements https://invent.kde.org/plasma/plasma-mobile/-/issues/408 now that we can access the QML api
2025-03-01 21:26:47 +00:00
Luis Büchi
16192c5f71 add double tap to switch between 2 most recent apps in swicher
also simplified openApp signature and fixed a typo in code
FEATURE: 486555
2024-12-20 23:15:39 +01:00
l10n daemon script
b993b510a4 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"
2024-12-15 01:40:00 +00:00
Devin Lin
57d29a7727 kwin/convergentwindows: Ignore case with undefined desktop
Otherwise the script keeps complaining in logs, if the window doesn't
have a desktop we should ignore it.
2024-11-15 17:58:33 +00:00
Micah Stanley
36f0d175fd kwin/convergentwindows: keep current window maximized bugfix
This fix maximizes the current window if it ever leaves a fullscreen or maximized state. This is to fix a bug where if a window exits fullscreen mode, it will not return back to a maximized state.
2024-11-14 01:47:32 +00:00
Luis Büchi
3353d45249 reintroduce maximizing task on activating it in switcher
only maximize when not in docked mode to not break windowed workflow
when docked.
BUG: 492077
2024-10-21 11:53:36 +02:00
Devin Lin
76826f37f5 taskswitcher: Fix close all button being dark and not interactable
Fix fallout from #574
2024-10-14 19:24:03 -07:00
Micah Stanley
fdc8958ce5 taskswitcher: Gesture Navigation: Quality of Life Improvements
Most Notable Changes Here Include:
1. If the user moves and lifts their finger up halfway up the screen, the navigation gesture will now go home.
2. The task drawer will now move in and out of view depending on the gesture navigation state.
3. The app window will now continue to shrink with resistance as the window moves further up.
4. When in the task drawer, if the user drags up from the bottom, the current task will now follow the users finger like the task does when dragging up from within an app.
5. The task drawer will now slide in from the side when it is not within an app.

I would upload a video here to showcase these changes. However, I was unable to get OBS to record my screen while in my plasma mobile session.
2024-10-15 00:55:29 +00:00
Mr. Athozus
89fe9125ee Use edit-none icon in task switcher if no applications are running
Replace `window` icon by `edit-none` icon. The `window` icon is least
representative of what it means that the `edit-none` icon (gives more
the feeling of something being empty).
2024-10-05 22:50:09 +00:00
Marco Mattiolo
4371c95194 Flag unused parameters with Q_UNUSED() 2024-09-28 06:31:00 +00:00
l10n daemon script
0dfa399b7b 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"
2024-09-25 01:24:12 +00:00
l10n daemon script
62a2633f72 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"
2024-08-28 01:30:06 +00:00
Luis Büchi
a41b386651 fix task scrub icon list sometimes being off center
also fix animation duration and easing type not being in sync with task preview list.
fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/392
2024-08-01 16:30:23 +00:00
Luis Büchi
d9d159eea2 fix bug in task switcher gesture opening animation from homescreen
fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/399
2024-07-31 18:33:27 +00:00
Devin Lin
eb9509ce68 Remove trailing whitespace 2024-07-26 23:47:44 -04:00
Luis Büchi
617ba59de7 add haptic feedback to task switcher gestures
haptics are triggered when conditions are met to open task switcher or task scrub mode is engaged.
fixes related bug in task switcher gesture logic when invoked from homescreen

fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/366
2024-07-24 10:57:57 +00:00
Devin Lin
897b00c242 taskswitcher: Fix it not being registered as a KWin effect
I'm not really sure how the metadata was installed previously, but it appears the behaviour for that has changed and we now need to install the metadata file ourselves.
2024-07-20 14:47:12 -04:00
Luis Büchi
9e8f0a0c74 make taskswitcher preview reluctant to track far finger moves
the further up the finger in the gesture activation goes, the less direct the tracking is.
fixes the last part of https://invent.kde.org/plasma/plasma-mobile/-/issues/368
2024-07-17 09:42:15 +00:00
Luis Büchi
452f0df68b taskswitcher: improve some gesture animations
improves task quick switch and flick to homescreen gesture animations. fixes most of https://invent.kde.org/plasma/plasma-mobile/-/issues/368
2024-07-15 14:42:45 +00:00
Luis Büchi
7852b7ad2b make quick switch gesture properly open switcher on end of list
doing a quick task switch gesture towards the end of the list should force open the task switcher (there is nothing to switch to)
this was half-done on the left side of the switcher (this behavior is not visible with immediate task reordering, but could be hit if we have different ordering criteria or delayed reordering)
and due to superfluous Math.max completely not working on the right side always opening the right-most task instead of opening the switcher
2024-07-08 12:33:16 +00:00
Devin Lin
a58144fb18 taskswitcher: Only enable KWin effect in mobile, have it be managed by envmanager 2024-07-03 11:54:19 -04:00
Devin Lin
3d4b31c26b taskswitcher: Sort tasks by last activation
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/343

This restores the sorting of tasks by their last activation. The task model now becomes a singleton and retains state even while the effect is not active, while the filter/sort proxy model is still initialized at task switcher load.
2024-07-02 21:42:13 +00:00