# Solenoid: yet another desktop application framework

**URL:** <https://ziggit.dev/t/solenoid-yet-another-desktop-application-framework/17593>\
**Category:** Showcase\
**Tags:** zig-master, handmade, llm-deps\
**Created:** [September 13, 2026, 4:38pm UTC](https://ziggit.dev/t/solenoid-yet-another-desktop-application-framework/17593 "2026-09-13T16:38:02Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ErenayDev](https://ziggit.dev/user_avatar/ziggit.dev/erenaydev/32/9054_2.png) [@ErenayDev](https://ziggit.dev/u/ErenayDev)\
**Post date:** [September 13, 2026, 4:38pm UTC](https://ziggit.dev/t/solenoid-yet-another-desktop-application-framework/17593/1 "2026-09-13T16:38:02Z")

</div>

# solenoid: yet another desktop application framework

* * *

solenoid is a framework for making desktop applications. You know maybe about Electron and Tauri. The project started as Tauri clone in Zig.

I used [zig-gobject](https://github.com/ianprime0509/zig-gobject) bindings. but for v0.17.0 but it isnt available at the time of starting the project. so i forked [zig-gobject](https://github.com/ErenayDev/zig-gobject) repository and updated it to [v0.17.0 version of Zig](https://codeberg.org/Erenay/gobject-bindings). Currently my PR got merged!

So finally i had the bindings. Then i started writing the rendering stuff. It was fantastic, i rendered my first html, css and js files. [Browse source](https://codeberg.org/Erenay/solenoid/src/commit/5df01883f4d2093dbe1f9ea56a0468ed90aff7f8)

After that, i wrote command/plugin system. I keep the command logic very simple. you only throwing fetch request from your frontend code. Then Zig side parses it and executes the command.

 ![image](https://ziggit.dev/uploads/default/original/2X/5/59aa44bda8db6e5e67ed8f6e26fc057c962928b1.png)

The assets generators job is finding the MIME type of your frontend files and maps them into a zig struct. I forked [zmime](https://codeberg.org/Erenay/zmime), added 0.17.0 compability and added more filetype support.

About cross-platform compability, currently only supports Linux because it uses [WebKitGTK](https://webkitgtk.org/). I wrote a cross-platform window management library like [webview](https://github.com/webview/webview), named as [pencere](https://codeberg.org/Erenay/pencere)  
I will implement it to solenoid sometime. But i havent tested it on Windows and macOS very well. it needs more work.

I use Zine for the website. Thanks Loris Cro and the contributors.

You can check out the [examples](https://codeberg.org/Erenay/solenoid/src/branch/master/examples)

I know more or less that no one will do this, but I’ll warn you anyway: dont use it in production (yet) 🙂

### Links

Code: [https://codeberg.org/Erenay/solenoid](https://codeberg.org/Erenay/solenoid)  
Website: [https://solenoid.erenaydev.com.tr](https://solenoid.erenaydev.com.tr) (I havent purchased a domain yet)  
Zig Docs: [https://solenoid-docs.erenaydev.com.tr/](https://solenoid-docs.erenaydev.com.tr/)  
`pencere` code: [https://codeberg.org/Erenay/pencere](https://codeberg.org/Erenay/pencere)  
`zmime` code: [https://codeberg.org/Erenay/zmime](https://codeberg.org/Erenay/zmime)

### Supported Zig versions

v0.17.0, master

### AI / LLM usage disclosure

- I used LLM to help me with the `pencere` code in a part of macOS. But im currently not importing it inside solenoid. I’m gonna delete that part and wait for macOS users to contribute.
