Lagrange is a 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 with full Unicode support
- 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 and split view
- 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
Prebuilt binaries are available for Windows 64-bit, macOS 10.13 or later, and Linux AppImage (x86_64 and armhf):
You can build from source on POSIX-compatible platforms:
- Zoomable input prompt text.
- Option for silently following scheme-changing redirects.
- Tab creation and closing follows common browser conventions.
- Preferences: Moved cache/memory size settings under "Content".
- Smarter page titling for windows/tabs.
- Bug fixes: incorrect tab order at launch and with "Open in New Tabs"; handling Ctrl+L/⌘L when Upload dialog is open; hiding input prompt dialog when switching tabs; unresponsive text fields; parsing "hostname:port" in navbar; a couple of potential crashes.
- (v1.16.1) Fixed AltGr key when entering text.
- (v1.16.2) Set focus to navbar URL when opening a window. Fixed issues with shortening URLs by omitting the "gemini:" (now only done visually, as it should be).
- (v1.16.3) Bug fixes: Trim pasted URLs; zooming vs. multiple windows; single-Emoji links not appearing; navbar URL text selection when switching tabs; mouse scrolling unfocused windows; (macOS) restoring correct window focus when app comes to foreground.
- (v1.16.4) UI: improved context menu popup placement; improved tab closing order; center short titles in margin. Bug fixes: navbar URL selection; input prompt layout; input field update when blinking cursor disabled; stuck mouse button when opening context menu while dragging; incorrect behavior during/after window resizing. macOS: drag getting stuck when opening a context menu, potential window freezes while swiping. Windows: Updated SDL to 2.26.5. Linux: Updated AppImage's SDL to 2.26.5 built from source, fixing window behavior issues; the binary is still compiled on Ubuntu 18.04. TUI: Fixed build error.
- (v1.16.5) Fixed a crash in the Flatpak build. Changed where new tabs are placed with the regular "New Tab" command.
- (v1.16.6) Bug fixes: crash related to invalid UTF-8 on a link line; splitting long lines in input fields.
- (v1.16.7) Fixed a couple of issues with streaming responses.
If you have questions, comments or improvement ideas, you can reach me via:
Flatpak applications run in a sandbox that limits their access to the rest of the system. At the moment, Lagrange has not been fully adapted to use Flatpak Portal APIs, so the following are known issues:
- Unable to open HTTP/HTTPS links via the default browser.
- Multiple instances of the application overwrite each other's data.
The environment variable `SDL_VIDEODRIVER=wayland` can be used to force SDL to use Wayland instead of X11. However, SDL does not have full support for Wayland at the moment. You should set the Lagrange CMake build option ENABLE_POPUP_MENUS to NO. If there are issues with resizing windows, also set ENABLE_RESIZE_DRAW to NO.
Documentation and tutorials
The repository README details the basic build steps, configuration options, and has a few platform-specific notes.
A thorough walkthrough of how to upload text and files via Titan using the (beta) version of Lagrange on an iPhone.