Multi-platform app that allows your devices to communicate
Find a file
2024-07-22 22:24:53 +00:00
.gitlab Remove Gitlab Issue template 2022-08-23 23:52:46 +02:00
app SVN_SILENT made messages (.desktop file) - always resolve ours 2024-06-09 01:17:55 +00:00
cli Make sure we are not using deprecated APIs 2024-04-27 17:47:29 +02:00
cmake Convert license headers to SPDX expressions 2020-08-17 09:48:10 +00:00
core Bluetooth provider workaround for BlueZ/DBus timeouts 2024-07-22 21:29:03 +00:00
daemon SVN_SILENT made messages (.desktop file) - always resolve ours 2024-06-09 01:17:55 +00:00
data GIT_SILENT Update Appstream for new release 2024-06-28 23:08:31 +02:00
declarativeplugin plasmoid: Basic code cleanup 2024-07-12 11:44:13 +03:00
doc Use undeprecated install dirs 2022-04-21 00:50:14 +02:00
fileitemactionplugin SVN_SILENT made messages (.desktop file) - always resolve ours 2024-06-28 01:20:00 +00:00
icons Fix daemon hanging on Windows when loading the window icon 2023-06-28 00:03:11 +02:00
indicator indicator: Simplify sending files from systray icon 2024-07-22 22:24:53 +00:00
interfaces urlhandler: Fix devicePicker selection with --device 2024-05-20 09:56:03 +00:00
kcm SVN_SILENT made messages (.desktop file) - always resolve ours 2024-06-28 01:20:00 +00:00
kcmplugin Drop Qt5-only code branches 2024-04-27 17:46:39 +02:00
kio Cleanup all occurences of QT_MAJOR_VERSION in cmake 2023-12-28 17:49:07 +01:00
LICENSES Remove unused, download missing licenses 2023-07-22 14:22:59 +02:00
nautilus-extension nautilus: drop spurious shebang 2023-02-05 09:17:15 +01:00
plasmoid plasmoid: Port to pragma ComponentBehavior: Bound 2024-07-12 11:44:13 +03:00
plugins Remove SSH flag to enable deprecated algorithms and keys 2024-07-12 14:14:01 +00:00
po GIT_SILENT Sync po/docbooks with svn 2024-07-22 01:27:30 +00:00
settings SVN_SILENT made messages (.desktop file) - always resolve ours 2024-06-09 01:17:55 +00:00
smsapp Corrected newline inserting when using shift+return while writing SMS messages 2024-06-28 11:19:35 +00:00
tests Add a parent to KCompositeJob 2024-06-04 14:15:23 +00:00
urlhandler SVN_SILENT made messages (.desktop file) - always resolve ours 2024-06-09 01:17:55 +00:00
.craft.ini Remove master dependency overrides from craft config 2024-03-04 23:13:02 +00:00
.editorconfig add trim_trailing_whitespace to editorconf 2019-06-11 01:08:31 +02:00
.gitignore Port smsapp to Qt6 2023-11-16 18:15:04 +00:00
.gitlab-ci.yml Add macOS Craft builds 2024-03-07 21:27:48 +01:00
.kde-ci.yml Require tests to pass on Linux 2023-12-23 12:28:25 +01:00
CMakeLists.txt GIT_SILENT Upgrade release service version to 24.11.70. 2024-07-21 12:49:46 +02:00
CONTRIBUTING.md Fixed the link pointing to the GitLab repository in the CONTRIBUTING.md file to the moved repository 2021-03-31 09:44:26 +02:00
KDEConnectMacros.cmake kdeconnect_add_plugin: Autogenerate logging category 2023-08-07 19:47:41 +02:00
README.md Fix a bad link in README.md 2023-05-31 12:43:24 +08:00

KDE Connect - desktop app

KDE Connect is a multi-platform app that allows your devices to communicate (eg: your phone and your computer).

(Some) Features

  • Shared clipboard: copy and paste between your phone and your computer (or any other device).
  • Notification sync: Read and reply to your Android notifications from the desktop.
  • Share files and URLs instantly from one device to another including some filesystem integration.
  • Multimedia remote control: Use your phone as a remote for Linux media players.
  • Virtual touchpad: Use your phone screen as your computer's touchpad and keyboard.
  • Presentation remote: Advance your presentation slides straight from your phone.
  • Run Commands: Run shell commands on your computer from your phone.
  • Access SMS: Read, send and reply to SMS and MMS from your computer.

All this is done completely wirelessly, utilising TLS encryption.

Userbase wiki

A user-focused wiki can be found on KDE Userbase

Supported platforms

  • Computers running Linux with Plasma 5, Gnome 3, Elementary OS... any distro with Qt5 support :)
  • Android, by installing the KDE Connect app from the Play Store or F-Droid.
  • iPhone and iPad, by installing from the App Store
  • Computers running Windows, by installing from the Microsoft Store

How to install

These instructions explain how to install KDE Connect on your computer. You will also need to install it on your Android device and pair them together in the app before using this application. The Android app repository can be found here

On Linux

Look in your distribution repo for a package called kdeconnect-kde, kdeconnect-plasma, just kdeconnect or kde-connect. If it's not there and you know how to build software from sources, you just found the repo :), instructions are here

On Mac or Windows

Platforms other than Linux are not officially supported, as there has yet to be an official release of KDE Connect for MacOS or Windows. However, most of the features have already been ported to windows so you can compile KDE Connect for Windows using Craft. It hasn't yet been completely tested on MacOS, contributions and feedback are welcome!

On BSD

It should work, but no promises :)

How does it work?

KDE Connect consists of a UI-agnostic "core" library that exposes a series of DBus interfaces, and several UI components that consume these DBus interfaces. This way, new UI components can be added to integrate better with specific platforms or desktops, without having to reimplement the protocol or any of the internals. The core KDE Connect library is also divided into 4 big blocks:

  • LinkProviders: Are in charge of discovering other KDE Connect-enabled devices in the network and establishing a Link to them.
  • Devices: Represent a remote device, abstracting the specific Link that is being used to reach it.
  • NetworkPackets: JSON-serializable and self-contained pieces of information to be sent by the plugins between devices.
  • Plugins: Independent pieces of code that implement a specific feature. Plugins will use NetworkPackets to exchange information through the network with other Plugins on a remote Device.

The basic structure of a NetworkPacket is the following:

{
  "id": 123456789,
  "type": "com.example.myplugin",
  "body": {  },
  "version": 5
}

The content of the "body" section is defined by each Plugin. Hence, only the emitter and receiver plugins of a given packet type need agree on the contents of the body.

NetworkPackets can also have binary data attached that can't be serialized to JSON. In this case, two new fields will be added:

"payloadSize": The size of the file, or -1 if it is a stream without known size. "payloadTransferInfo": Another JSON object where the specific Link can add information so the Link in the remote end can establish a connection and receive the payload (eg: IP and port in a local network). It's up to the Link implementation to decide how to use this field.

Contributing

To contribute patches, use KDE Connect's GitLab. There you can also find a task list with stuff to do and links to other relevant resources. It is a good idea to also subscribe to the KDE Connect mailing list. We can also be reached on IRC at #kdeconnect on irc.libera.chat or on Telegram, contributions and feedback are warmly welcomed.

For bug reporting, please use KDE's Bugzilla. Please do not use the issue tracker in GitLab since we want to keep everything in one place.

Please know that all translations for all KDE apps are handled by the localization team. If you would like to submit a translation, that should be done by working with the proper team for that language.

License

GNU GPL v2 and GNU GPL v3

If you are reading this from Github, you should know that this is just a mirror of the KDE Project repo.