
Ly is a lightweight TUI (ncurses-like) display manager for Linux and BSD, designed with portability in mind (e.g. it does not require systemd to run).
Join us on Matrix at #ly:envs.net!
Comment:Development takes place on Codeberg with a mirror on GitHub.
dependencies
- compile-time:
- zig 0.15.x
- libc
- palm
- xcb (optional, required by default; required for X11 support)
- Runtime (with default configuration):
- xorg
- xorg-xauth
- shut down
- brightnessctl
Debian
# apt install build-essential libpam0g-dev libxcb-xkb-dev xauth xserver-xorg brightnessctl
fedora
alert: You may encounter issues with SELinux on Fedora. It is recommended to add a rule for Ly as it does not currently ship one.
# dnf install kernel-devel pam-devel libxcb-devel zig xorg-x11-xauth xorg-x11-server brightnessctl
FreeBSD
# pkg install ca_root_nss libxcb git xorg xauth
Availability
Help
Ly has been tested with a variety of desktop environments and window managers, which you can find in the sections below:
welland environment
X11 environment
Logs are defined by /etc/ly/config.ini,
- session log is located
~/.local/state/ly-session.logAs a default. - system log is located
/var/log/ly.logAs a default.
build manually
The process for creating Ly manually is fairly standard:
$ git clone https://codeberg.org/fairyglade/ly.git
$ cd ly
$ zig build
After building, you can (optionally) test Ly in a terminal emulator, although authentication will occur No Work:
$ zig build run
Important: While you can also run Ly as root in a terminal emulator, this is
No Either recommended. If you want to test Ly properly, please enable its service (as described below) and reboot your machine.
The following sections show how to install Ly for a particular init system. Because the process is very similar for all of them, the commands will be detailed only for the first section (which is about SystemD).
Comment: All of the following sections will assume you are using LightDM for convenience.
systemd
Now, you can install Ly on your system:
# zig build installexe -Dinit_system=systemd
Comment: The init_system The parameter is optional and is the default systemd,
Note that you will also need to disable your current display manager. For example, if LightDM is the current display manager, you can execute the following command:
# systemctl disable lightdm.service
Then, similar to the previous command, you need to enable the Ly service:
# systemctl enable ly.service
Important: Because Ly runs in a TTY, you Sure Disable the TTY service that Ly will run on, otherwise bad things will happen. For example, disabling getty Spawning on TTY 2 (the default TTY on which Ly spawns), you need to execute the following command:
# systemctl disable getty@tty2.service
You can change whether TTY Ly will run by editing the corresponding service file for your platform.
openrc
# zig build installexe -Dinit_system=openrc
# rc-update del lightdm
# rc-update add ly
# rc-update del agetty.tty2
Comment: Exclusively on Gentoo, you can also Sure Comment the appropriate line for TTY in /etc/inittab.
run it
# zig build installexe -Dinit_system=runit
# rm /var/service/lightdm
# ln -s /etc/sv/ly /var/service/
# rm /var/service/agetty-tty2
s6
# zig build installexe -Dinit_system=s6
# s6-rc -d change lightdm
# s6-service add default ly-srv
# s6-db-reload
# s6-rc -u change ly-srv
To disable TTY 2, edit /etc/s6/config/tty2.conf and set SPAWN="no",
humbled
# zig build installexe -Dinit_system=dinit
# dinitctl disable lightdm
# dinitctl enable ly
To disable TTY 2, go to /etc/dinit.d/config/console.conf and modify
ACTIVE_CONSOLES,
sysvinit
# zig build installexe -Dinit_system=sysvinit
# update-rc.d lightdm disable
# update-rc.d ly defaults
To disable TTY 2, go to /etc/inittab and comment the line containing tty2,
FreeBSD
# zig build installexe -Dprefix_directory=/usr/local -Dconfig_directory=/usr/local/etc -Dinit_system=freebsd
# sysrc lightdm_enable="NO"
To enable Ly, add the following entry /etc/gettytab,
Ly:\
:lo=/usr/local/bin/ly_wrapper:\
:al=root:
Then, modify the command field of ttyv1 terminal entry /etc/ttys
(TTYs start at 0 in FreeBSD):
ttyv1 "/usr/libexec/getty Ly" xterm on secure
to update
You can also install Ly without overriding the current configuration file. it is called to updateTo update, just run:
# zig build installnoconf
Of course, you can still choose the init system of your choice when using this command.
layout
You can find all configurations in /etc/ly/config.iniThe file is fully commented, and contains default values,
Control
Use the up/down arrow keys to change the current field, and the left/right arrow keys to scroll to different fields (be it the information row, desktop environment, or username). The information line is where messages and errors are displayed.
A note on .xinitrc
if your .xinitrc If the file doesn’t work, make sure it’s executable and contains a shebang. This file is considered a shell script! quote from xinitMan page of:
If no specific client program is given on the command line, xinit will look for a file called .xinitrc in the user’s home directory to run as a shell script to start the client program.
A typical shebang for a shell script looks like this:
#!/bin/sh
suggestions
- The NumLock and CapsLock statuses are printed in the top-right corner.
- Use the F1 and F2 keys to shutdown and reboot respectively.
- take a look at yourself
.xsessionIf
Supported Wayland Environments
- rang
- cosmic
- Talking nonsense
- enlightenment
- Proverb
- hyperland
- KDE
- labwc
- pure
- pantheon
- sway
- weston
Supported X11 environments
- very nice
- bspwm
- rang
- cinnamon
- dwm
- enlightenment
- Proverb
- KDE
- leftism
- lxde
- partner
- Max
- pantheon
- qwm
- spectrum
- windowmaker
- xfce
- xmonad
a final note
The name “Lie” is a tribute to the fairy from the game Rayman. Ly was tested by Oxodao, who is truly an amazing person.
<a href