LiDM is a really light unix login manager made in C, highly customizable and held together by hopes and prayers 🙏.
LiDM is like any Display Manager you have seen such as SDDM or GDM but without using any X.org graphics at all. Instead being a purely text based interface inside your terminal/TTY.
shown as in a featured terminal emulator, actual linux console doesn't support as much color and decorations
however, all colors and strings are fully customizable
- Simple as C, you only need a C compiler and standard unix libraries to build this.
- Fully customizable, from strings, including action keys, to colors (I hope you know ansi escape codes)
- Automatically detects xorg and wayland sessions, plus allowing to launch the default user shell (if enabled in config)
- Starts with many init systems (systemd, dinit, runit, openrc and s6).
- LiDM
- Index
- Ideology
- Usage
- Requirements
- Installation
- Configuring
- Contributing
- Inspiration
- Contributors
We all know that the most important thing in a project is the ideology of the author and the movements he wants to support, so #stopchatcontrol.
there's also a change.org post.
If a single argument is provided (don't even do --
or standard unix parsing...), it switches to said tty number at startup. Used (at least) by most service files.
Base (mostly intuitive):
- Use arrow keys to navigate the inputs and type over any of them to override the default value.
- Enter will just attempt to login.
- If you are focused on an edited input, horizontal arrow keys will attempt to move across the text just as expected.
On top of that:
- Using the horizontal arrow keys if the focused input is not in text mode or the movement would overflow the input. It will try to change in such direction the option of session or the user.
- Pressing ESC and then horizontal arrows will force to change the option of the focused input even if it's in edit mode.
- Editing an option on a user or a shell session will put you in edit mode appending after the original value.
- Make (Also optional, but does things automatically, make sure
gcc
andmkdir -p
work as expected). - A compiler like
cc
,gcc
orclang
. Make sure to use the desiredCC=<compiler>
on themake
command. - PAM library, used for user authentication, just what
login
orsu
use internally. Don't worry, it's surely pre-installed.
Check the installation guide to use your preferred installation source.
Copy any .ini
file from themes/
(default.ini
will always be updated) to /etc/lidm.ini
and/or configure it to your liking. You can also set LIDM_CONF
environment variable to specify a config path.
The format attempts to mimic the TOML format. Escape sequences like \x1b
are allowed as well as comments and empty lines.
Colors are gonna be put inside \x1b[...m
, if you don't know what this is check an ANSI table. Mind that \x1b
is the same as \e
, \033
and several other representations.
Note
The default fg
style should disable decorators set up in other elements (cursive, underline...). It's just adding 20 to the number, so if an underline is 4, disabling it is done with 24.
Tip
If you don't like seeing an element, you can change the fg color of it to be the same as the bg, making it invisible.
If you want to contribute check the contribution guide.
This project was started after facing some issues building ly on an ancient laptop, the UI is heavily inspired by it.
For this reason the project's philosophy is to be simple and minimal, such that even prehistoric hardware is capable of running it.
I forgot what exactly the name came from, but it surely was a mix of a few things so:
- Obviously it's inspired by
ly
.ly-dm
leads to "lydm". - Wow make "lydm" simple with a "y" → "i" transformation.
- Associate it with the "i" in simple and other display managers like LightDM.
- And the laptop this project started in has a lid.
killertofus, deadvey, grialion, cerealexperiments_, antiz96, rmntgx and more...
With their big or small contributions, every commit has helped in its own way and encouraged me to keep putting my soul into this.
🌟 Finally, consider starring this repo or... 🔪