FyshOS / fin

A Fyne login manager for linux desktop computers
Other
27 stars 6 forks source link

Fin, the Fyne Login Manager

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 fin

You can then either reboot or start fin directly with:

$ systemctl start fin

That 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.

OpenBSD support

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/display_manager

To 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 fin

Reboot the system and Fin should start automatically during boot process.

Screenshot

The current version of fin looks like this:

Development

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.

Troubleshooting

Logging in Fails

Problem

When attempting to log in, authentication fails despite using the correct username and password.

Solution

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 display_manager module by copying the login one. It must be run as root: install -Dm00644 /etc/pam.d/login /etc/pam.d/display_manager

Audio Issues

Problem

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.

Solution

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.

Notifications No Longer Work

Problem

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.

Solution

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).