Commit graph

63 commits

Author SHA1 Message Date
b80c878487 Make dock pager follow keyboard focus order
Keep keyboard navigation aligned with the compact desktop pager group. Right from the Desktop button now enters the pager, pager buttons expose accessible activation, and focus continues into dock content after the last desktop.
2026-05-29 11:11:59 +02:00
2aae067337 Keep desktop pager buttons together in dock
Show all virtual desktop buttons as one compact group next to the Desktop button instead of splitting them across both dock edges. Update the convergence dock invariant so this layout does not regress.
2026-05-29 11:05:42 +02:00
f09a1db84a Animate dynamic tiling window moves
Add a KWin JavaScript effect for compositor-side size and translation transitions, and enable it in convergence mode. Keep the tile preview effect as an outline driver so nested preview does not activate a SceneEffect surface.
2026-05-27 21:33:34 +02:00
495f76900f Restore dock hover tracking
Replace the fullscreen convergence pointer tracker with edge-local hover areas so dock buttons keep receiving hover, tooltip, and cursor events.
2026-05-27 21:32:18 +02:00
97abf33597 Add dynamic tiling layout menu
Expose layout requests and state through shell settings so Folio
can offer alternatives for the current tiled workspace. Keep KWin
as the owner of layout changes, snapshot request serials so requests
are not dropped, and hide the edge menu when fewer than two windows
are tiled.
2026-05-27 15:48:09 +02:00
1702027f7e Add convergence launcher app lists
Record app launches from window creation so recent and most-used
lists survive after windows close.

Use those models in the convergence launcher and keep the hover
surface in the unified chrome.
2026-05-26 17:27:44 +02:00
d0262d0dd8 Stop double-reserving top chrome
Keep the convergence panel hit area non-reserving so the
explicit topbar-space surface remains the only top strut.
2026-05-26 17:27:44 +02:00
1a70b24c06 Convergence: stabilize workspace scroll gestures
Improve touchpad scroll handling for convergence workflows while avoiding gesture conflicts.

- make SwipeArea handle angleDelta-based touchpad wheel streams and phase-less sequences safely
- wire topbar ActionDrawerOpenSurface to virtual desktop info and horizontal workspace switching logic
- add dock pager wheel switching in FavouritesBar for the vertical wheel axis environments deliver
- prevent wallpaper/home surface touchpad scroll from opening app drawer in convergence
- extend convergence invariant checks for the new gesture paths
2026-05-25 21:59:19 +02:00
30e3006e3f Allow theme identity test without local preview script
preview.sh is an ignored developer helper and is not present in CI
checkouts. Keep validating it when available locally, but in CI check
that it remains ignored instead of failing on a missing file.
2026-05-25 09:30:28 +02:00
3004c34f61 Restore topbar drawer input plumbing
Keep Folio responsible for the visible convergence chrome, but let
the panel containment keep its transparent ActionDrawerOpenSurface
for the topbar hit target. This restores the old click and drag
behavior while keeping the legacy statusbar visual hidden in
convergence.

Add a passive hover-only MouseArea to show the pointing-hand cursor
without stealing input from the drawer swipe surface.
2026-05-25 09:00:34 +02:00
d3ab18d200 Render convergence chrome from Folio
Move the visible convergence top bar, workspace frame, and dock
into one Folio-owned layer-shell surface so startup maps them as
a single piece of chrome. Keep the legacy panel/taskpanel surfaces
for reservations and plumbing, and update the convergence invariant
for the new ownership.
2026-05-25 08:26:58 +02:00
07f3a46d4b Float convergence drawer content
Size the left drawer surface against the quick settings pane,\nkeep click-away gutters, and align notifications, media, and\ncalendar within the same framed area.
2026-05-24 16:31:28 +02:00
3ab5701819 Tighten convergence drawer invariants
Cover the notification drawer, popup geometry, overlay surfaces,\nand popup dismiss path so the current convergence layout stays\nlocked in.
2026-05-24 15:49:13 +02:00
afe97d41f8 Show X for Overview desktop deletion
KWin Overview 6.6 asks for the raw delete icon name on its virtual desktop delete button. Provide delete and delete-symbolic in the Shift icon theme, and point nearby KDE delete aliases at the existing close glyph so the button renders as an X instead of a fallback icon.

Guard the aliases in the icon theme coverage check.
2026-05-23 15:33:48 +02:00
a3e6182086 Hide convergence chrome in Overview
Track KWin Overview through the activeEffects DBus property and expose the state to Folio QML. Hide the workspace frame, dock overlay, and in-containment favourites scrim while Overview is active so the effect does not show Shift shell chrome in its desktop view.

Set the state before invoking the Overview shortcut from Folio so the chrome is already gone when KWin starts composing the effect. The convergence dock invariant now guards both the hide rules and this ordering.
2026-05-23 15:33:23 +02:00
02170250f1 Ungroup Running panel windows
Show each running window as its own card in the Folio Running
panel, including duplicate apps. When a card is dropped on another
desktop, still call requestVirtualDesktops() after notifying dynamic
tiling so the move actually completes. Add a guard to keep both
behaviors from regressing.
2026-05-23 09:52:51 +02:00
d9943d2e7a Let symbolic icons follow the color scheme
Declare FollowsColorScheme=true for the Shift icon theme so KDE apps recolor symbolic Places glyphs against dark and light surfaces. Document the requirement and guard it in the icon theme coverage test.
2026-05-23 09:30:21 +02:00
36d9004473 Round normal window decorations
Reserve side and bottom decoration borders for normal windows and draw a rounded decoration frame so windows match the convergence workspace shape. Add static guards for the decoration and existing workspace-frame corner geometry.
2026-05-23 08:53:02 +02:00
d03f3585a3 Block native window menu during tiling 2026-05-22 09:39:45 +02:00
75b9049a8c Page dynamic tiles by workspace
Keep one layout per output and virtual desktop. Move new windows to another existing desktop when the current page is full.

When a user moves a window onto a full page, replace the last focused window on that page and send it back to the source desktop. Use stable slot swaps instead of insert splits so the layout shape does not change during moves.
2026-05-20 09:38:37 +02:00
cb4d842de3 Add primary tile promotion 2026-05-19 10:01:45 +02:00
7c51f76cc0 Reduce dynamic tile drag jitter 2026-05-19 10:00:43 +02:00
c6bd37dfc3 Stabilize automatic tile layouts 2026-05-19 09:55:25 +02:00
e0e51d7ffd Add dynamic tile drag preview 2026-05-19 09:47:45 +02:00
6df3bd6ff5 Fix REUSE parsing of theme test 2026-05-19 09:26:51 +02:00
8a9f31aee2 Drop po rename invariant 2026-05-19 09:19:57 +02:00
d095eb97bc Guard convergence shell geometry 2026-05-19 09:18:46 +02:00
8dd3bfbb07 tools: install local preview QML stubs
openSUSE Tumbleweed's plasma6-nm 6.6.4 does not ship the org.kde.plasma.networkmanagement.cellular QML submodule that SignalStrengthInfo.qml imports unconditionally. Without it the MobileShell QML namespace fails to load and preview boots to a black screen.

Keep a minimal fallback module under tools/preview-stubs and install it only for local .prefix preview installs by default, with SHIFT_INSTALL_PREVIEW_QML_STUBS=AUTO/ON/OFF for explicit control. Add a CTest guard so qmldir entries stay backed by real files and the fallback remains tied to the QML import tree.
2026-05-19 09:18:46 +02:00
8e25b68355 quicksettings: request -symbolic icons for masked tiles
Kirigami.Icon { isMask: true } flattens an SVG to its alpha, so when a quick-setting tile resolves to a colored preferences/scalable glyph the whole rounded background collapses into a solid square. Append -symbolic to the five icon names that collided with colored tiles and add symlink aliases where no real symbolic variant exists yet. Guard the regression with a check in tests/check-shift-icon-theme.sh.
2026-05-19 09:18:46 +02:00
d1e55a47a7 Guard explicit Breeze QQC2 fallback
Keep Breeze QQC2 as an intentional dependency until Shift ships a real QQC2 or widget style. Extend the theme identity test to reject fake Shift style selectors and require the fallback to stay documented in launch paths.
2026-05-19 09:18:46 +02:00
1de58ed486 Add initial Shift desktop theme frame assets
Provide the first real Shift Plasma desktop theme SVGs for panel and widget frames used directly by the shell. Cover dark and light modes, including solid panel backgrounds for opaque panel states.

Extend the theme identity test so the desktop themes cannot regress to metadata-only packages.
2026-05-19 09:18:45 +02:00
65efc37410 Unify Shift theme identity 2026-05-19 09:18:32 +02:00
e54696b5c6 Make icon theme test BusyBox-compatible
BusyBox find does not support GNU find's -xtype predicate, which
caused shift-icon-theme-coverage to fail in CI. Iterate symlinks with
portable find -type l -print0 and let Bash check whether each target
exists instead.
2026-05-17 18:31:58 +02:00
40d0828343 Add SPDX header to icon theme REUSE test 2026-05-17 17:46:43 +02:00
f00a29bd21 Brand KCM and KDED metadata as SHIFT
Point the mobile shell, navigation, and Waydroid KCM metadata at the Shift repository. Brand the KDED startup and APN autodetect module names and descriptions as SHIFT while keeping existing plasma-mobile plugin/library identifiers stable.

Add a guard for these metadata surfaces so upstream project URLs and translated Plasma Mobile overrides are not reintroduced.
2026-05-17 16:31:45 +02:00
82316c393e Brand containment metadata as SHIFT
Point homescreen and panel containment metadata at the Shift repository. Update the panel and task-panel descriptions from Plasma Mobile to SHIFT, and remove translated descriptions that would override the corrected base metadata.

Add a containment metadata guard while preserving the existing org.kde.plasma.mobile.* applet target IDs.
2026-05-17 16:27:48 +02:00
d0967c100f Brand quick settings metadata as SHIFT
Update quick setting package metadata to use SHIFT-facing descriptions and repository links while preserving org.kde.plasma.quicksetting.* package IDs. Drop translated Description entries that could override the corrected base descriptions, update the Caffeine inhibition reason, and add a guard for future regressions.
2026-05-17 16:09:52 +02:00
4b34bca697 Brand initial setup module metadata as SHIFT
Update first-run KPackage descriptions and websites so package-visible metadata points at SHIFT while keeping the existing mobileinitialstart package IDs stable. Remove localized Description entries that could override the new SHIFT-facing base descriptions. Add a CTest guard for the first-run module metadata.
2026-05-17 15:54:55 +02:00
18bef9a573 Brand product metadata as SHIFT
Update session, AppStream, service, shell metadata, and initial setup about/defaults to use SHIFT-facing product metadata while keeping runtime package IDs and executable names stable. Install Shift AppStream metadata and remove stale upstream metainfo from existing prefixes. Add a guard for product metadata branding.
2026-05-17 15:44:56 +02:00
e6f076ed54 Add Shift icon theme and coverage guard
Install org.shift.icons as the look-and-feel icon theme while keeping the Plasma style on breeze-dark. Add the icon-theme coverage guard and CTest registration so shell, System Settings, KCM, and installed Plasma icon names do not silently fall back to missing Breeze-only assets.

Document the theme rules and add scoped REUSE metadata for the Phosphor-derived SVG glyphs.
2026-05-17 08:56:33 +02:00
e72165ec98 Unify convergence dock geometry and add invariant test
Introduce shared dock height/reveal constants and use them in folio and taskpanel to keep overlay and exclusion zone aligned. Keep dock backing stationary while only content slides, and add a CTest invariant script to prevent regressions.
2026-05-04 11:43:41 +02:00
5c319d2e7e Rename look-and-feel package to org.shift.mobile
Update the package ID in metadata.json, the translation catalog
name in Messages.sh, the compile-time default in envmanager, and
the test suite --lookandfeel flag. Rename the 41 .po files from
the old org.kde.breeze.mobile catalog name.
2026-05-04 11:40:41 +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
1914e9be44 statusbar: Remove system tray
The system tray has not been useful on mobile and isn't particularly
interactable due to its small size. Remove the system tray from the
status bar, if we need its functionality it would be more appropriate to
create a larger "tray UI" in the quicksettings area
2026-02-06 19:19:02 -05: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
Micah Stanley
eba6074161 notifications: Implement popup notifications
This merge request implements a more mobile optimized solution for popup notification.
- 

The current controls are:
- Swipe up to move the notification to the notification center.
- Swipe left/right to dismiss the notification entirely.
- If multiple popup notifications are grouped together, tap on the bottom area to view them in a expanded view.

What still needs to be done:
- ~~For notification without a default action, tapping on them should probably open up the associated app.~~ Note: I think I will add this in a separate merge request as it probably should be the case regardless if the notification is a popup
- ~~Swiping down on a notification currently does nothing. Maybe we should map this to a notification action?~~ Note: I have some ideas I will try later, though for now, I will leave this action blank
- ~~The expanded view of notifications should be able to be dismissed by swiping up/down on the top/bottom of the list.~~ Note: Added
- Investigate further into how to remove the current desktop popup notifications.
- ~~Code clean up.~~ Note: The code is at least a bit better

Single popup notification:

![notification_1](/uploads/63d12be6da1dd2676de17940dcadbdfa/notification_1.gif)

Multiple popup notifications:

![notification_2](/uploads/907a14b772f66f46040c28342f4dcf02/notification_2.gif)

Multiple popup notifications in the expanded view:

![notification_3](/uploads/9a7cd09a6bb8a0f7ee70e5bcf7c29c6b/notification_3.gif)

Any feedback would be greatly appreciated.
2024-11-07 16:13:06 +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
Marco Mattiolo
ac91c9fe11 Drop semicolon after Q_UNUSED() for consistency through the repo 2024-09-28 06:31:00 +00:00
Laurent Montel
8c2faecb96 Remove virtual keyword when we use override 2024-08-19 07:39:01 +02:00
Devin Lin
eb9509ce68 Remove trailing whitespace 2024-07-26 23:47:44 -04:00