Universal Connect API extending GSConnect

Hey fellow GNOMies!

GNOME has everything that I need (virtually ;), but it is held back in seamless connectivity with other devices in the shell as well as the apps. Thanks to GSConnect, a great deal of pain is alleviated, but how about pure tranquillity.

GSConnect, with the help of companion Android app KDE Connect (Konnect sigh), provides a long list of features:

  • File sharing and filesystem mounting
  • URL sharing
  • Plain text sharing
  • Find devices by ringing
  • Messaging support
  • Media controls
  • Volume control
  • Battery alerts
  • Custom commands

They sure are plenty and instrumental indeed but feel unbaked into the system (the DE and the apps). I would like to provide an API to app and extension developers alike with all the access to the amazing connectivity that GSConnect and KDE Connect have to offer.

In addition to above listed features, some more useful and handy-dandy features would also be included, among which would be:

  • Basic controls of settings for the other device (similar to volume control), including toggles of Wi-Fi (and hotspot), Bluetooth, DND, etc.
  • Camera app launch and capture (maybe?)
  • Picking up calls and routing of audio to the device where Bluetooth is connected (if local connection)
  • GNOME contact sync (using the Contacts app) and making calls using the phonebook
  • GNOME Photos integration to share photos directly from the app
  • Lockscreen unlocking from a local device (or remote device?) only from trusted devices

Oops, did I mention remote and local devices out of the blue?
For the people who have used GSConnect and/or KDE Connect, you might be aware that KDE Connect only works in the local network and keeps all the data encrypted over a TLS connection. It should not come as a surprise if someday someone felt the need to have a secured pipe over the internet even if the devices are an inch apart (sometimes you just need to get things done, amirite?).

This gets tricky here, do you need to make yet another account and sign in everytime you add a new one into the loop? Well, one way to avoid that nightmare is that we can associate Device IDs together just like how Syncthing works (check it out if you haven’t heard of it yet). One device can add another device using Device ID and upon approval, we are good. Maybe we can just enjoy copypasta (evil laughter in the background).
We still would need to add each device one by one but this gets rid of the account management altogether.

Although some feature are not present in KDE Connect Android app especially the remote feature, I recon working on them should not hurt.

This is definitely a long project and might not (will not) be completed by the end of GSoC, but I sure would hang around even after that. I decided to take up on this in GSoC because all this time it has been rather hard to figure things out in the vastness of GNOME Shell’s codebase and also doing the things the right way. The code sure is well structured, variables are most sensibly named and the people are very polite and helpful, maybe I just crave a mentor (hehe).

Out of curiosity, have you contacted anyone to see if such a project would be accepted for GSoC?

As I mentioned on Matrix, although I don’t maintain GSConnect anymore, I could probably find time to mentor. The question to ask is whether this would be accepted as a GSoC proposal, because GSConnect is definitely not a GNOME project…

Well, I did tag some people in the matrix shell channel, but they weren’t much aware of GSConnect. I’ll try contacting Florian again to see if this can be accepted as a GSoC proposal and also fill out the form for that.

It is not a proposal that builds GSConnect itself but aims to build an API that provides all the features of GSConnect (with additional ones) to all the apps and extensions that need it integrated into the shell.

Should I add your name as a mentor for the project?

Ah, if it’s not to do with GSConnect I probably won’t have much experience to offer :slight_smile:

I’ll keep and eye out for it though!

You misunderstood here I suppose. The plan is to basically build upon GSConnect’s core and create a wrapper available to present it as an API in the DE. So instead of putting up the option to send a file in the panel button, this provides a function to do so in all the apps that need it, like the photos app, nautilus, or other GTK apps.

Looks like the project is not feasible at the moment.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.