Repository navigation
Phone Integration
Your phone and your desktop stop being strangers. ii-p3drovfx builds a full phone companion into the shell — a dedicated Phone tab in the left sidebar that combines KDE Connect, scrcpy screen mirroring (including per-app windows), your phone as a webcam or microphone, and your contacts — plus file sharing woven into the Dynamic Island and desktop widgets.
Most features need the KDE Connect app on the phone,
adb(with USB debugging enabled) for the scrcpy family, anddroidcamon both ends for camera/mic. The Phone tab includes an install guide popup for the phone-side pieces.
- On the phone: install the KDE Connect app (Play Store or F-Droid) and put the phone on the same network as your desktop.
- On the desktop: open the left sidebar (Super + B) and switch to the Phone tab — it's enabled by default. Pair the phone when it appears. From here you already get battery, notifications, ping, Find my phone, file sending and filesystem browsing.
-
For screen mirroring / App Mode: enable Developer options → USB debugging on the phone, install
adb+scrcpyon the desktop, and connect over USB once (wireless ADB can take over afterward — the shell resolves the phone's IP through KDE Connect automatically). -
For webcam / microphone: install the DroidCam app on the phone and
droidcamon the desktop, then flip the toggle on the matching feature page.
The Phone tab's install guide popup walks through the phone-side pieces if you'd rather be led.
The left sidebar's phone hub: a header with your device's status, an actions row, navigation cards for each feature page, and optional peripheral cards (battery levels for paired earbuds — Galaxy Buds and Soundcore are both supported by dedicated services). If you don't see the tab, it's toggled in Settings → Sidebars → Sidebar Policies Visibility.
The classic phone bridge, driven entirely from the shell:
- Device state — connection, battery, and synced phone notifications (fetched into the shell's own UI)
- Actions — ping, Find my phone (make it ring), share a URL or text to the phone, send files, and browse the phone's filesystem (SFTP mount)
- File drops — the Dynamic Island and the At a Glance widget accept drag-and-dropped files and send them via KDE Connect (or LocalSend); the island shows transfer state
- Desktop widgets — a Mobile Battery widget keeps your phone's charge on the wallpaper, and At a Glance surfaces the phone context when its battery runs low
- Quick toggle — KDE Connect has a Dashboard tile showing the connected device and its battery, with a dialog behind it
- Your phone's name — KDE Connect only reports the marketing model, so the shell reads the name you gave the phone over ADB and uses it everywhere the device is labelled, falling back to the KDE Connect string when ADB is unreachable
The Scrcpy page manages full-device mirroring with a serious options panel: stay-awake, screen-off, show-touches, fullscreen, always-on-top, max FPS, bitrate, max size, video buffer — tuned defaults included (the comments in the config read like lab notes: screen-off costs touch latency on Samsung, extra buffering adds visible delay, so both default off).
Wireless ADB is first-class: enable wireless mode and the shell can resolve the phone's IP live from KDE Connect instead of a hardcoded address, surviving IP and port changes between sessions.
The standout: instead of mirroring the whole phone, App Mode launches a single Android app in its own desktop window, on a virtual display with configurable resolution and density. The app list is pulled from the phone, complete with real launcher icons fetched over adb, favorites, and a flexible display option that adapts the virtual screen to the window. Your banking app as just another tile on workspace 3.
The icons are cut to a launcher shape of your choosing (under the KDE Connect settings): Samsung One UI (the default), Pixel, iOS, and the stock Android squircle, rounded square, square, sharp square, teardrop and cylinder.
Via DroidCam: front or back camera, resolution up to 1080p, FPS and bitrate control, horizontal mirroring, rotation, and Wi-Fi or USB connection. The result is a regular V4L2 camera any app can use.
Also via droidcam-cli's audio mode — but with proper audio plumbing: the stream lands in a dedicated PipeWire null sink (DroidCam-Mic) whose monitor becomes a virtual microphone source, optionally set as the system default. Noise suppression, echo cancellation, auto-gain and gain control are built in. Your phone's mic is usually better than your laptop's — now it's one toggle away.
The Contacts page lists your phone's address book in the shell, with avatars, favorites, and first/last-name sorting. One thoughtful default: Android exports every raw contact from every sync adapter (SIM imports, spam lists…), so unnamed number-only entries are hidden by default — toggle hideUnnamed off if you really want all 1000 of them.
Everything lives in Settings → Devices & Phone (and the sidebar policies for the tab itself), persisted under Config.options.phone. KDE Connect can be disabled independently, and each feature (webcam, mic, contacts, app mode) has its own enable switch.
| Piece | Role |
|---|---|
services/KdeConnectService.qml |
Device discovery/state, battery, notifications, ping/find/share/browse/send, wireless-ADB IP resolution |
services/PhoneScrcpyService.qml |
Mirroring + App Mode lifecycle, virtual display management |
services/PhoneAppIconService.qml |
Pulls app launcher icons off the phone over adb |
services/PhoneCameraService.qml |
DroidCam webcam control |
services/PhoneMicService.qml |
droidcam-cli audio → PipeWire null-sink → virtual mic routing |
services/PhoneContactsService.qml |
Contact fetching and filtering |
modules/ii/sidebarPolicies/phone/ |
The Phone tab UI: feature pages, actions, install guide |
scripts/kdeconnect/, scripts/phone/
|
The adb/kdeconnect helper scripts |
Dependencies by feature: KDE Connect (desktop + phone app), adb + scrcpy for mirroring/App Mode, droidcam/droidcam-cli for webcam & mic, PipeWire for the audio routing.
- Bar & Dynamic Island — file drops and transfer status
- Desktop Widgets — phone battery & At a Glance
- System Integration
- Sidebar Dashboard