TootRain for Windows is now available! You can download it here.
Honestly no one really asked for a Windows version, I just wanted to see how is it like to make one.
It was originally started with GTK4, with the hope that I might make a Linux version that happens to run on Windows. It was however harder than I thought – TootRain is no ordinary application, it’s a transparent window overlaying on the entire screen, with animated text, and all user intereaction passing through. I tweaked different flags but none of the combinations works (please tell me if I missed something), and there are so many window managers that it seemed rather impossible to make one works reliably across them, so I prioritised Windows first.
There are so many options to create an application on Windows, yet none of them seem to be good enough that even Microsoft chose to use Electron for some of their applications. After some exploration I decided to try QT, a pretty famous cross platform application framework. QT doesn’t use native UI, but it replicates pretty well. On mac, there are a some little small details like corner radius and shortcuts not handling the same way as a native app, probably only an experienced mac user would notice. On Windows, at least my Windows-user friends said, no Windows user will ever notice such small details, nobody cares. So I guess that’s good enough. I thought QT is just another UI framework in the beginning, and it didn’t took long until it totally brew my mind with its wide scope of functionalities. Networking just works, there’s even a module just for doing OAuth, with a local HTTP server included. It even has an installer framework, that’s both easy to use and runs on CI, it can even update the application while it’s running. It was so easy to implement a “Download update” button, that had everything downloaded and the application properly restarted. The scope was so complete that the entire TootRain for Windows has no external dependency at all.
As QT also runs on Linux/X11, I eventually managed to build a Linux version, except I still couldn’t figure out how to make it properly stay on top of other windows. As I am not a regular Windows user, nor do I have any telemetry in the app, it really depends on users to report bugs. Please send me some feedbacks.
TootRain for Windows currently doesn’t support Slack, and will probably not. The slack integration in the Mac version is a rather hacky one, it sniffs at some HTML and pretends to be the official web client. While the API has been pretty stable throughout the years (ironically more stable than some other site’s public API), it just doesn’t feel like the correct thing to do in a project I made purely for fun. I like the way Fediverse is open and connected, that’s why I began with Mastodon/Pleroma, then later with Misskey (IRC integration coming soon to the Mac version btw). Slack is just the total opposite of openness, the API is as closed as it can be, with functionalities mostly limited to paid user. My only motivation of integration was the fact that the startup I works for uses it, and I thought it would be nice to integrate for internal presentations. It was however inevitable that when a company grows, the thing that connected people gradually turned from friendliness to regular performance evaluations. At some point, there will be a moment that spending my personal time voluntarily developing something for the company, doesn’t worth anymore. I guess it’s just about time, when Slack update their user agent checks next month, things will stop working, and I might just as well removing the related code.
Nevertheless, AppleScript integration will still be available, anyone can technically create their own bridge to connect whatever service they want.
Side note: I noticed a tiny little room for improvement in the QT codebase and sent a patch, it was a very minor one, that I didn’t expect anyone to take it seriously. To my surprise, not only everyone replied swiftly, they even sent me a gift for the tiny contribution. Thank you!