<commit_before># EXTENSIBLE LOGIN MANAGER

## What is it?

The Extensible Login Manager (ELM) is a highly configurable login manager.

## Requirements

The following packages are required:
- ttf-droid
- xcompmgr

## Installation

To install the _Extensible Login Manager_, run the following commands as root:

```
# git clone https://github.com/gabeg805/Extensible-Login-Manager
# mv Extensible-Login-Manager /etc/X11/elm
# cd /etc/X11/elm
# make
# make install
```

## Uninstall

To uninstall the _Extensible Login Manager_, run:

```
# make uninstall
```

Note: The current directory containing all the Makefile, README, code, etc. will
be the only remnants of this package.

## Documentation

The program itself works as follows (starting at system bootup):
- System boots up and all required processes are started
- Elm service is started (since it was enabled with "make install") after
  the Getty service
- Elm service starts the login manager
- ELM starts an X server (everything following needs a
  running X server)
- Compositing manager is started
- Background is displayed
- Elm applications are displayed
- The user is prompted to enter the password
- Username/password combination is sent to the "authenticate" function
- Inside the "authenticate" function, initiate the PAM module conversation
  ("conv" function) between the username and password combination and the
  Elm PAM module
- Start the designated PAM module ("elm")
- Set the PAM user
- Set the PAM tty
- Authenticate the username/password combination
- Check if the user account is valid (if it hasn't expired or if 
  there are access restrictions)
- Establish credentials for the PAM user
- Set up a user session for the authenticated user
- Set the PAM environment variables
- Destroy all the windows and application that were displayed for logging in
- Execute the login manager provided xinitrc file (./util/xinit/xinitrc)
- PAM waits in the background until logout...
- Closes the user session that was opened
- Deletes the user credentials that were set
- Ends the PAM transaction

# Things to Implement

- [ ] Logout command line option.
- [ ] Setup and connect to the org.freedesktop.DisplayManager bus.
- [ ] Print to stdout/stderr, in addition to logging everything.
<commit_msg>Removed '#' in front of commands and added note about running uninstall as root.<commit_after># EXTENSIBLE LOGIN MANAGER

## What is it?

The Extensible Login Manager (ELM) is a highly configurable login manager.

## Requirements

The following packages are required:
- ttf-droid
- xcompmgr

## Installation

To install the _Extensible Login Manager_, run the following commands as root:

```
git clone https://github.com/gabeg805/Extensible-Login-Manager
mv Extensible-Login-Manager /etc/X11/elm
cd /etc/X11/elm
make
make install
```

## Uninstall

To uninstall the _Extensible Login Manager_, run the following command as root:

```
make uninstall
```

Note: The current directory containing all the Makefile, README, code, etc. will
be the only remnants of this package.

## Documentation

The program itself works as follows (starting at system bootup):
- System boots up and all required processes are started
- Elm service is started (since it was enabled with "make install") after
  the Getty service
- Elm service starts the login manager
- ELM starts an X server (everything following needs a
  running X server)
- Compositing manager is started
- Background is displayed
- Elm applications are displayed
- The user is prompted to enter the password
- Username/password combination is sent to the "authenticate" function
- Inside the "authenticate" function, initiate the PAM module conversation
  ("conv" function) between the username and password combination and the
  Elm PAM module
- Start the designated PAM module ("elm")
- Set the PAM user
- Set the PAM tty
- Authenticate the username/password combination
- Check if the user account is valid (if it hasn't expired or if 
  there are access restrictions)
- Establish credentials for the PAM user
- Set up a user session for the authenticated user
- Set the PAM environment variables
- Destroy all the windows and application that were displayed for logging in
- Execute the login manager provided xinitrc file (./util/xinit/xinitrc)
- PAM waits in the background until logout...
- Closes the user session that was opened
- Deletes the user credentials that were set
- Ends the PAM transaction

# Things to Implement

- [ ] Logout command line option.
- [ ] Setup and connect to the org.freedesktop.DisplayManager bus.
- [ ] Print to stdout/stderr, in addition to logging everything.

{'fraction_non_alphanumeric': 0.06148516995020567, 'fraction_numerical': 0.0030309590820523924, 'mean_word_length': 4.133333333333334, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3883761', 'n_tokens_mistral': 1279, 'n_tokens_neox': 1216, 'n_words': 623}