gitwtfhub

wtf is ly?

fairyglade/ly — explained in plain English

Analysis updated 2026-06-24

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

TL;DR

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

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

Why would anyone build with this?

REASON 1

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

REASON 2

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

REASON 3

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

What's in the stack?

ZigPAMXCBX11Wayland

How it stacks up

fairyglade/lyroc-lang/roczigtools/zls
Stars7,2845,6524,789
LanguageZigZigZig
Setup difficultymoderatehardeasy
Complexity3/54/52/5
Audienceops devopsdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

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.

Wtf does this do

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.

Yoink these 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?

Frequently asked questions

wtf is ly?

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.

What language is ly written in?

Mainly Zig. The stack also includes Zig, PAM, XCB.

How hard is ly to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is ly for?

Mainly ops devops.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.