A device connectivity applet for the COSMIC desktop environment, enabling seamless communication between your Linux desktop and Android devices. Runs as a native COSMIC panel applet with a background daemon.
Early Alpha - This project is in early alpha. Core functionality (discovery, pairing, clipboard sync) is being developed but many features are not yet working. Expect breaking changes and incomplete behaviour.
Android companion app: cosmic-konnect-android
- Panel Applet - Native COSMIC panel applet showing device connectivity status
- Device Discovery - Automatically discover devices on your local network
- Clipboard Sync - Share clipboard content between desktop and phone
- Ping/Find Device - Send pings between devices, ring your phone to find it
- Desktop Notifications - Get notified when clipboard is received
- Background Daemon - Runs as a systemd user service for reliable connectivity
- BLE (Bluetooth Low Energy) discovery
- Wi-Fi Direct support
- File transfer
- Notification mirroring
Cosmic Konnect settings in the cosmic-applet-settings hub
Arch Linux / Manjaro:
sudo pacman -S rust just gtk4 libadwaita opensslFedora:
sudo dnf install rust cargo just gtk4-devel libadwaita-devel openssl-develUbuntu / Debian:
sudo apt install rustc cargo just libgtk-4-dev libadwaita-1-dev libssl-devgit clone https://github.com/reality2-roycdavies/cosmic-konnect.git
cd cosmic-konnect
# Build both applet and daemon
just build-release
# Install to ~/.local/ (binaries, icons, desktop entry, systemd service)
just install-local# Start the background daemon
systemctl --user start cosmic-konnect
# Enable auto-start on login
systemctl --user enable cosmic-konnect- Open COSMIC Settings > Desktop > Panel
- Add the "Cosmic Konnect" applet to your panel
- Click the panel icon to see connected devices and actions
Run with no arguments to start as a COSMIC panel applet:
cosmic-konnectThe applet shows a connectivity icon in the panel. Click it to see:
- Connection status
- Discovered and connected devices
- Per-device actions (Pair, Ring, Ping)
- Quick access to Settings
# Open settings window directly
cosmic-konnect --settings
# List discovered devices via daemon (CLI)
cosmic-konnect --list
# Run local network discovery (CLI, 5 second scan)
cosmic-konnect --discover
# Show help
cosmic-konnect --helpSettings are accessible via:
- The "Settings..." button in the applet popup
cosmic-applet-settings konnect(if the unified settings app is installed)cosmic-konnect --settings(standalone window)
- Ensure the daemon is running:
systemctl --user start cosmic-konnect - Install and open the Android companion app
- Both devices should discover each other automatically on the same network
- Tap the device in the Android app to connect
- Accept the pairing request on both devices
Desktop to Phone:
- Copy text on your desktop
- The clipboard will automatically sync to your phone (when connected)
- Phone will vibrate to confirm receipt
Phone to Desktop:
- Copy text on your phone
- Tap the clipboard icon in the Android app
- A notification will appear on your desktop with the clipboard content
Configuration is stored in ~/.config/cosmic-konnect/:
identity.json- Device identity and keyspaired_devices.json- List of paired devices
| Port | Protocol | Purpose |
|---|---|---|
| 17160 | UDP | Device discovery broadcasts |
| 17161 | TCP | Encrypted connections |
Make sure these ports are allowed through your firewall for devices to discover each other.
- Ensure both devices are on the same network
- Check firewall allows UDP 17160 and TCP 17161
- Check daemon is running:
systemctl --user status cosmic-konnect - Restart daemon:
systemctl --user restart cosmic-konnect
- Check network stability
- Ensure the phone isn't in battery saver mode (may kill background services)
- Check Android battery optimization settings for Cosmic Konnect
RUST_LOG=debug cosmic-konnect-daemonjust uninstall-localCosmic Konnect uses its own lightweight protocol (CKP - Cosmic Konnect Protocol) with:
- MessagePack encoding for efficiency
- X25519 key exchange for secure pairing
- ChaCha20-Poly1305 encryption for messages
See docs/PROTOCOL.md for the full protocol specification.
This project was developed as an educational resource demonstrating cross-platform application development. The docs/development-logs directory contains:
- Thematic Analysis - In-depth analysis of the development process covering:
- Protocol design decisions
- Cross-platform architecture patterns
- Android development (services, Compose, receivers)
- Rust async patterns (Tokio, channels)
- Encryption and security implementation
- Debugging techniques
Part of a suite of custom COSMIC panel applets with a unified settings app:
| Applet | Description |
|---|---|
| cosmic-applet-settings | Unified settings app for the applet suite |
| cosmic-konnect | Device connectivity (KDE Connect for COSMIC) |
| cosmic-runkat | Animated running cat CPU indicator for the panel |
| cosmic-bing-wallpaper | Daily Bing wallpaper manager with auto-update |
| cosmic-pie-menu | Radial/pie menu app launcher with gesture support |
| cosmic-tailscale | Tailscale VPN status and control applet |
| cosmic-hotspot | WiFi hotspot toggle applet |
| Project | Description |
|---|---|
| cosmic-konnect-android | Android companion app for Cosmic Konnect |
| COSMIC Desktop | The COSMIC desktop environment |
| KDE Connect | Inspiration for this project |
MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit issues and pull requests.