Arcanum RSS
I had wanted to write my own RSS reader for a while, mostly as an exercise. I’ve used plenty of existing ones over the years and they all work fine, but I was curious what a minimal, opinionated implementation would look like if I built it myself.
The project lives here: https://github.com/dhonus/arcanum
This wasn’t meant to be a revolutionary take on RSS, just a compact desktop app that let me explore a stack I was interested in at the time.
Tauri
Around the same time, I discovered Tauri, which immediately caught my attention. Conceptually it sits in a similar space to Electron, but with a very different philosophy: a Rust backend, a web-based frontend, and no bundled Chromium. Instead, it uses the system webview.
In practice, that means:
- much smaller binaries
- lower runtime overhead
- tighter integration with the host system
The development model is still familiar if you’ve worked with Electron or similar frameworks. You build your UI using normal web tooling and connect it to backend logic written in Rust. I chose Svelte here mostly out of preference, and because Tauri already had decent support for it.
At the time, Tauri was still relatively young. It worked well overall, but some parts of the API and documentation required a bit of digging. One issue I ran into was filesystem access in Linux AppImage builds: naïvely writing files using standard Rust APIs didn’t behave the way I expected.
It turned out that Tauri strongly encourages writing data into application-specific directories exposed via its own APIs. Once I explicitly set the working directory, things behaved predictably again:
use tauri::api::path::data_dir;use std::env;use std::path::Path;
let path = data_dir().unwrap();let root = Path::new(path.to_str().unwrap());
env::set_current_dir(&root).unwrap();