Coder Social home page Coder Social logo

ly's Introduction

Ly - a TUI display manager

Ly screenshot

Ly is a lightweight TUI (ncurses-like) display manager for Linux and BSD.

Dependencies

  • Compile-time:
    • zig 0.12.0
    • a C standard library
    • pam
    • xcb
  • Runtime (with default config):
    • xorg
    • xorg-xauth
    • mcookie
    • tput
    • shutdown

Debian

# apt install build-essential libpam0g-dev libxcb-xkb-dev

Fedora

Warning: You may encounter issues with SELinux on Fedora. It is recommended to add a rule for Ly as it currently does not ship one.

# dnf install kernel-devel pam-devel libxcb-devel

Support

The following desktop environments were tested with success:

  • awesome
  • bspwm
  • budgie
  • cinnamon
  • deepin
  • dwl
  • dwm
  • enlightenment
  • gnome
  • i3
  • kde
  • labwc
  • lxde
  • lxqt
  • mate
  • maxx
  • pantheon
  • qtile
  • spectrwm
  • sway
  • windowmaker
  • xfce
  • xmonad

Ly should work with any X desktop environment, and provides basic wayland support (sway works very well, for example).

systemd?

Unlike what you may have heard, Ly does not require systemd, and was even specifically designed not to depend on logind. You should be able to make it work easily with a better init, changing the source code won't be necessary :)

Cloning and Compiling

Clone the repository

$ git clone https://github.com/fairyglade/ly

Change the directory to ly

$ cd ly

Compile

$ zig build

Test in the configured tty (tty2 by default) or a terminal emulator (but desktop environments won't start)

# zig build run

Install Ly and the provided systemd service file

# zig build installsystemd

Enable the service

# systemctl enable ly.service

If you need to switch between ttys after Ly's start you also have to disable getty on Ly's tty to prevent "login" from spawning on top of it

# systemctl disable [email protected]

OpenRC

NOTE: On Gentoo, Ly will disable the display-manager-init service in order to run.

Clone, compile and test.

Install Ly and the provided OpenRC service

# zig build installopenrc

Enable the service

# rc-update add ly

You can edit which tty Ly will start on by editing the tty option in the configuration file.

If you choose a tty that already has a login/getty running (has a basic login prompt), then you have to disable getty, so it doesn't respawn on top of ly

# rc-update del agetty.tty2

runit

# zig build installrunit
# ln -s /etc/sv/ly /var/service/

By default, ly will run on tty2. To change the tty it must be set in /etc/ly/config.ini

You should as well disable your existing display manager service if needed, e.g.:

# rm /var/service/lxdm

The agetty service for the tty console where you are running ly should be disabled. For instance, if you are running ly on tty2 (that's the default, check your /etc/ly/config.ini) you should disable the agetty-tty2 service like this:

# rm /var/service/agetty-tty2

Updating

You can also install Ly without copying the system service and the configuration file. That's called updating. To update, simply run:

# zig build installnoconf

If you want to also copy the default config file (but still not the system service), run:

# zig build installexe

Arch Linux Installation

You can install ly from the [extra] repos:

$ sudo pacman -S ly

Configuration

You can find all the configuration in /etc/ly/config.ini. The file is commented, and includes the default values.

Controls

Use the up and down arrow keys to change the current field, and the left and right arrow keys to change the target desktop environment while on the desktop field (above the login field).

.xinitrc

If your .xinitrc doesn't work make sure it is executable and includes a shebang. This file is supposed to be a shell script! Quoting from xinit's man page:

If no specific client program is given on the command line, xinit will look for a file in the user's home directory called .xinitrc to run as a shell script to start up client programs.

On Arch Linux, the example .xinitrc (/etc/X11/xinit/xinitrc) starts like this:

#!/bin/sh

Tips

The numlock and capslock state is printed in the top-right corner. Use the F1 and F2 keys to respectively shutdown and reboot. Take a look at your .xsession if X doesn't start, as it can interfere (this file is launched with X to configure the display properly).

PSX DOOM fire animation

To enable the famous PSX DOOM fire described by Fabien Sanglard, just uncomment animate = true in /etc/ly/config.ini. You may also disable the main box borders with hide_borders = true.

Additional Information

The name "Ly" is a tribute to the fairy from the game Rayman. Ly was tested by oxodao, who is some seriously awesome dude.

Gentoo (OpenRC) installation tip

To avoid a console spawning on top on Ly, comment out the appropriate line from /etc/inittab (default is 2).

ly's People

Contributors

anerruption avatar anytimetraveler avatar bittin avatar brunorro avatar cavernosa avatar ericonr avatar gerardet46 avatar ivanhercaz avatar jakobrs avatar jakubhyza avatar k0-rr avatar kefoster951 avatar kinjalik avatar kpetrilli avatar kr1470r avatar llc0930 avatar mozartilize avatar nullgemm avatar rannyarcher avatar rasitds avatar sapphireamoeba5 avatar soulprudya avatar stalehyena avatar stlaz avatar systemraen avatar thearctesian avatar themadprofessor avatar trn1ty avatar usbashka avatar utkarshverma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ly's Issues

Segfault

Hi,

Got segfault again


-- The start-up result is RESULT.
Jun 17 14:08:47 red sudo[599]: pam_unix(sudo:session): session closed for user root
Jun 17 14:08:47 red kernel: ly[602]: segfault at 0 ip 0000560f6955aad1 sp 00007ffe4c935480 error 6 in ly[560f69556000+6000]
Jun 17 14:08:47 red systemd[1]: Started Process Core Dump (PID 603/UID 0).
-- Subject: Unit [email protected] has finished start-up
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit [email protected] has finished starting up.
-- 
-- The start-up result is RESULT.
Jun 17 14:08:48 red systemd[1]: ly.service: Main process exited, code=dumped, status=11/SEGV
Jun 17 14:08:48 red systemd[1]: ly.service: Failed with result 'core-dump'.
Jun 17 14:08:48 red systemd-coredump[604]: Process 602 (ly) of user 0 dumped core.
                                           
                                           Stack trace of thread 602:
                                           #0  0x0000560f6955aad1 n/a (ly)
                                           #1  0x0000560f6955ab71 n/a (ly)
                                           #2  0x0000560f6955a390 n/a (ly)
                                           #3  0x0000560f695594a4 n/a (ly)
                                           #4  0x00007f4c681af06b __libc_start_main (libc.so.6)
                                           #5  0x0000560f695581da n/a (ly)
-- Subject: Process 602 (ly) dumped core
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- Documentation: man:core(5)
-- 
-- Process 602 (ly) crashed and dumped core.
-- 
-- This usually indicates a programming error in the crashing program and
-- should be reported to its vendor as a bug

Cant run appropriate de

If i write i3 at top section and my login/pass it drops me to the shell (xinitrc launch like a charm if it's chmod u+x). Desktop file /usr/share/xsessions/i3.desktop exists (some times, pressing left/right arrows at top section just put OD, OC symbols), it looks wierd(in i3.desktop LY_XSESSION_EXEC and LY_XSESSION_NAME are same as in source, so get_props should work), but all is fine with xinitirc. My problem is solved, because I found that xinitrc should be executable.

not working for me :(

โ— ly.service - ly ncurses display manager
Loaded: loaded (/usr/lib/systemd/system/ly.service; enabled; vendor preset: disabled)
Active: failed (Result: core-dump) since Sat 2018-06-30 16:30:23 BST; 18min ago
Process: 6730 ExecStart=/usr/bin/ly (code=dumped, signal=SEGV)
Main PID: 6730 (code=dumped, signal=SEGV)

Jun 30 16:30:23 pluto systemd[1]: Started ly ncurses display manager.
Jun 30 16:30:23 pluto systemd[1]: ly.service: Main process exited, code=dumped, status=11/SEGV
Jun 30 16:30:23 pluto systemd[1]: ly.service: Failed with result 'core-dump'.

I'm not sure why it's not working? can you help please

After update to GNOME 3.30 unable to launch GNOME DE

After update to GNOME 3.30 unable to launch GNOME DE, but GNOME Classic runs.

When trying to launch GNOME screen flashes with some text for a split second then goes back to login screen

Linux epamrgos 4.18.8-arch1-1-ARCH #1 SMP PREEMPT Sat Sep 15 20:34:48 UTC 2018 x86_64 GNU/Linux

KDE

I'm having trouble getting KDE to launch via ly.

The Plasma shell shows up in the selection, but upon login, x spews some messages and then quits dumping me back at ly. I've tried putting startkde in .xinitrc, but it either fails or complains about dbus syncing.

Ideas?

Multiple environment variables are not being set when using Ly

Using Arch with i3-gaps.

As far as I can tell, the login process for Ly seems to be like an interactive, non-login shell, and so things like /etc/profile, /etc/profile.d, /etc/bash.bashrc, and my personal ~/.bash_profile are not being sourced or initialized in any way. This results in things like my LANG variable not being set as well as my PATH not being set correctly (for perl) because /etc/profile.d/locale.sh and /etc/profile.d/perlbin.sh are not being run.

I can get around these symptoms by sourcing /etc/profile directly in my .bashrc, but that is what I would personally consider to be a workaround? I don't know if pam has ways of setting this all correctly, I am not too familiar with it beyond a .pam_environment file.

Cannot Upgrade Ly-git

Hi, every time I try to update Ly to the newest version I have this error.


 ==> Avvio di pkgver() in corso...
==> ERRORE: pkgver is not allowed to contain colons, forward slashes, hyphens or whitespace.
==> ERRORE: pkgver() ha generato una versione non valida: 0.2-2-g7557e0f
Error making: ly-git

Package: ly-git
OS: Arch Linux
Kernel: 4.18.9-arch1-1-ARCH

Add visual indicators changing sessions

Currently the environment selection field has no indicator that it has multiple options to choose from. Maybe just add <> around the selected session to indicate that the options can be browed with arrow keys?

stucks when power plug insertion ACPI event happens

The following string is printed on the screen and then ly freezes.
[ 9910.556531 ] acpi INT3400:00: Unsupported event [ 0x86 ]

Then the only way to make ly work again is to restart the relative unit via another tty.
Other events also write on the screen but doesn't affect ly.

systemctl enable ly.service failed

[root@arch ly]# systemctl enable ly.service
Failed to enable unit: File /etc/systemd/system/display-manager.service already exists and is a symlink to /usr/lib/systemd/system/gdm.service.

Config File

Instead of having to recompile everytime you want to change a setting, ly could have a config file that you can change settings without recompiling.

This would be useful when ly has more options, which seems likely if this project keeps being developed ;)

Suppress xinitrc output to tty

I normally just typed startx into the tty to start my DE. But now since I use ly I wanted to make it look a little bit smoother. Is it somehow possible to make ly not output to the tty when starting using xinitrc?

I'm not sure if this has something to do with my xinitrc or not. I run the following to start i3: exec i3 > /dev/null 2>&1

Ly doesn't execute the DE you tell it to

For some reason, the DE selection box is all sorts of funky on my end.

When first starting Ly (or after wiping ly.save) it defaults to 'shell' as expected.
However, if I then start to scroll through the selection box, I can't ever get back to 'shell' again; meaning it only cycles through xinitrc and my installed DEs, dropping 'shell' from the list completely. This doesn't seem intentional to me.

But the real issue (which is mentioned in the title) comes right after starting a DE and going back to Ly; because then it starts to run completely different DEs from what I selected; So for example, when I tell it to load xinitrc, it drops me into a shell session. If I instead tell it to run Openbox, it runs xinitrc.

My best guess is that the ncurses selection box somehow looses sync with the delist_t underneath (or something like that). It appears that this behaviour carries across reboots through ly.save.

I should also mention that I did modify Ly slightly, but only in ways not relevant to this issue.
Specifically, I botched it so it would determine the current tty through ttyname rather than enforcing LY_CONSOLE_TTY.
Oh, and I also added a break in a switch case in login.c where it really seemed like an oversight not to have one ...

Just to be save, here's the diff:
diff.txt

About releases

Hello,

Do you plan to do some kind of releases ? There is this v0.0.1 in the readme but no associated tag.
I tend to package everything: it would make things easier :-)

[Solved] X.org fails to start when using xinitrc

According to the issue dunst-project/dunst#347 I need to add systemctl --user import-environment DISPLAY to the .xinitrc of the user in order to correctly start dunst dbus service and use it.
But ly fails to start x (gets stuck on a black screen) when this environment variable is added to the xinitrc.
Is there any workaround possible to make it work?

Unable to navigate away from shell selection

When I configure ly on an Ubuntu 16.04 system, I am unable to return the cursor to the username field when I switch the shell from "console" to anything. Filling out both username and password then switching to the shell field, I'm unable to submit the form (enter).

Sway support

Just started using this, and would love to see sway support ^^,

default configuration causes segfault on out-of-the-box systems

at ncui.c:44 we call fopen then immediately fclose the returned handler. The default location for the file is /etc/ly/ly.save. The /etc/ly directory doesn't exist unless it is manually created beforehand. If /etc/ly is not previously created, the call to fopen will return a null file handler, which causes a segfault in the subsequent fclose.

I propose either the default location for ly.save is changed to a location that exists by default, or instructions are added to the README to explicitly create /etc/ly beforehand or manually change that config option.

Ly doesnt appear

Hi,
I've installed ly from git, and enabled the systemd file, but no login manager appears.

systemctl status shows

ly.service - ly ncurses display manager
   Loaded: loaded (/usr/lib/systemd/system/ly.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Thu 2017-09-14 11:13:43 BST; 2min 23s ago
  Process: 841 ExecStart=/usr/bin/ly (code=killed, signal=HUP)
 Main PID: 841 (code=killed, signal=HUP)

Sep 14 11:13:43 helios systemd[1]: Started ly ncurses display manager.

checked tty2 (default) along with the other tty's.

Ability to customize the UI.

Do you think it would be possible to add the ability to customize the UI from the configuration somehow? And would you be interested in such a feature?

Why I'm asking is that I'm really interested in using ly but I'd like it to have a more simple look. To be exact, I always liked how the TTY logins looked, it always felt kinda soothing to me (before being dumped into the compared noisy DEs). I could of course change the code to recreate such a look and feel, but it might be more worthwhile to add such a capability to ly in general. Though, I'm not sure whether you'd like such a feature or if it would be worth the effort.

Possibly logged in as sudo

Hey, this is really cool and I got it mostly working!
I installed it from the AUR, ran sudo systemctl enable ly.service and it appeared to work perfectly.

However, I noticed that I cannot directly run things in ~/bin, despite ~/bin being in $PATH. whoami outputs the expected user 'm'.

If I touch test and ls -al test then I get:
-rw-r--r-- 1 m m 0 Jul 24 21:35 test.

If I do su m then I can run things in ~/bin directly.

Is there some point in the login process or ly setup that could be responsible for this?
Thanks again for a great package.

Gentoo / OpenRC Support

Having support for OpenRC would be nice.
I will make a PR later with OpenRC compatibility and maybe even a ebuild for it in my overlay.

linux-pam block root login?

Hi! I am creating a custom amd64 kali ISO with fluxbox and ly. After installation, i had this error:
Pam Transaction Aborted.
After reading all issues, i changed lib path link from /usr/lib/security/pam_loginuid.so to /usr/lib/x86_64-linux-gnu/security/pam_loginuid. Howerver, This issue still showed.
After creating an account (test:test), I found out i can login as non-root user.
Am I missing something? I cloned and did every step in README.md file. I also searched "linux pam login user" but there is no useful thing.

make it work with kmscon as the console!

kmscon is dead, granted, but it is functional...

kmscon can replace kernel's VT and ly actually looks great on kmscon.

the way i have been testing so far has been to replace agetty with kmscon and login with ly. here is my override.conf for [email protected]

[Service]
ExecStart=
ExecStart=/usr/bin/kmscon -v --hwaccel --drm "--gpus=all" "--vt=%I" --no-switchvt --login -- /usr/bin/ly

this might require ly to be able to parse command line options and so on, in particular for passing VT to ly.

XFCE not launching

I myself dont use a Display Manager. Love the CLI login and manually starting the xserver.
One day I was surfing GitHub and suddenly came to know about Ly. Looked cool and wanted to try.

As of now, I have Ly installed and Ly is launching at login. but my XFCE session is not starting after login.
Ly sits idly after successful login and nothing launches. I have move to another tty, then login and start the x server.

Any ideas on why it is not launching the xfce session?

PS : I don't know that much about xserver and it's configurations. It's very confusing.. :-P

Locales Support

Hello there,
I would like to see different keyboard-layout choose-possibility in u'r next releases.

Kde plasma wont log in

I love ly so much on my laptop with xfce but on my new desktop Arch install with KDE Plasma it kept shoving me back to login saying "Logoff" at the ly screen, i thought it was my video drivers but LightDM worked instantly.

"Pam Transaction Aborted"

Not sure what I am doing wrong. Everything comes up as it should. When it fails on that tty, I can switch to another and login. Any idea what I'm missing?

segfault (Ubuntu 16.04.3 LTS)

I am using the makefile from "pam_loginuid.so can't be found, even though it exists. (Ubuntu)" but after compilation, i try to run ly and it exits.

journalctl -xe reveals the following:

Sep 18 01:59:17 VM kernel: ly[8536]: segfault at 0 ip 00000000004029ff sp 00007fff870a0d70 error 6 in ly[400000+6000]

Add --version argument.

Have a --version arg that outputs the current version (or git commit) to stdout and exits.
You don't need to use getopt for this, just iterate over argv.

Problems with starting xorg

All xorg based options seem to fail when using ly. It seems to be some kind of permissions issue:

xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)

The issue happens only with ly, manual startx and other displaymanagers seem to work fine. Logging into console with ly also works.

Using the version packaged in AUR:

https://aur.archlinux.org/packages/ly-git

Makefile doesn't build on ARM

I noticed that the AUR package has only x86 arch specified, but is there any specific reason for this?

I got this while trying to build for aarch64.

cc1: error: bad value ('armv8-a') for '-march=' switch
cc1: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 bonnell atom silvermont slm knl x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 btver1 btver2

Musl libc Compilation issue

src/login.c: In function 'init_env':
src/login.c:125:44: error: '_PATH_MAILDIR' undeclared (first use in this function)
  len = snprintf(tmp, sizeof(tmp), "%s/%s", _PATH_MAILDIR, pw->pw_name);
                                            ^~~~~~~~~~~~~
src/login.c:125:44: note: each undeclared identifier is reported only once for each function it appears in
make: *** [makefile:33: obj/src/login.o] Error 1

Musl seems to have paths.h but does not actually use it (?).

https://www.openwall.com/lists/musl/2014/03/29/5

Undefined reference to *

compiling build/ly
obj/login.o: In function start_env': /home/oj/Downloads/Gits/ly/src/login.c:112: undefined reference to pam_start'
/home/oj/Downloads/Gits/ly/src/login.c:132: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:137: undefined reference to pam_authenticate'
/home/oj/Downloads/Gits/ly/src/login.c:169: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:174: undefined reference to pam_acct_mgmt'
/home/oj/Downloads/Gits/ly/src/login.c:205: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:216: undefined reference to pam_end'
/home/oj/Downloads/Gits/ly/src/login.c:225: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:230: undefined reference to pam_setcred'
/home/oj/Downloads/Gits/ly/src/login.c:265: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:270: undefined reference to pam_open_session'
/home/oj/Downloads/Gits/ly/src/login.c:274: undefined reference to pam_setcred' /home/oj/Downloads/Gits/ly/src/login.c:307: undefined reference to pam_end'
/home/oj/Downloads/Gits/ly/src/login.c:318: undefined reference to def_prog_mode' /home/oj/Downloads/Gits/ly/src/login.c:319: undefined reference to endwin'
/home/oj/Downloads/Gits/ly/src/login.c:330: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:341: undefined reference to pam_end'
/home/oj/Downloads/Gits/ly/src/login.c:349: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:379: undefined reference to pam_close_session'
/home/oj/Downloads/Gits/ly/src/login.c:399: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:404: undefined reference to pam_setcred'
/home/oj/Downloads/Gits/ly/src/login.c:439: undefined reference to pam_end' /home/oj/Downloads/Gits/ly/src/login.c:444: undefined reference to pam_end'
/home/oj/Downloads/Gits/ly/src/login.c:449: undefined reference to stdscr' /home/oj/Downloads/Gits/ly/src/login.c:449: undefined reference to wrefresh'
/home/oj/Downloads/Gits/ly/src/login.c:454: undefined reference to stdscr' /home/oj/Downloads/Gits/ly/src/login.c:454: undefined reference to wrefresh'
obj/login.o: In function init_env': /home/oj/Downloads/Gits/ly/src/login.c:582: undefined reference to pam_getenvlist'
obj/main.o: In function main': /home/oj/Downloads/Gits/ly/src/main.c:89: undefined reference to form_driver'
/home/oj/Downloads/Gits/ly/src/main.c:91: undefined reference to set_current_field' /home/oj/Downloads/Gits/ly/src/main.c:92: undefined reference to form_driver'
/home/oj/Downloads/Gits/ly/src/main.c:96: undefined reference to current_field' /home/oj/Downloads/Gits/ly/src/main.c:104: undefined reference to form_driver'
/home/oj/Downloads/Gits/ly/src/main.c:111: undefined reference to field_buffer' /home/oj/Downloads/Gits/ly/src/main.c:112: undefined reference to field_buffer'
/home/oj/Downloads/Gits/ly/src/main.c:127: undefined reference to set_field_buffer' /home/oj/Downloads/Gits/ly/src/main.c:148: undefined reference to set_current_field'
/home/oj/Downloads/Gits/ly/src/main.c:154: undefined reference to form_driver' /home/oj/Downloads/Gits/ly/src/main.c:155: undefined reference to form_driver'
/home/oj/Downloads/Gits/ly/src/main.c:160: undefined reference to form_driver' /home/oj/Downloads/Gits/ly/src/main.c:161: undefined reference to form_driver'
/home/oj/Downloads/Gits/ly/src/main.c:168: undefined reference to form_driver' obj/main.o:/home/oj/Downloads/Gits/ly/src/main.c:172: more undefined references to form_driver' follow
obj/main.o: In function main': /home/oj/Downloads/Gits/ly/src/main.c:202: undefined reference to endwin'
/home/oj/Downloads/Gits/ly/src/main.c:209: undefined reference to endwin' /home/oj/Downloads/Gits/ly/src/main.c:215: undefined reference to form_driver'
/home/oj/Downloads/Gits/ly/src/main.c:94: undefined reference to wgetch' /home/oj/Downloads/Gits/ly/src/main.c:224: undefined reference to endwin'
obj/ncui.o: In function init_ncurses': /home/oj/Downloads/Gits/ly/src/ncui.c:32: undefined reference to initscr'
/home/oj/Downloads/Gits/ly/src/ncui.c:33: undefined reference to raw' /home/oj/Downloads/Gits/ly/src/ncui.c:34: undefined reference to noecho'
obj/ncui.o: In function init_form': /home/oj/Downloads/Gits/ly/src/ncui.c:72: undefined reference to new_field'
/home/oj/Downloads/Gits/ly/src/ncui.c:76: undefined reference to set_field_buffer' /home/oj/Downloads/Gits/ly/src/ncui.c:77: undefined reference to set_field_opts'
/home/oj/Downloads/Gits/ly/src/ncui.c:80: undefined reference to new_field' /home/oj/Downloads/Gits/ly/src/ncui.c:81: undefined reference to TYPE_ENUM'
/home/oj/Downloads/Gits/ly/src/ncui.c:81: undefined reference to set_field_type' /home/oj/Downloads/Gits/ly/src/ncui.c:85: undefined reference to set_field_buffer'
/home/oj/Downloads/Gits/ly/src/ncui.c:90: undefined reference to set_field_buffer' /home/oj/Downloads/Gits/ly/src/ncui.c:94: undefined reference to set_field_opts'
/home/oj/Downloads/Gits/ly/src/ncui.c:98: undefined reference to new_field' /home/oj/Downloads/Gits/ly/src/ncui.c:99: undefined reference to set_field_buffer'
/home/oj/Downloads/Gits/ly/src/ncui.c:100: undefined reference to set_field_opts' /home/oj/Downloads/Gits/ly/src/ncui.c:103: undefined reference to new_field'
/home/oj/Downloads/Gits/ly/src/ncui.c:104: undefined reference to set_field_buffer' /home/oj/Downloads/Gits/ly/src/ncui.c:105: undefined reference to set_field_opts'
/home/oj/Downloads/Gits/ly/src/ncui.c:108: undefined reference to new_field' /home/oj/Downloads/Gits/ly/src/ncui.c:112: undefined reference to set_field_buffer'
/home/oj/Downloads/Gits/ly/src/ncui.c:115: undefined reference to set_field_opts' /home/oj/Downloads/Gits/ly/src/ncui.c:119: undefined reference to new_field'
/home/oj/Downloads/Gits/ly/src/ncui.c:120: undefined reference to set_field_buffer' /home/oj/Downloads/Gits/ly/src/ncui.c:121: undefined reference to set_field_opts'
/home/oj/Downloads/Gits/ly/src/ncui.c:124: undefined reference to new_field' /home/oj/Downloads/Gits/ly/src/ncui.c:125: undefined reference to set_field_opts'
/home/oj/Downloads/Gits/ly/src/ncui.c:130: undefined reference to new_form' /home/oj/Downloads/Gits/ly/src/ncui.c:131: undefined reference to form_opts_off'
/home/oj/Downloads/Gits/ly/src/ncui.c:132: undefined reference to scale_form' obj/ncui.o: In function init_win':
/home/oj/Downloads/Gits/ly/src/ncui.c:140: undefined reference to stdscr' /home/oj/Downloads/Gits/ly/src/ncui.c:140: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/ncui.c:140: undefined reference to stdscr' /home/oj/Downloads/Gits/ly/src/ncui.c:140: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/ncui.c:148: undefined reference to newwin' /home/oj/Downloads/Gits/ly/src/ncui.c:150: undefined reference to keypad'
obj/ncui.o: In function init_scene': /home/oj/Downloads/Gits/ly/src/ncui.c:155: undefined reference to set_form_win'
/home/oj/Downloads/Gits/ly/src/ncui.c:156: undefined reference to derwin' /home/oj/Downloads/Gits/ly/src/ncui.c:156: undefined reference to set_form_sub'
obj/ncui.o: In function init_draw': /home/oj/Downloads/Gits/ly/src/ncui.c:165: undefined reference to wborder'
/home/oj/Downloads/Gits/ly/src/ncui.c:172: undefined reference to mvprintw' /home/oj/Downloads/Gits/ly/src/ncui.c:174: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/ncui.c:174: undefined reference to wrefresh' /home/oj/Downloads/Gits/ly/src/ncui.c:176: undefined reference to post_form'
/home/oj/Downloads/Gits/ly/src/ncui.c:178: undefined reference to wrefresh' obj/ncui.o: In function end_form':
/home/oj/Downloads/Gits/ly/src/ncui.c:184: undefined reference to unpost_form' /home/oj/Downloads/Gits/ly/src/ncui.c:185: undefined reference to free_form'
/home/oj/Downloads/Gits/ly/src/ncui.c:186: undefined reference to free_field' /home/oj/Downloads/Gits/ly/src/ncui.c:187: undefined reference to free_field'
/home/oj/Downloads/Gits/ly/src/ncui.c:188: undefined reference to free_field' /home/oj/Downloads/Gits/ly/src/ncui.c:189: undefined reference to free_field'
/home/oj/Downloads/Gits/ly/src/ncui.c:190: undefined reference to free_field' obj/ncui.o:/home/oj/Downloads/Gits/ly/src/ncui.c:191: more undefined references to free_field' follow
obj/utils.o: In function error_init': /home/oj/Downloads/Gits/ly/src/utils.c:118: undefined reference to mvwprintw'
/home/oj/Downloads/Gits/ly/src/utils.c:119: undefined reference to mvwprintw' obj/utils.o: In function get_curses_char':
/home/oj/Downloads/Gits/ly/src/utils.c:130: undefined reference to newscr' /home/oj/Downloads/Gits/ly/src/utils.c:130: undefined reference to wmove'
/home/oj/Downloads/Gits/ly/src/utils.c:130: undefined reference to newscr' /home/oj/Downloads/Gits/ly/src/utils.c:130: undefined reference to winch'
obj/utils.o: In function cascade': /home/oj/Downloads/Gits/ly/src/utils.c:149: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/utils.c:149: undefined reference to stdscr' /home/oj/Downloads/Gits/ly/src/utils.c:149: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/utils.c:149: undefined reference to stdscr' /home/oj/Downloads/Gits/ly/src/utils.c:180: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/utils.c:180: undefined reference to wmove' /home/oj/Downloads/Gits/ly/src/utils.c:180: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/utils.c:180: undefined reference to waddch' /home/oj/Downloads/Gits/ly/src/utils.c:181: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/utils.c:181: undefined reference to wmove' /home/oj/Downloads/Gits/ly/src/utils.c:181: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/utils.c:181: undefined reference to waddch' /home/oj/Downloads/Gits/ly/src/utils.c:185: undefined reference to stdscr'
/home/oj/Downloads/Gits/ly/src/utils.c:185: undefined reference to `wrefresh'
collect2: error: ld returned 1 exit status
makefile:45: recipe for target 'build/ly' failed
make: *** [build/ly] Error 1

Im assuming that they are due to faulty dependencies but I have no idea as to what causes it

pam_loginuid.so can't be found, even though it exists. (Ubuntu)

On Ubuntu based systems the makefile can't seem to find pam_loginuid.so. Even though it exists as /lib/x86_64-linux-gnu/security/pam_loginuid.so. Was wondering how this would be fixed.

Full build output:

mkdir -p ./build
cc -std=c99 -pedantic -Wall -I src -L/usr/lib/security -lform -lncurses -lpam -lpam_misc -lX11 -l:pam_loginuid.so -o build/ly src/main.c src/utils.c src/login.c src/ncui.c src/desktop.c
/usr/bin/ld: cannot find -l:pam_loginuid.so
collect2: error: ld returned 1 exit status
makefile:2: recipe for target 'build/ly' failed
make: *** [build/ly] Error 1

Service Message Popups

If you don't have a Service that is always the last to lounch Service messages will still popup over ly.

I will look for a solution myself but as I don't have any experience in c it could take time.

desktop environment

How do we set the desktop environment? I have tried messing with several settings but Ly is neither autodetecting nor responding to any changes I make to the config/lang/etc files to adjust the wm. I am using i3 for my wm.

edit: just wanted to add that I think this is the most beautifully minimalist login manager i have ever seen

Decouple from systemd?

I am using a distro where systemd is purposefully stripped of. Is it hard to remove the systemd dependency?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.