This is the community page for KDE Connect. Feel free to edit it! It should contain useful and up to date resources for both users and developers.
KDE Connect is a project that enables all your devices to communicate with each other. Here's a few things KDE Connect can do:
To achieve this, KDE Connect:
This video from 2013 demonstrates some other cool features: https://www.youtube.com/watch?v=KkCFngNmsh0
You will most likely find the KDE Connect desktop component as a package in your distribution's repos. If not you can ask them to package it.
Despite a common misconception you can use KDE Connect on all desktop environments. Since most of the developers are using Plasma it may occur that a feature is broken or inaccessible on other desktop environments. In this case, please report it as a bug. There are multiple ways to enhance the KDE Connect experience on non-Plasma desktops. If you are a GNOME user you might prefer GSConnect, a GNOME shell extension. For desktops with AppIndicator support (Budgie, Cinnamon, LXDE, Pantheon, Unity) indicator-kdeconnect is available.
There was some development of a KDE Connect client app for iOS in 2014 (see source code) but due to our experience and various technical and organizational factors it's unlikely that we will have official iOS support anytime soon.
KDE Connect is also available on SailfishOS and we are working on bringing it to other Linux-based phones (Plasma Mobile, PostmarketOS etc.)
Plasma Browser Integration makes KDE Connect even more powerful. It allows you to control content from e.g. Youtube or Netflix from your phone and send browser tabs to your phone. Despite the name it can also be used on non-Plasma desktops.
There may be a variety of reasons for using KDE Connect with a VPN. Maybe you have left home and want to run a command or maybe you’re on a public wifi network where your devices aren’t allowed to communicate and you want to use remote control to give a presentation.
If you have your own server with a public-facing IP address, you can set up OpenVPN yourself. OpenVPN is not the easiest piece of software to set up, but by following a setup tutorial such as this one, you should be able to manage: https://openvpn.net/howto.html
In order to allow UDP broadcast packets, which are what KDE Connect uses to automatically discover two devices, OpenVPN needs to be set up for bridging (TAP device). If you use a tun device, you can still manually connect by IP address.
If you want to rent a pre-configured OpenVPN service rather than set up your own it should work, but the same considerations about the server settings need to be taken into account.
Once the server is running, you can use the official OpenVPN client to connect the desktop to the server. There is no official OpenVPN client for Android, but I find that the OpenVPN for Android client works well: https://play.google.com/store/apps/details?id=de.blinkt.openvpn
Once both devices are connected, test that they are able to communicate over the VPN by trying to do a network ping between them.
If your OpenVPN instance is set up for bridging, KDE Connect should work just like on a local network
If you are using OpenVPN with a tun device, you will have to manually add your devices by IP. Then, once you connect to the VPN, KDE Connect should automatically detect your device and either connect or be ready for pairing!
If you want to build KDE Connect yourself, you'll first need to grab the code from git.
git clone https://invent.kde.org/kde/kdeconnect-kde.git
KDE Connect uses cmake as a build system, which will tell you if you are missing any dependencies. On some distros you will need to install some development packages. On Ubuntu you can use
sudo apt-get build-dep kdeconnect to install all build dependencies. On openSUSE you can use
sudo zypper si -d kdeconnect-kde.
To configure use
cd kdeconnect-kde mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr ..
To build use
make sudo make install
Note that this will override the KDE Connect provided by your distro
If you are intending to develop KDE Connect or experience a crash and are asked to give a backtrace, build KDE Connect with debugging symbols:
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ..
If you don't want to override your distros KDE Connect choose another prefix than /usr. To temporarily run the newly installed KDE Connect run
source prefix.sh from the build directory.
If you install KDE Connect in a custom location you'll need to run
kdeconnectd manually, since DBus doesn't know about it.
For instruction on how to integrate the build with KDevelop check out this blog post
You can find the code at git://anongit.kde.org/kdeconnect-android.git. It's easiest to use Android Studio to build the app and install it to your phone, although it can be done on the command line using gradle.
Running KDE Connect in the emulator is possible, but needs an advanced networking setup. See the guide posted for the Android_Emulator
KDE Connect works quite well on Windows, with many features ported. See here for build instructions
KDE Connect provides on alternative mobile-friendly interface, targeted at mobile Linux platforms such as Plasma Mobile. The app is usable on the desktop as well. It is built from the same sources as the desktop component. The build steps are mostly the same, just one additional step is needed to enable building the app.
cd build cmake -DEXPERIMENTALAPP_ENABLED=True .
This will result in an additional 'kcapp' executable being built
KDE Connect uses dynamic ports in the range 1714-1764 for UDP and TCP. So if you are behind a firewall, make sure to open this port range for both TCP and UDP. Otherwise, make sure your network is not blocking UDP broadcast packets.
If your firewall is ufw, you can open the necessary ports with:
sudo ufw allow 1714:1764/udp sudo ufw allow 1714:1764/tcp sudo ufw reload
If your firewall is firewalld, you can open the necessary ports with:
sudo firewall-cmd --zone=public --permanent --add-port=1714-1764/tcp sudo firewall-cmd --zone=public --permanent --add-port=1714-1764/udp sudo systemctl restart firewalld.service
In Fedora there is a program to configure the firewall. Open Firewall Configuration (the program's filename is
firewall-config), and in Zones ➔ Services check the kde-connect service.
Make sure you have chosen the Permanent Configuration in the drop-down at the top, otherwise these settings will be reset upon reboot.
If your firewall is iptables, you can open the necessary ports with:
sudo iptables -A INPUT -i <yourinterface> -p udp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A INPUT -i <yourinterface> -p tcp --dport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -i <yourinterface> -p udp --sport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -i <yourinterface> -p tcp --sport 1714:1764 -m state --state NEW,ESTABLISHED -j ACCEPT
Sometimes, a corrupt config file may cause KDE Connect to crash when trying to pair with a device. In that case, deleting the config ~/.config/kdeconnect might help.
Yes, you can pass the command line argument `-platform offscreen` to the daemon (eg: `killall -9 kdeconnectd; /usr/lib/libexec/kdeconnectd -platform offscreen`)
How to setup running kdeconnect on an emulator is described here Android_Emulator
GSConnect is an independent project which implements the KDE Connect protocol and uses the same Android app. If you are running GSConnect, please visit that project's GitHub page first for support. If you and the GSConnect team determine the issue is the Android app or protocol, feel free to report those in the KDE Connect bug tracker.
In case you find a bug and want to report it, you can do so in the KDE bug tracker.
NOTE: KDE Connect is in process of moving from Phabricator to GitLab. Focus any new contributions on GitLab. This wiki will be updated as we figure out the GitLab workflow.
KDE Connect is a perfect project to start contributing to KDE. You'll need a basic understanding of programming concepts, the rest can be learned by doing. Experience with Android or Qt is beneficial, but not needed.
We have a group to discuss development. You can access it from Telegram, IRC (#kdeconnect) or matrix.org (#freenode_#kdeconnect:matrix.org). Feel free to ask any development related questions there. We also have a mailing list.
You can submit patches on our Phabricator. This wiki page has more details on how this process works. For the reviewer, put in #kde_connect. Should this be your first patch, it's good to know that it might take some time before your patch is reviewed (we all work on KDE Connect in our free time), and you'll probably have to make some changes a couple of times. That's not because you're new, that's what happens for all reviews (even for long-time contributors).
There are a couple of tasks marked as Junior Jobs on our workboard. Those have some extra information on how to approach them that help you get started.
KDE Connect is actually composed of two repositories; one for the Android implementation and one for the C++ (Desktop) implementation. You can have a local clone of both on your computer and the steps to set them up are the same. For these directions, I will use the C++ repository, but if you want the Android repository, just replace every instance of 'kdeconnect-kde' with 'kdeconnect-android'
You are all set up! See the optional steps for ways to make life easier.
Having a second remote allows you to have your local 'master' branch track the upstream kdeconnect-kde master branch, so you can easily get all the latest changes.
These steps assume you are using command-line git. If you are using a GUI tool, the steps will be different, but the ideas will be the same.
# Note that we use HTTPS cloning here so that you don't need a verified account to pull changes! git remote add upstream https://invent.kde.org/kde/kdeconnect-kde.git git checkout -b upstream-master --track upstream/master
Whenever you do a change to KDE Connect you need to restart the daemon for the change to take effect.
killall kdeconnectd build/bin/kdeconnectd
The daemon communicates with various UI components (Plasmoid, CLI, Indicator etc.) over DBus. QDbusViewer allows inspecting the DBus interface provided by the daemon which can be incredibly useful for debugging.