Tether: iMessage, SMS, etc. on Linux

When Iwent to Linuxfull time I was surprised to not miss much from macOS.

tldr; I madeTetherto do all the things I did miss.

In particular, that thing where OTP codes sent to Mail or Messages autofill into the login form I’m waiting for on the Mac. It sounds small, but that was the one thing I really missed!

It is impossible to fully implement all of Continuity on Linux, but Tether’s goal is to do all of it that is technically possible.

Before you ask, I knowKDE Connectexists. It’s great! If you’re on Android you should definitely use it. The problem is that it didn’t do what I wanted and it’s roadmap indicated it never would.

Tetherstarted its life filling the major holes. Clipboard sync was first, I wanted the OTP flow and I knew this was going to be required, and it was also the easiest. This let me copy / paste between macOS and Linux (Wayland) and forced the project to build out all the foundation I knew it would need later.

I knew the App Store was going to be a hurdle so I shipped theiOS app firstwith only support for clipboard sync. There was a very basictetherddaemon for the linux side but that was it.

I never skipped out on safety. The networking between iOS and Linux has been mTLS from the start, and both sides must agree before anything can communicate. Since then I’ve done Opus and then Fable bug / security sweeps regularly.

After that, file transfer was the obvious next step and that went in quick and easy.

As for mail and browser stuff, I’m not very creative. To be honest I’ve kinda cheated here. I use Zen Browser (Firefox) and Betterbird (Thunderbird) and both support WebExtensions very well. So, I just made abrowserandmailextension to deal with OTP stuff.

The mail extension looks for OTP codes and sends them to the browser extension which looks for OTP input elements and autofills OTP codes as they arrive from mail.

It actually works great! The problem is broad support: if you use a different mail client you’re kinda out of luck for now. I’d LOVE if someone wants to help with that stuff, but it’s so far out of my comfort that I’ll stick with the backend side for now.