Lagrange

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.

Screenshot (showing "about:lagrange" on macOS)

Features

help.gmi (release branch)

Downloads

Prebuilt binaries for Windows and macOS can be found on git.skyjake.fi:

https://git.skyjake.fi/skyjake/lagrange/releases

Feedback

If you have questions, comments or improvement ideas, you can reach me via:

GitHub: Bug reports & feature requests

@jk@skyjake.fi on Mastodon

Email

How to compile

This is how to build Lagrange in a Unix-like environment. The required tools are a C11 compiler (e.g., Clang or GCC), CMake and pkg-config.

❶ Download and extract a source tarball. Alternatively, you may also clone the repository and its submodules:

git clone --recursive --branch release \
  https://git.skyjake.fi/skyjake/lagrange

❷ Check that you have the dependencies installed: SDL2, OpenSSL, libpcre, zlib, libunistring. For example, on macOS this would do the trick (using Homebrew):

brew install cmake sdl2 openssl@1.1 pcre libunistring

Or on Ubuntu:

sudo apt install cmake libsdl2-dev libssl-dev libpcre3-dev \
  zlib1g-dev libunistring-dev

❸ Create a build directory.

❹ In your empty build directory, run CMake:

cmake {path_of_lagrange_sources}

❺ Build it:

cmake --build .

❻ Now you can run "lagrange", "lagrange.exe", or "Lagrange.app".

Installing to a directory

To install to "/dest/path":

cmake {path_of_lagrange_sources} -DCMAKE_INSTALL_PREFIX=/dest/path
cmake --build . --target install

This will also install an XDG .desktop file for launching the app.

macOS-specific notes

When compiling on macOS, there are a couple of things to note: Homebrew's OpenSSL needs to be manually added to pkg-config's search path, and SDL requires a small patch to enable smooth trackpad momentum scrolling to work as expected.

See more information about macOS build config