## What it is
filekind turns one declarative spec file into a real, recognised file type on Windows, Linux, and macOS. You describe the format once; it generates every artifact the three operating systems need to treat your extension as a first-class type — icons, MIME registration, and the scripts that install and remove it all.
## Why I built it
Registering a custom file type today means hand-writing four unrelated artifacts in four dialects: a Windows .reg tree, a freedesktop shared-mime-info XML plus a .desktop entry, a macOS Info.plist UTI block, and a libmagic pattern. Each is separately and poorly documented, and getting any one subtly wrong means your icon silently doesn't show up. I wanted to write the format down once.
## What it generates
From a single .filekind TOML spec — name, extension, magic bytes, MIME type, icon, handler — filekind build emits the whole set:
- Windows: register / unregister
.reg, Inno and NSIS installer snippets, and an.ico. - Linux: shared-mime-info XML, a
.desktopentry, hicolor icons at every size, install / uninstall scripts, and packaging fragments. - macOS: an
Info.plistUTI fragment and an.icns. - A
magic.txtlibmagic pattern and a README explaining what to run.
Nothing is installed for you — it writes the files and points you at the generated README, so the system-changing step stays in your hands. Rust core, with a Tauri desktop app and a CLI.