explaingit

fairyglade/ly

7,284ZigAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

Ly is a minimal text-based login screen for Linux and BSD systems written in Zig. It replaces graphical login managers with a lightweight terminal-style interface that works without systemd.

Mindmap

mindmap
  root((ly))
    What it does
      Text-based login screen
      Session selection
      User authentication
    Tech stack
      Zig language
      PAM authentication
      X11 and Wayland
    Init support
      systemd OpenRC runit
      s6 dinit sysvinit
      FreeBSD rc
    Configuration
      config.ini
      Custom desktop files
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Replace a heavy graphical login manager on a minimal Linux or BSD setup with a lightweight text-based alternative

USE CASE 2

Set up a display manager on a non-systemd system using OpenRC, runit, s6, dinit, or sysvinit

USE CASE 3

Add a custom desktop session to Ly by writing a .desktop file for an unlisted window manager

Tech stack

ZigPAMXCBX11Wayland

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Zig 0.16.x to build from source plus PAM and optionally XCB, distro packages available for common distributions.

In plain English

Ly is a display manager for Linux and BSD. A display manager is the login screen that appears when your computer boots, where you type your username and password and choose which desktop environment to start. Unlike most display managers, which are graphical applications with buttons and images, Ly uses a minimal text-based interface that looks similar to old-school terminal programs. One of Ly's stated goals is portability: it does not require systemd to run. The README includes installation instructions for six different init systems including systemd, OpenRC, runit, s6, dinit, and sysvinit, as well as FreeBSD. This makes it appealing to users running more minimal Linux setups or BSD systems where systemd is not available. Ly supports both X11 and Wayland desktop sessions, discovering them through standard .desktop files in the usual system directories. If a desktop environment is not showing up in the list, the README explains how to create a custom .desktop file for it. Arrow keys are used to navigate between fields at login, and F1 and F2 trigger shutdown and reboot. Building Ly from source requires Zig 0.16.x (the Zig programming language that Ly is written in), plus system libraries for PAM (authentication) and optionally XCB for X11 support. Packages are available in the repositories of several Linux distributions so you can install it without building from source. Configuration lives in /etc/ly/config.ini, which the README describes as fully commented with default values included. The project's primary development happens on Codeberg, with GitHub serving as a mirror. A Matrix chat room is available for community discussion.

Copy-paste prompts

Prompt 1
Write a custom .desktop file to add my i3wm session to the Ly display manager session list on Arch Linux.
Prompt 2
Show me the /etc/ly/config.ini options I need to set for auto-login as a specific user with a default Wayland session.
Prompt 3
Walk me through enabling Ly as the display manager on Alpine Linux using the OpenRC service steps.
Prompt 4
How do I set up Ly on FreeBSD with the correct rc.conf entry and which packages do I need?
Open on GitHub → Explain another repo

← fairyglade on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.