lemurs/README.md

84 lines
2.7 KiB
Markdown
Raw Normal View History

2021-12-28 22:09:22 +00:00
<div align="center">
2021-12-28 22:10:56 +00:00
# Lemurs 🐒
2021-12-28 22:09:22 +00:00
A TUI Display/Login Manager written in Rust
2021-12-28 21:56:14 +00:00
</div>
2021-12-31 18:48:24 +00:00
![Cover image](./cover.png)
Next version (#42) * Add maximum width option to input fields (#41) * Add maximum width option to input fields * Format input field code * Fix crash when no graphical environment is specified (#43) * Catch errors in shutdown and reboot scripts (#45) * Set PWD upon logging in (#48) * Set PWD upon logging in * Fix formatting * Load the /etc/lemurs/config.toml file (#49) * Load the /etc/lemurs/config.toml file * Formatting config.rs * Load the /etc/lemurs/config.toml file * Isolate and improve environment variables (#53) Add the XDG environment variables and isolate the setting of environment variables to their own module. The TTY is now also settable from the `config.toml`. * Add an option to remember the username from the last login (#55) * Add option to remember the username in /var/cache * Formatting * Remove mouse capture (#56) * Improve install script (#58) * Change configuration to extend default configuration (#57) * Change configuration to extend default configuration * Formatting * Remove test workflow * Massively cleanup, small improvements and improve the logging (#60) - Log path moved from `/tmp/lemurs.log` to `/var/log/lemurs.log` - Add the `--no-log` flag - Move the preview log file from `out.log` to `lemurs.log` - Handle tty switching errors - Change name config section `wm_selector` to `environment_switcher` - Change the pam service used from `login` to `system-login` - Separate all authentication and environment starting logic from the UI logic - Properly handle X starting errors - Create an event handling thread so that status messages can now be displayed while processing * Properly set groups when logging in with X (#72) * Fix installation file * Remove creation of Xauthority file * Dynamically wait for X to start * Add feature(set_groups) * Change back to 'login' auth * Update Cargo.lock * Update README.md file * Version bump * Remove unused code * Remove unwraps * Update Cargo.lock * Fix shared state and InputField * Fix input box * Clippy warnings * Make waiting dependent on time instead of loop count
2022-07-30 17:41:41 +00:00
> Note: the project is installable and working, but there might still be some
> limitations.
2021-12-28 21:56:14 +00:00
Next version (#42) * Add maximum width option to input fields (#41) * Add maximum width option to input fields * Format input field code * Fix crash when no graphical environment is specified (#43) * Catch errors in shutdown and reboot scripts (#45) * Set PWD upon logging in (#48) * Set PWD upon logging in * Fix formatting * Load the /etc/lemurs/config.toml file (#49) * Load the /etc/lemurs/config.toml file * Formatting config.rs * Load the /etc/lemurs/config.toml file * Isolate and improve environment variables (#53) Add the XDG environment variables and isolate the setting of environment variables to their own module. The TTY is now also settable from the `config.toml`. * Add an option to remember the username from the last login (#55) * Add option to remember the username in /var/cache * Formatting * Remove mouse capture (#56) * Improve install script (#58) * Change configuration to extend default configuration (#57) * Change configuration to extend default configuration * Formatting * Remove test workflow * Massively cleanup, small improvements and improve the logging (#60) - Log path moved from `/tmp/lemurs.log` to `/var/log/lemurs.log` - Add the `--no-log` flag - Move the preview log file from `out.log` to `lemurs.log` - Handle tty switching errors - Change name config section `wm_selector` to `environment_switcher` - Change the pam service used from `login` to `system-login` - Separate all authentication and environment starting logic from the UI logic - Properly handle X starting errors - Create an event handling thread so that status messages can now be displayed while processing * Properly set groups when logging in with X (#72) * Fix installation file * Remove creation of Xauthority file * Dynamically wait for X to start * Add feature(set_groups) * Change back to 'login' auth * Update Cargo.lock * Update README.md file * Version bump * Remove unused code * Remove unwraps * Update Cargo.lock * Fix shared state and InputField * Fix input box * Clippy warnings * Make waiting dependent on time instead of loop count
2022-07-30 17:41:41 +00:00
A minimal TUI [Display Manager/Login
2021-12-28 21:56:14 +00:00
Manager](https://wiki.archlinux.org/title/Display_manager) written in Rust
2021-12-28 22:18:22 +00:00
similar to [Ly](https://github.com/nullgemm/ly).
## Goal
2021-12-31 19:05:45 +00:00
The goal of this project is to create a small, robust and yet customizable
Next version (#42) * Add maximum width option to input fields (#41) * Add maximum width option to input fields * Format input field code * Fix crash when no graphical environment is specified (#43) * Catch errors in shutdown and reboot scripts (#45) * Set PWD upon logging in (#48) * Set PWD upon logging in * Fix formatting * Load the /etc/lemurs/config.toml file (#49) * Load the /etc/lemurs/config.toml file * Formatting config.rs * Load the /etc/lemurs/config.toml file * Isolate and improve environment variables (#53) Add the XDG environment variables and isolate the setting of environment variables to their own module. The TTY is now also settable from the `config.toml`. * Add an option to remember the username from the last login (#55) * Add option to remember the username in /var/cache * Formatting * Remove mouse capture (#56) * Improve install script (#58) * Change configuration to extend default configuration (#57) * Change configuration to extend default configuration * Formatting * Remove test workflow * Massively cleanup, small improvements and improve the logging (#60) - Log path moved from `/tmp/lemurs.log` to `/var/log/lemurs.log` - Add the `--no-log` flag - Move the preview log file from `out.log` to `lemurs.log` - Handle tty switching errors - Change name config section `wm_selector` to `environment_switcher` - Change the pam service used from `login` to `system-login` - Separate all authentication and environment starting logic from the UI logic - Properly handle X starting errors - Create an event handling thread so that status messages can now be displayed while processing * Properly set groups when logging in with X (#72) * Fix installation file * Remove creation of Xauthority file * Dynamically wait for X to start * Add feature(set_groups) * Change back to 'login' auth * Update Cargo.lock * Update README.md file * Version bump * Remove unused code * Remove unwraps * Update Cargo.lock * Fix shared state and InputField * Fix input box * Clippy warnings * Make waiting dependent on time instead of loop count
2022-07-30 17:41:41 +00:00
Login Manager which can serve as the front-end to your graphical GNU/Linux.
Lemurs uses Linux PAM as its method of authentication.
2021-12-28 22:18:22 +00:00
## Installation
2021-12-31 19:02:53 +00:00
The `install.sh` script can be used to compile and setup the display manager on
your Unix machine. This will perform multiple steps:
Next version (#42) * Add maximum width option to input fields (#41) * Add maximum width option to input fields * Format input field code * Fix crash when no graphical environment is specified (#43) * Catch errors in shutdown and reboot scripts (#45) * Set PWD upon logging in (#48) * Set PWD upon logging in * Fix formatting * Load the /etc/lemurs/config.toml file (#49) * Load the /etc/lemurs/config.toml file * Formatting config.rs * Load the /etc/lemurs/config.toml file * Isolate and improve environment variables (#53) Add the XDG environment variables and isolate the setting of environment variables to their own module. The TTY is now also settable from the `config.toml`. * Add an option to remember the username from the last login (#55) * Add option to remember the username in /var/cache * Formatting * Remove mouse capture (#56) * Improve install script (#58) * Change configuration to extend default configuration (#57) * Change configuration to extend default configuration * Formatting * Remove test workflow * Massively cleanup, small improvements and improve the logging (#60) - Log path moved from `/tmp/lemurs.log` to `/var/log/lemurs.log` - Add the `--no-log` flag - Move the preview log file from `out.log` to `lemurs.log` - Handle tty switching errors - Change name config section `wm_selector` to `environment_switcher` - Change the pam service used from `login` to `system-login` - Separate all authentication and environment starting logic from the UI logic - Properly handle X starting errors - Create an event handling thread so that status messages can now be displayed while processing * Properly set groups when logging in with X (#72) * Fix installation file * Remove creation of Xauthority file * Dynamically wait for X to start * Add feature(set_groups) * Change back to 'login' auth * Update Cargo.lock * Update README.md file * Version bump * Remove unused code * Remove unwraps * Update Cargo.lock * Fix shared state and InputField * Fix input box * Clippy warnings * Make waiting dependent on time instead of loop count
2022-07-30 17:41:41 +00:00
1. Build the project in release mode (requires Rust's _cargo_)
2021-12-31 19:02:53 +00:00
2. Setup the `/etc/lemurs` folder which contains some of the configuration and
necessary files such as your selection of window managers.
3. Disables the previous Display Manager
Next version (#42) * Add maximum width option to input fields (#41) * Add maximum width option to input fields * Format input field code * Fix crash when no graphical environment is specified (#43) * Catch errors in shutdown and reboot scripts (#45) * Set PWD upon logging in (#48) * Set PWD upon logging in * Fix formatting * Load the /etc/lemurs/config.toml file (#49) * Load the /etc/lemurs/config.toml file * Formatting config.rs * Load the /etc/lemurs/config.toml file * Isolate and improve environment variables (#53) Add the XDG environment variables and isolate the setting of environment variables to their own module. The TTY is now also settable from the `config.toml`. * Add an option to remember the username from the last login (#55) * Add option to remember the username in /var/cache * Formatting * Remove mouse capture (#56) * Improve install script (#58) * Change configuration to extend default configuration (#57) * Change configuration to extend default configuration * Formatting * Remove test workflow * Massively cleanup, small improvements and improve the logging (#60) - Log path moved from `/tmp/lemurs.log` to `/var/log/lemurs.log` - Add the `--no-log` flag - Move the preview log file from `out.log` to `lemurs.log` - Handle tty switching errors - Change name config section `wm_selector` to `environment_switcher` - Change the pam service used from `login` to `system-login` - Separate all authentication and environment starting logic from the UI logic - Properly handle X starting errors - Create an event handling thread so that status messages can now be displayed while processing * Properly set groups when logging in with X (#72) * Fix installation file * Remove creation of Xauthority file * Dynamically wait for X to start * Add feature(set_groups) * Change back to 'login' auth * Update Cargo.lock * Update README.md file * Version bump * Remove unused code * Remove unwraps * Update Cargo.lock * Fix shared state and InputField * Fix input box * Clippy warnings * Make waiting dependent on time instead of loop count
2022-07-30 17:41:41 +00:00
4. Copy over the _systemd_ service and enables it.
2021-12-31 19:05:45 +00:00
2021-12-31 19:13:23 +00:00
Although you might first want to set up some window managers (see
[Usage](#Usage)), upon rebooting you should now see Lemurs.
## Usage
After running the installation script you can add your window managers by
creating runnable scripts also known as
[xinitrc](https://wiki.archlinux.org/title/Xinit)s under the `/etc/lemurs/wms`
folders. The name of the script is used as the name within lemurs. For example,
for the [bspwm](https://github.com/baskerville/bspwm) window manager, you might
add the script `/etc/lemurs/wms/bspwm`.
```bash
#! /bin/sh
sxhkd &
exec bspwm
```
Remember to make this script runnable. This is done with the `chmod +x
/etc/lemurs/wms/bspwm` command.
2022-07-30 17:45:24 +00:00
Upon rebooting your new `bspwm` should show up within Lemurs.
2021-12-31 19:13:23 +00:00
2022-01-05 20:07:36 +00:00
## Configuration
2022-01-05 18:58:43 +00:00
Many parts for the UI can be configured with the `/etc/lemurs/config.toml`
Next version (#42) * Add maximum width option to input fields (#41) * Add maximum width option to input fields * Format input field code * Fix crash when no graphical environment is specified (#43) * Catch errors in shutdown and reboot scripts (#45) * Set PWD upon logging in (#48) * Set PWD upon logging in * Fix formatting * Load the /etc/lemurs/config.toml file (#49) * Load the /etc/lemurs/config.toml file * Formatting config.rs * Load the /etc/lemurs/config.toml file * Isolate and improve environment variables (#53) Add the XDG environment variables and isolate the setting of environment variables to their own module. The TTY is now also settable from the `config.toml`. * Add an option to remember the username from the last login (#55) * Add option to remember the username in /var/cache * Formatting * Remove mouse capture (#56) * Improve install script (#58) * Change configuration to extend default configuration (#57) * Change configuration to extend default configuration * Formatting * Remove test workflow * Massively cleanup, small improvements and improve the logging (#60) - Log path moved from `/tmp/lemurs.log` to `/var/log/lemurs.log` - Add the `--no-log` flag - Move the preview log file from `out.log` to `lemurs.log` - Handle tty switching errors - Change name config section `wm_selector` to `environment_switcher` - Change the pam service used from `login` to `system-login` - Separate all authentication and environment starting logic from the UI logic - Properly handle X starting errors - Create an event handling thread so that status messages can now be displayed while processing * Properly set groups when logging in with X (#72) * Fix installation file * Remove creation of Xauthority file * Dynamically wait for X to start * Add feature(set_groups) * Change back to 'login' auth * Update Cargo.lock * Update README.md file * Version bump * Remove unused code * Remove unwraps * Update Cargo.lock * Fix shared state and InputField * Fix input box * Clippy warnings * Make waiting dependent on time instead of loop count
2022-07-30 17:41:41 +00:00
file. This file contains all the options and explanations of their purpose.
2022-01-05 18:58:43 +00:00
The flag `--config <CONFIG FIlE>` can be used to select another configuration
file instead. An example configuration can be found in the `/extra` folder.
2021-12-31 19:05:45 +00:00
## License
The project is made available under the MIT and APACHE license. See the
`LICENSE-MIT` and `LICENSE-APACHE` files, respectively, for more information.
Next version (#42) * Add maximum width option to input fields (#41) * Add maximum width option to input fields * Format input field code * Fix crash when no graphical environment is specified (#43) * Catch errors in shutdown and reboot scripts (#45) * Set PWD upon logging in (#48) * Set PWD upon logging in * Fix formatting * Load the /etc/lemurs/config.toml file (#49) * Load the /etc/lemurs/config.toml file * Formatting config.rs * Load the /etc/lemurs/config.toml file * Isolate and improve environment variables (#53) Add the XDG environment variables and isolate the setting of environment variables to their own module. The TTY is now also settable from the `config.toml`. * Add an option to remember the username from the last login (#55) * Add option to remember the username in /var/cache * Formatting * Remove mouse capture (#56) * Improve install script (#58) * Change configuration to extend default configuration (#57) * Change configuration to extend default configuration * Formatting * Remove test workflow * Massively cleanup, small improvements and improve the logging (#60) - Log path moved from `/tmp/lemurs.log` to `/var/log/lemurs.log` - Add the `--no-log` flag - Move the preview log file from `out.log` to `lemurs.log` - Handle tty switching errors - Change name config section `wm_selector` to `environment_switcher` - Change the pam service used from `login` to `system-login` - Separate all authentication and environment starting logic from the UI logic - Properly handle X starting errors - Create an event handling thread so that status messages can now be displayed while processing * Properly set groups when logging in with X (#72) * Fix installation file * Remove creation of Xauthority file * Dynamically wait for X to start * Add feature(set_groups) * Change back to 'login' auth * Update Cargo.lock * Update README.md file * Version bump * Remove unused code * Remove unwraps * Update Cargo.lock * Fix shared state and InputField * Fix input box * Clippy warnings * Make waiting dependent on time instead of loop count
2022-07-30 17:41:41 +00:00
## Debugging / Logging
Lemurs logs a lot of information of it running to a logging file. This is
located by default at `/var/log/lemurs.log`, but can be turned of by running
with the `--nolog` flag.
If you want to test your configuration file you can also run `lemurs
--preview`. This will run a preview instance of your configuration. This will
automatically create a `lemurs.log` in the working directory.
## Contributions
Please report any bugs and possible improvements as an issue within this
repository. Pull requests are also welcome.