Lagrange is a desktop GUI client for browsing Geminispace. It offers modern conveniences familiar from web browsers, such as smooth scrolling, inline image viewing, multiple tabs, visual themes, Unicode fonts, bookmarks, history, and page outlines.
Like Gemini, Lagrange has been designed with minimalism in mind. It depends on a small number of essential libraries. It is written in C and uses SDL for hardware-accelerated graphics. OpenSSL is used for secure communications.
- Beautiful typography using Unicode fonts
- Autogenerated page style and Unicode icon for each Gemini domain
- Smart suggestions when typing the URL — search bookmarks, history, identities
- Sidebar for page outline, managing bookmarks and identities, and viewing history
- Multiple tabs
- Identity management — create and use TLS client certificates
- Audio playback: MP3, Ogg Vorbis, WAV
- And more! Open `about:help` in the app, or see help.gmi
On macOS you can install via a Homebrew tap:
$ brew tap skyjake/lagrange
$ brew install lagrange
On openSUSE Tumbleweed:
sudo zypper install lagrange
On other platforms (e.g., *BSD), you'll need to compile the source tarball (CMake).
- UI localization: English, Chinese (Simplified/Traditional), Finnish, Russian, and Spanish.
- LibreTranslate-based page content translation service.
- Preformatted blocks: showing alt text, collapsing individual/all blocks.
- Server certificates can be trusted via Certificate Authorities.
- Theme adjustments. For example, "Gray" now has dark and light variants depending on UI mode.
- Links: custom Emoji icons instead of ➤; bold and colored text; increased spacing in lists.
- Text rendering: faster performance, fixes for minor glitches.
- Touch screen input on all platforms (where SDL supports it).
- Runtime UI scaling; automatic rescaling when switching monitors.
- Word/paragraph selection modes (double/triple click).
- Unread feed entry count.
- Various UI appearance improvements (e.g., soft shadows for popup menus).
- Keyboard modifier remapping (via a config file).
- Basic command line options (see --help).
- Prevent multiple instances from running in the same user directory and overwriting each other's data.
- (v1.3.1) Added UI languages: Serbian, Interlingue. Updated the Nunito font. Fixed text rendering issues, and keybindings conflicting with link navigation.
- (v1.3.2) Bug fixes: crash after updating from v1.2; handling pixel ratio and display DPI separately; sidebar width when switching displays; binding the Tab key; add bookmark from feed entry; updating all UI strings when language changes; label text trimming; window sizing on Windows.
If you have questions, comments or improvement ideas, you can reach me via: