UBConnect: A native ubuntu touch application for KDE connect
-
UBConnect
UBConnect is a KDE Connect compatible client for Ubuntu Touch. It ships a background daemon and a QML-based UI that work together for LAN discovery, clipboard sync, notifications, and file transfer.
The current version in open-store is v0.1.0. It should have all the features working, but there is a much optimized (especially on battery usage) version under review and hopefully will be released soon (the v0.1.1 in repo).
WARNING
This project is highly beta, highly privileged, and highly unconfined. The author will be using it every day so one might expect the author to be noticing and fixing bugs, but use at your own risk.
Especially, this project have following behavior you might concern:
- It creates a separate daemon to keep alive in background.
- The design of ubuntu touch prevents background clipboard access, this project achieve background clipboard access by observing the current focused window, and record its surfaceID, and reuse it to achieve background clipboard access. This might be considered as security vulnerability to a concerning user. But I really can't think of an other way to achieve this function.
Other things to notice
- This a fresh implementation, so we does not support mDNS at all given it is being deprecated.
- Currently it supports clipboard, file sending and notification syncing. As explained in WARNING section, we need a surfaceID to sync clipboard, and if you have never copied something from the app you are currently using, while some other device paired sends a new clipboard, it will not be synced.
- Before you uninstall the click, first pull up from bottom menu to uninstall the daemon.
Project Layout
common/: shared C++ helpers (logging, protocol, keystore, device info).daemon/: background service, DBus bridge, networking, clipboard, notifications.ui/: Qt/QML UI client and device model.ui/qml/anddaemon/qml/: QML assets for each component.manifest.json.in,*.apparmor: packaging and confinement templates.
Requirements
- CMake 3.10+
- Qt 5 (Core, Network, Gui, Qml, Quick, DBus, Concurrent)
- Clickable (optional, for Ubuntu Touch build/deploy)
Build (CMake)
cmake -S . -B build cmake --build buildInstall into the staging prefix (useful for packaging):
cmake --install buildUbuntu Touch (Clickable)
clickable build clickable runRunning Locally
Build outputs include:
ubconnect-daemon: background service.ubconnect-ui: QML UI client.
On-device service helpers:
daemon/install.sh daemon/uninstall.shPackaging Notes
manifest.jsonand AppArmor policies are generated from templates during the
CMake configure step. The Click framework selection comes from the environment
(CLICKABLE_FRAMEWORK,SDK_FRAMEWORK, orCLICK_FRAMEWORK).Well...
-
@Averiz This is awesome. I'm gonna test this on my extra/test devices. Yes this is unconfined and has many security/privacy concerns but this is still a progress and hopefully, we can slowly implement things in better (confined) ways especially on the system's part

-
Really cool! I think this will be a very welcome app.
The security concerns do seem significant, but perhaps it can improve over time.
Thank you for your work on this!! -
@kugiigi I think some change on system is indeed needed. Android also introduced restriction to clipboard some years ago, and force KDE Connect to change to using persistent notification with a send clipboard button. The problem is Ubuntu Touch doesn't even allow apps to write to clipboard in background in a confined way. I tried (in a non-public branch) to use indicator to achieve a similar behaviour of persistent notification to abandon the daemon, however the allowed behavior of the indicator on Ubuntu Touch seems to be also rather limited (I could be wrong, I am new to Ubports and am still learning).

