Commit graph

50 commits

Author SHA1 Message Date
e951690c91 Route Folio task actions through tiling 2026-05-22 09:39:28 +02:00
a37734b74a Move homescreens to shared motion
Use Motion wrappers and state layers across Folio and Halcyon delegates, drawers, folders, resize handles, and dock feedback. Also align Folio edit/drop highlights with theme colors instead of fixed white overlays.
2026-05-21 11:13:36 +02:00
a3173160e2 Render shell-owned icons with theme masks
Use masked Kirigami icons with explicit theme colors for shell controls so the Shift icon theme renders reliably across light and dark surfaces. Replace the status-bar battery helper with theme icon names so battery glyphs also come from org.shift.icons.

Give the app-thumbnail close affordance a symbolic white X on a dark circular backing so it remains visible over previews.
2026-05-17 08:57:06 +02:00
1b8efc3be3 Use Activities icon for overview button
Replace the redundant app-grid icon with the Activities icon in the
Folio dock overview button.
2026-05-10 09:32:37 +02:00
3f6916cafc Add Dynamic Tiling task menu request bridge
Expose a KConfig-backed request channel in MobileShellSettings and use
it from the Folio task menu to request float/tile actions for a single
window.
2026-05-10 09:32:25 +02:00
3c2d8fb602 Add activity actions to dock menu
Expose activity placement controls for running tasks in
convergence mode. The dock menu can now move a window to the
current activity, all activities, or a specific activity.
2026-05-09 13:55:23 +02:00
ca557f1c2b Delay convergence dock tooltips
Stop dock tooltips from appearing immediately under the pointer and
hide them as soon as the user presses or opens a context menu.
2026-05-09 10:49:25 +02:00
a9e5a2f1e4 Add virtual desktop actions to the dock pager
Open desktop management from the convergence pager and let the
pager add or remove the last virtual desktop without leaving the
dock.
2026-05-09 10:48:52 +02:00
ebb80d5838 Add desktop actions to the dock button
Open the desktop button context menu on right click or press and
hold, and expose Minimize All Windows through KWin's existing
global shortcut.
2026-05-09 10:47:41 +02:00
76da62dae9 Add Peek at Desktop to the convergence dock
Place a desktop toggle next to Home in the convergence dock and
shift the pager and task focus flow around it. This brings the
upstream show-desktop affordance into SHIFT without adding a new
panel surface.
2026-05-09 10:46:32 +02:00
0ec1794929 Add search launcher to convergence dock
Place a Search button next to Overview and rebalance the dock
center so pager, trash, favourites, and running tasks keep
their spacing in convergence mode.
2026-05-09 10:00:30 +02:00
daf6ec3fd6 Smooth convergence mode transitions
Animate dock item sizing and button opacity when toggling convergence
mode so the dock does not snap abruptly between states.

FavouritesBar: promote cell/icon/nav/pager/trash sizing properties to
writable and attach NumberAnimation Behaviors (InOutCubic, longDuration).
Home, Overview, and trash buttons fade in/out with an InOutQuad opacity
Behavior so they appear gradually rather than popping.

Dock overlay (main.qml): introduce an `active` guard property so the
window can be driven by opacity (InOutQuad, shortDuration) rather than
toggling visibility directly. Switch the dockOffset slide easing from
a directional InExpo/OutExpo pair to a single InOutCubic so the motion
feels symmetrical.

StatusBar: smooth the background colour and convergence affordance
transitions.
2026-05-06 13:33:25 +02:00
4282b30a30 Refine convergence dock task menu
Show only task actions that make sense for the current window and shell mode. Hide free-geometry actions while dynamic tiling owns window placement, collapse hidden menu rows, and filter virtual desktop destinations.
2026-05-06 09:37:14 +02:00
8632d47d68 Fix thumbnail popup x position on Wayland layer-shell
On a zwlr_layer_shell surface the compositor does not send the
window's screen position back to the client, so mapToGlobal
returns dock-local coordinates instead of screen-absolute ones.

Compute position from screen.virtualX + targetDelegate.x directly;
the dock is full-width and bottom-anchored so no global mapping
is needed.
2026-05-04 11:43:41 +02:00
84a6fa8054 Show context menu on desktop right-click in convergence mode
Right-clicking the desktop or dock background opened the mobile
settings overlay, which is a long-press gesture for touchscreens.
In convergence mode show a popup menu instead with three items:
Desktop and Wallpaper, Add Widgets, and Configure Desktop.

Long-press still opens the settings overlay on all form factors.
2026-05-04 11:43:41 +02:00
6d79f8ed05 Add trash button to convergence dock
Show a trash icon to the left of the Overview button in convergence
mode. The icon toggles between user-trash and user-trash-full by
watching ~/.local/share/Trash/files via FolderListModel.

Left-click opens the trash in the default file manager via
Qt.openUrlExternally("trash:/"), making the feature file-manager-
agnostic. Right-click offers "Open Trash" and "Empty Trash"; the
latter shows a confirmation dialog before invoking KIO.Trash via
D-Bus.

The right wing of the virtual-desktop pager shifts left to make
room for the trash button.
2026-05-04 11:43:41 +02:00
a0bad0507f Add virtual desktop pager to convergence dock
Show compact numbered desktop buttons in the dock bar when two or
more virtual desktops exist. The buttons are split symmetrically
to the left and right of the centred app-icon cluster, matching
Plasma Desktop pager behaviour.

Click a button to switch desktops. Drag a running-task icon from
the dock and release it over a desktop button to move that window
to the target desktop. Right-click a task icon for a "Move to …"
submenu when the pager is visible.

The feature is a no-op on single-desktop sessions.
2026-05-04 11:43:41 +02:00
4077292801 Add task panel to Folio drawer
Show running windows in the app drawer with previews, window
actions, and virtual desktop controls. Hide dock task icons while
the panel is open so the same windows are not duplicated.

Use TaskManager to move windows between desktops, and expose
desktop activation through the containment.
2026-04-29 12:10:31 +02:00
1ad9fb3e3d Polish convergence dock controls 2026-04-29 08:39:22 +02:00
8a4087bf96 Replace KDE logo with Shift brand icon
Three white circles on dark background. Replaces start-here-kde in
the dock home button and the phone navigation bar.
2026-04-27 13:51:25 +02:00
bcb985c652 Add quick settings panel and game sources
Slide-out panel with brightness, volume, Wi-Fi, Bluetooth,
and airplane mode. Fully gamepad-navigable; D-pad and stick
input routed to the panel while open. System status bar
(clock, battery, connectivity) added to game center header.

Lutris games discovered from ~/.local/share/lutris/pga.db,
Heroic from ~/.config/heroic/store_cache/ JSON files.
Deduplication extended to cover all launcher sources.

Desktop entries launched via KIO::ApplicationLauncherJob to
expand Exec field codes. Generic commands parsed with
KShell::splitArgs. SQLite uses RAII cleanup guard.

Clamped SDL axis, rumble, and LED values. Renamed rumble
params from frequency to intensity. GamepadManager uses
singleton factory. setPlayerIndex checks SDL return.

FavouritesBar popup uses screen virtualX/Y for multi-monitor.
2026-04-20 14:09:33 +02:00
70fa861b30 Harden gaming mode and fix startup crash
Strut windows committed zero height to layer-shell during
early init, causing a protocol error and session exit. Wrap
height and exclusionZone in Math.max(1, ...) for top bar
and dock.

Persisted gamingModeEnabled=true with hardcoded
gameCenterOpen=false hid panels with no overlay visible.
Initialize gameCenterOpen from the stored setting.

Fix HUD visibility regression from an emergency visible:true
override. Various null-guard and positioning fixes from
static analysis across the gaming shell QML.
2026-04-20 09:46:32 +02:00
e9dbfa5ea1 Enable keyboard control in convergence dock
Make the convergence dock fully usable from the keyboard.

Tab now reaches Home, favorites, running tasks, and Overview.
Left and right move across section boundaries, and Enter/Space
triggers the same actions as mouse clicks.

Also add accessible role/name/press actions for these controls
so screen readers expose meaningful button semantics.
2026-04-19 11:10:53 +02:00
c4a2574bef Fade the dock thumbnail popup in and out
The popup snapped to visible/hidden instantly while every other
surface in the shell uses animated transitions. Add an opacity
fade over shortDuration so it matches the rest of the motion
language. State cleanup waits for the fade-out to finish.
2026-04-19 09:01:28 +02:00
e8bb4f2483 Use theme colors for the convergence dock
The dock background was a hardcoded dark fill because upstream
icon labels are white (for floating over wallpaper). Switching
to Theme.backgroundColor alone just made labels vanish on light
themes, so it kept getting reverted.

Fix the whole stack at once: background uses the Window color
set, hover highlights derive from Theme.textColor instead of
white, and delegate labels switch to Theme.textColor in
convergence mode (still white over wallpaper on mobile).
2026-04-19 08:56:44 +02:00
caef3bc82e Fix minor UI bugs and clean up dead code
Clamp FavouritesBar window indicator dots to at least 1 so a
running task with an empty WinIdList still shows a dot. Add
Accessible.onPressAction to CategoryPanel tiles. Remove dead
convergence-mode property bindings from NavigationPanelComponent
since it is hidden in that mode. Use HTML video tags for .webm
files in README so they render as playable video.
2026-04-19 07:01:55 +02:00
9bf7b70d2b Fix homescreen includes, accessibility, and popup clamp
Remove duplicate KService include in favouritesmodel.cpp. Add
keyboard navigation and accessibility role to CategoryPanel
tiles. Clamp the FavouritesBar thumbnail popup position to
screen bounds so it does not overflow offscreen on edge items.
2026-04-18 20:25:05 +02:00
76e027f630 Fix Qt.rgba color arguments
Qt.rgba expects 0.0–1.0 floats. Passing 255 for R/G/B saturates
every channel to 1.0, producing opaque white instead of the
intended semi-transparent tint. Fix all call sites across
FavouritesBar, StatusBar, and AbstractDelegate.
2026-04-18 19:04:22 +02:00
3cf1f4708e Show pointer cursor on dock clickable areas 2026-04-13 13:53:47 +02:00
220be94b63 Allow dragging running dock tasks to pin them
Running task icons in the convergence dock can now be dragged into the favourites section to pin the app at the drop position.

Add indexed insertion to FavouritesModel so pinning can place the new favourite at a specific slot instead of always appending.

Show a placeholder while dragging and reuse the existing addApplication path for the final pin action.
2026-04-13 12:32:54 +02:00
0cbd933e71 Add middle-click to close running dock tasks
Middle-click on a running task in the dock now closes it, matching
standard desktop taskbar behavior.
2026-04-13 11:53:26 +02:00
36a39e1537 Add spacer between pinned and running dock items 2026-04-13 09:39:19 +02:00
9bccbeede6 Add drag-reorder for dock favourites
Click-and-drag reordering of favourites bar items in convergence
mode.  The existing touch-based press-and-hold drag is kept for
mobile; in convergence mode, press-and-hold opens the context
menu only.

DelegateTouchArea owns the exclusive mouse grab at the C++ level,
so drag detection (threshold crossing + delta signals) is added
there rather than using a QML DragHandler.  Displaced items
animate into their new positions while the dragged item follows
the cursor.

Expose FavouritesModel::moveEntry as Q_INVOKABLE so QML can
persist the reorder.
2026-04-12 14:15:13 +02:00
ca6170c1f5 Add close button to dock thumbnail preview popup 2026-04-12 10:15:28 +02:00
03ba3bc616 Fix Pin to Dock not reappearing after unpin
The visible binding on the Pin to Dock menu item called the
imperative containsApplication() without any reactive dependency,
so QML never re-evaluated it after model changes. Add repeater.count
to the binding to force re-evaluation when favourites change.
2026-04-12 09:36:23 +02:00
1ce85bba28 Remove tooltips from dock nav buttons
The ToolTip popups were overlapping the Home and Overview buttons,
blocking click input. The icons are self-explanatory.
2026-04-12 09:23:44 +02:00
86b34878c7 Group dock icons by application in convergence mode
Switch TasksModel from GroupDisabled to GroupApplications so
multiple windows of the same app share a single dock icon.
Replace the per-task windowCountForTask() helper with the
built-in WinIdList role.

The thumbnail popup now shows a horizontal row of per-window
previews.  Clicking a grouped icon toggles the popup instead
of activating a single window.  "Close All" replaces the
close action for multi-window groups.
2026-04-11 13:25:01 +02:00
8c56409f1c Add pin-to-dock for running apps in convergence mode
Right-click a running task icon to pin the app to the dock
favourites bar. Pinned apps show a "Remove from Dock" action.

The dock overlay renders as a LayerTop window so context menus
and the dock itself stay above application windows. Menus use
popupType Window to avoid clipping inside the narrow dock
surface.
2026-04-11 09:42:21 +02:00
eb33b533c6 Show window count indicator dots on dock icons
When multiple windows of the same application are open, each
dock icon displays a row of dots matching the sibling window
count. The active window's dots are bright; inactive siblings
are dimmed. Single-window apps show one dot as before.

Uses the TasksModel AppId role to count windows sharing the
same application identity.
2026-04-10 13:32:16 +02:00
92a9e2714c Keep minimized windows visible in dock
filterHidden: true removed minimized windows from the
TasksModel because on Wayland IsHidden maps to IsMinimized.
Set filterHidden to false so minimized apps remain in the
dock and can be restored by tapping their icon.
2026-04-10 13:04:04 +02:00
29ce5117ff Show window thumbnail on dock icon hover
Hovering a running-app icon in the dock shows a live PipeWire
thumbnail of the window via zkde_screencast. Falls back to the
app icon when the stream isn't available. Clicking the thumbnail
activates the window.

Uses a tooltip-type Window so the popup renders above app windows
instead of being clipped to the panel surface.
2026-04-10 10:23:36 +02:00
8105a0b971 Add launch action to dock favourite context menu
Right-click on a pinned favourite in the dock now shows:
- Launch: opens the app (using its own icon)
- Remove from Dock: existing unpin action, renamed for clarity
2026-04-09 12:29:38 +02:00
d2cfa5497f Add hover highlights and tooltips to convergence UI
Dock buttons, running-app icons, and favourite delegates had no
mouse-over feedback. Add 3-state highlight backgrounds (hover
and press), Kirigami.Icon active state, and tooltips following
existing Plasma patterns. Favourite delegate hover is gated on
convergence mode to avoid overlap with touch press events.
2026-04-09 11:09:15 +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
a0dceaedc1 Add right-click settings on homescreen background
Accept Qt.RightButton on the HomeScreenPages and FavouritesBar
MouseAreas and open the settings view (wallpaper/widgets) on
right-click, mirroring the existing long-press behavior for mouse
users.
2026-04-08 19:08:23 +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
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
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
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
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
Renamed from containments/homescreens/folio/package/contents/ui/FavouritesBar.qml (Browse further)