mconnect - KDE Connect protocol implementation in Vala/C
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Yiğit Çolakoğlu 8b7dba6555 Fixed mpris crash when service does not respond (ex. spotifyd) Added battery command to mconnectctl 4 years ago
extra extra/travis-build: fallback to podman if docker is not available 5 years ago
src Fixed mpris crash when service does not respond (ex. spotifyd) Added battery command to mconnectctl 4 years ago
test many: fix build, warnings 5 years ago
vapi vapi: add fixed GnuTLS vapi file 7 years ago
.dir-locals.el dir-locals: update emacs indent 7 years ago
.gitignore gitignore: update 7 years ago
.travis.yml travis: build on Ubuntu 18.04 5 years ago
LICENSE Initial commit 10 years ago
README.md README: add a note about contributing to mconnect 7 years ago
gdb-script.in build: add run-gdb target 8 years ago
mconnect.conf mconnect.conf: sample configuration 10 years ago
mconnect.desktop.in mconnect.desktop: update desktop file 10 years ago
meson.build Fixed mpris crash when service does not respond (ex. spotifyd) Added battery command to mconnectctl 4 years ago

README.md

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=<somedir> 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 <path>
$ 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 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.