mconnect - KDE Connect protocol implementation in Vala/C
GLib and Gio should be available even on trimmed down systems. Vala is really needed only at build time. Json-glib does packet parsing. Libnotify is responsible for displaying shell popups.
Build dependencies (using package names as found in Fedora):
- vala
- glib2-devel
- gobject-introspection-devel
- libgee-devel
- json-glib
- gnutls-devel
- libnotify-devel
- gtk3-devel
- at-spi2-core-devel (and at-spi2-atk)
- meson
- pkg-config
or see extra/travis-build
in the source tree for example installation
commands. Once build deps are in place, run:
mkdir build
cd build
meson ..
ninja
ninja install
# to set a custom installation directory run:
# DESTDIR=<somedir> ninja install
NOTE: manual configuration file is no longer needed
A sample configuration file is provided in source tree, see
mconnect.conf
. It will get installed to ${datadir}/mconnect/
(usually corresponding to /usr/share/mconnect/
) by default. Once
mconnect
starts it will pick the default file and make a copy of it
in user's config directory, specifically ~/.config/mconnect/
.
A device described in it's own group and listed in main.devices
, has
to match exactly with incoming identity packets. However, since
deviceId
is not known beforehand, neither shown in KDE Connect
Android application, only name
and type
are used for matching.
mconnect comes are 2 separate programs, the daemon - mconnect
and a D-Bus
client mconnectctl
.
Start it by running:
$ mconnect -d
The daemon starts listens on 0.0.0.0:1714
for incoming UDP packets. Once an
identity packet (a sort of a handshake) is received, a connection to the
sender's address will be made. Known devices are cached in
~/.cache/mconnect/devices
.
File sharing to a device requires TCP ports 9970-9975 to be open. Files shared
from the device are saved to ~/Downloads/mconnect/
.
List discovered devices:
$ mconnectctl list-devices
Devices:
/org/mconnect/device/0 673ac2db27d2a331 - Motorola Moto G Maciek
Accept a device (previously done only through the configuration):
$ mconnectctl allow-device /org/mconnect/device/0
Show device details:
$ mconnectctl show-device /org/mconnect/device/0
Device
Name: Motorola Moto G Maciek
ID: 673ac2db27d2a331
Address: 192.168.1.103:1716
Type: phone
Allowed: true
Paired: true
Active: true
Connected: true
Share a file/URL/text:
$ mconnectctl share-file /org/mconnect/device/0 <path>
$ mconnectctl share-url /org/mconnect/device/0 www.google.com
$ mconnectctl share-text /org/mconnect/device/0 'battery horse staple'
The API is not documented. Use D-Feet or busctl to introspect and invoke methods manually.
A Gnome Shell extension is available here: https://github.com/andyholmes/gnome-shell-extension-mconnect or via the GNOME extensions page: https://extensions.gnome.org/extension/1272/mconnect/
It may be required to either temporarily disable the firewall or open up UDP port 1714.
An example service definition for firewalld is
provided in extra/firewalld/mconnect.xml
directory. The file needs to be
copied into /etc/firewalld/services
.
Please open a Pull Request with your changes. Feel free to ping me (@bboozzoo) in description.