javalsai / lidm

A ✨fully✨ colorful customizable TUI display manager made in C for simplicity.
GNU General Public License v3.0
11 stars 4 forks source link
color colorful customizable dinit display-manager linux openrc rice runit s6 systemd

GitHub license GitHub branches Latest Release

LiDM

LiDM is a really light UI portion a unix login manager made in C, highly customizable and held together by hopes and prayers 🙏.

LiDM is like any X Display Manager you have seen such as SDDM or GDM but without using X org graphics, instead being a purely text based interface.

demo gif

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

Features

WIP

Index

Ideology

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.

stopchatcontrol

there's also a change.org post.

Usage

Arguments

If a single argument is provided (don't even do -- or standard parsing...), it passes that argument to chvt on startup, used (at least) by most service files.

Program

On top of pure intuition:

Requirements

Installation

Check the installation guide to use your preferred installation source.

Configuring

Copy any .ini file from themes/ (default.ini will always be updated) to /etc/lidm.ini and/or configure it to your liking. Also, don't place empty lines (for now). You can also set LIDM_CONF environment variable to specify a config path.

Configured colors are just gonna be put inside \x1b[...m, ofc you can add an 'm' to break this and this can f*ck up really bad or even make some nice UI effect possible, you should also be able to embed the \x1b byte in the config as I won't parse escape codes, I think that the parser is just gonna grab anything in the config file from the space after the = (yes, I'ma enforce that space, get good taste if you don't like it) until the newline, you can put any abomination in there. But please, keep in mind this might break easily.

The default fg style should disable decorators set up in other elements (cursive, underline... it's just adding 20 to the number btw, so if cursive is 4 (iirc), disabling it is 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.

Contributing

If you want to contribute check the CONTRIBUTING.md

Backstory

Summer travelling to visit family with an old laptop that barely supports x86_64, and ly recently added some avx2 instructions I think (invalid op codes), manually building (any previous commit too) didn't work because of something in the build.zig file, so out of boredom I decided to craft up my own simple display manager on the only language this thing can handle... C (I hate this and reserve the right for the rust rewrite, actually solid).

I spedrun it in roughly 3 days and I'm bad af in C, so this is spaghetti code on another level. I think it doesn't do almost anything unsafe, I mean, I didn't check allocations and it's capable of reallocating memory until your username uses all memory, crashing the system due to a off-by-one error, but pretty consistent otherwise (probably).

The name is just ly but changing "y" with "i", that had a reason but forgot it, (maybe the i in simple), so I remembered this sh*tty laptop with a lid, this thing is also a display manager (dm, ly command is also ly-dm), so just did lidm due to all that.

Contributors

GitHub Contributors