# mconnect 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. # Building 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= ninja install # Configuration **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. # Usage mconnect comes are 2 separate programs, the daemon - `mconnect` and a D-Bus client `mconnectctl`. ## The daemon 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/`. ## The client 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 $ mconnectctl share-url /org/mconnect/device/0 www.google.com $ mconnectctl share-text /org/mconnect/device/0 'battery horse staple' ``` ## DBus API The API is not documented. Use D-Feet or busctl to introspect and invoke methods manually. ## Gnome Shell 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/ # Firewalls It may be required to either temporarily disable the firewall or open up UDP port 1714. An example service definition for [firewalld](http://www.firewalld.org/) is provided in `extra/firewalld/mconnect.xml` directory. The file needs to be copied into `/etc/firewalld/services`. # Contributing Please open a Pull Request with your changes. Feel free to ping me (@bboozzoo) in description.