My goal while creating my previous app, glueather, was to lay down a pattern to create further GUI apps. I wanted to create a sort of MVC template, which I could then easily adapt to any sort of graphical program. I've achieved this goal and moved into my next project, gluemini, a simple, barebones and almost academic Gemini client using Python and the Qt library. I definitely don't expect it to be used by anyone other than me, nevertheless, the journey will teach me a lot about Gemini and GUI apps in general. gluemini is heavily inspired by Kristall, my favourite Gemini client for these reasons:
Back to my own client, I usually like to develop it enough so that it is at least useable at a minimal level and doesn't contain any blatant bugs, before I publish it as opensource. glueweather was comparatively easy and I shared it early on on Github. I didn't even bother with 0.x.x versions and went straight away to 1.0.0, because it already did everything I wanted it to do. However, Gemini is a different beast and I'll take longer to publish my code. While developing a basic "client" can be done in about 100 lines of Python code, a reasonably featured client isn't trivial. gluemini can already open, render and navigate most gemtext from any random capsule I point it to, but there's the occasional bug and even some crashes. It can also ask for input when it gets type 10 requests, and send back the information, making it usable with capsules like geminispace.info (GUS search engine) or my own dictionary.gluonspace.com and weather.gluonspace.com services. Take a look at two screenshots from gluemini in its alpha state:
On the other hand there are still many shortcomings. gluemini currently can't handle:
That being said, like so many Gemini things, this client is being developed for me right now. Partially because why not? Almost every coder that uses Gemini creates their own server/client and secondly, because I'm having a lot of fun. When my messy code got to the point where I could visit my own capsule through my own client, it felt great. It's hard to translate that into words, it's almost magical. It's different from when you create any other sort of programs, which do input/output with foreign data. Creating something that renders your own gemtext documents feels like a special kind of connection. Now I can only dream of also creating my own server and then having my own client contacting it.
I guess I'm ending this one sooner than usual... After all, as a reader, I tend to enjoy 5 to 10 minutes reads (lazy coder, lazy reader). My last post was a bit too long, besides, I'll post some followups to this subject, giving more technical details and some code snippets, justifying a few shortcuts I took and how I intend to improve the code in the near future. I'm pretty sure I'll be publishing some code next month, if not sooner. After all, I'm already using gluemini as my main Gemini browser, except for for some edge cases.
I couldn't finish without linking to Kristall. I admire the software and their coders very much and I get inspiration for my own client from them:
Kristall Small-Internet Browser