A minimal but good-looking login manager for Linux/Unix. The current boot scripts support only systemd on Linux and rc.d on OpenBSD.
If you'd like to try out this project in its early stages then you can simply check out this repo and run (Linux with systemd assumed):
$ make
$ sudo make install
$ systemctl disable display-manager
$ systemctl enable finYou can then either reboot or start fin directly with:
$ systemctl start finThat should be all you need if you are transitioning away from another Display Manager. If you run into issues using Fin, please visit Troubleshooting below.
Fin builds and runs under OpenBSD as well. Since OpenBSD uses BSD Auth instead of PAM, you will need to get the OpenPAM dependency first and set proper rules by running:
$ doas pkg_add -U openpam
$ doas install -Dm00644 /etc/pam.d/system /etc/pam.d/finTo run Fin under bare X on system boot, build and install it with commands as following. If you have some other display manager enabled, make sure you disable it first, so it doesn't conflict with Fin. Below we assume that you have got xenodm, and disable it explicitly:
$ make build
$ doas make install
$ doas rcctl disable xenodm
$ doas rcctl enable finReboot the system and Fin should start automatically during boot process.
The current version of fin looks like this:
The Fin login app can be tested easily by running as a normal
Fyne application (with go run .) or by running it within a
Xephyr window (we provide make embed to help).
Once you are ready to test as your display manager replacement,
you should execute make && sudo make install and restart the
fin service.
When attempting to log in, authentication fails despite using the correct username and password.
Fin, like most other Display Managers, makes use of PAM, the
Pluggable Authentication Module system. This requires the
appropriate rules be in place. The following snippet creates a
fin module by copying the login one. It must be
run as root:
install -Dm00644 /etc/pam.d/login /etc/pam.d/fin
I'm using PulseAudio, and I had sound before using startx.
Now, using Fin, PulseAudio doesn't recognize any of my
audio inputs or outputs. pavucontrol shows dummy sinks.
Fin uses bash --login to run your .xinitrc, and therefore
imposes stricter requirements than startx. Create an audio
group if it does not already exist, and add your user to it.
Log out and back in to reload the group list.
DBUS is not initialized properly in the .xinitrc you're using.
This is due to your XDG variables (which startx handles for
you) not being set properly. See
this issue for more
details.
Be sure your XDG variables are set, such as
export XDG_RUNTIME_DIR=/run/user/$(id -u) towards the top of
your .xinitrc. Failing to do so breaks dbus and as a result,
systemctl in user mode. Be sure your .xinitrc is compliant
with the recommendations of your distro, and properly sources
config files from /etc/X11/xinit/xinitrc.d (if applicable).