2024-04-09 Introducing Profectus: A New Graphical Browser for the Smallnet
Near the end of March, I started a new series of posts talking about the design choices of Gemini (and Gopher), which you can find here:
However, I stopped just before the start of April because I was working on an entirely new project - a new graphical browser for gemini, nex, spartan, and scroll. This is a project I've been wanting to take up for the past two years. About two years ago I wrote a custom GUI library in the Odin programming language. However, I was unable to use it for browsers and networking because Odin lacked a TLS/SSL library.
When I stopped the posts in late March is when I started work on porting this GUI library over to Golang. I then started developing this new browser, which was at the time called "scroll-gui-golang". This process of porting the GUI library over and making sure I had the GUI elements required to start work on the browser took a lot of time, but I got it done.
So with this, I officially introduce the alpha of Profectus. You can view more information about Profectus and download it via Gemini here:
And here is the source-code, licensed MIT:
Here are some images of the browser running:
Current Features
- Multiple protocols: Scroll, Gemini, Nex (Spartan coming soon); Filetype detection when using the Nex protocol
- Multiple document formats: Markup - gemtext, scrolltext, nex; Images - png, jpeg, webp, bmp, ico, cur, tiff, xcf, svg, and partial gif support (no animation)
- Basic navigation: Back, forward, refresh, homepage
- Streaming audio: Ogg Vorbis, Flac, Mp3, and Wav; Streams in background; continue browsing while it plays.
- Streaming video: Pipes data into mpv, ffplay, or vlc; Streams in background (continue browsing while it plays).
- Download YouTube videos from YT links: Pipes into mpv, ffplay, or vlc; Selects best quality with audio
- Decodes various IANA charsets for textfiles: Uses charset mimetype parameter if available; Otherwise, tries to auto-detect the charset if no charset parameter specified (or via Nex protocol)
Future Updates
The current alpha state of profectus was built to be the most basic functional browser, which means there are a lot of missing features and probably bugs too. I have many features and bug fixes planned, which you can see below. The most foundational features will go in the beta, the commonly expected browser features will be released with 1.0, and 1.1 and 1.2 will include mostly quality of life updates and features.
Beta
- Scroll Protocol: abstracts, metadata
- Music Player: volume, mute, pause, play, metadata
- Spartan Protocol support
- Basic Markdown support
- Up and root navigation buttons
- UI scaling
1.0 Release
- TOFU verification
- Tabs
- Bookmarks and History
- Sibling links
- Cert management
- AsciiDoc support
- UI Animations
- Improved textbox input
1.1 Release
- Gemsub feeds and Atom feeds
- Theming
- Search via addressbar
- File upload via Titan and Spartan
1.2 Release
- Fonts settings
- Emojis, Harfbuzz, and Bidi improvements