mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
174 lines
5.7 KiB
Markdown
174 lines
5.7 KiB
Markdown
# Dank (dms) Greeter
|
|
|
|
A greeter for [greetd](https://github.com/kennylevinsen/greetd) that follows the aesthetics of the dms lock screen.
|
|
|
|
## Features
|
|
|
|
- **Multi user**: Login with any system user
|
|
- **dms sync**: Sync settings with dms for consistent styling between shell and greeter
|
|
- **niri or Hyprland**: Use either niri or Hyprland for the greeter's compositor.
|
|
- **Custom PAM**: Supports custom PAM configuration in `/etc/pam.d/dankshell`
|
|
- **Session Memory**: Remembers last selected session and user
|
|
|
|
## Installation
|
|
|
|
### Arch Linux
|
|
|
|
Arch linux users can install [greetd-dms-greeter-git](https://aur.archlinux.org/packages/greetd-dms-greeter-git) from the AUR.
|
|
|
|
```bash
|
|
paru -S greetd-dms-greeter-git
|
|
# Or with yay
|
|
yay -S greetd-dms-greeter-git
|
|
```
|
|
|
|
Then in your `/etc/greetd/config.toml` enable dms-greeter by replacing the greeter command with dms-greeter.
|
|
|
|
```bash
|
|
# hyprland and sway are also supported as compositors
|
|
command = "/usr/bin/dms-greeter --command niri"
|
|
```
|
|
|
|
See `dms-greeter --help` for full options including custom compositor configurations.
|
|
|
|
Once installed, you should disable any existing greeter (such as gdm, sddm, lightdm), and you can configure the greeter to run at boot with:
|
|
|
|
```bash
|
|
sudo systemctl enable greetd
|
|
```
|
|
#### Syncing themes
|
|
|
|
To sync wallpapers, colors, and other settings from the logged in user, you can add your user to the `greeter` group and symlink the shell configurations.
|
|
|
|
```bash
|
|
sudo usermod -aG greeter <username>
|
|
# LOGOUT and LOGIN after adding user to group
|
|
|
|
|
|
ln -sf ~/.config/DankMaterialShell/settings.json /var/cache/dms-greeter/settings.json
|
|
|
|
ln -sf ~/.local/state/DankMaterialShell/session.json /var/cache/dms-greeter/session.json
|
|
|
|
ln -sf ~/.cache/quickshell/dankshell/dms-colors.json /var/cache/dms-greeter/colors.json
|
|
```
|
|
|
|
### Automatic
|
|
|
|
The easiest thing is to run `dms greeter install` or `dms` for interactive installation.
|
|
|
|
### Manual
|
|
|
|
1. Install `greetd` (in most distro's standard repositories) and `quickshell`
|
|
2. Clone the dms project to `/etc/xdg/quickshell/dms-greeter`
|
|
```bash
|
|
sudo git clone https://github.com/AvengeMedia/DankMaterialShell.git /etc/xdg/quickshell/dms-greeter
|
|
```
|
|
3. Copy `assets/dms-greeter` to `/usr/local/bin/dms-greeter`:
|
|
```bash
|
|
sudo cp assets/dms-greeter /usr/local/bin/dms-greeter
|
|
sudo chmod +x /usr/local/bin/dms-greeter
|
|
```
|
|
4. Create greeter cache directory with proper permissions:
|
|
```bash
|
|
sudo mkdir -p /var/cache/dms-greeter
|
|
sudo chown greeter:greeter /var/cache/dms-greeter
|
|
sudo chmod 750 /var/cache/dms-greeter
|
|
```
|
|
6. Edit or create `/etc/greetd/config.toml`:
|
|
```toml
|
|
[terminal]
|
|
vt = 1
|
|
|
|
[default_session]
|
|
user = "greeter"
|
|
# Change compositor to sway or hyprland if preferred
|
|
command = "/usr/local/bin/dms-greeter --command niri"
|
|
```
|
|
|
|
Enable the greeter with `sudo systemctl enable greetd`
|
|
|
|
#### Legacy installation (deprecated)
|
|
|
|
If you prefer the old method with separate shell scripts and config files:
|
|
1. Copy `assets/dms-niri.kdl` or `assets/dms-hypr.conf` to `/etc/greetd`
|
|
2. Copy `assets/greet-niri.sh` or `assets/greet-hyprland.sh` to `/usr/local/bin/start-dms-greetd.sh`
|
|
3. Edit the config file and replace `_DMS_PATH_` with your DMS installation path
|
|
4. Configure greetd to use `/usr/local/bin/start-dms-greetd.sh`
|
|
|
|
### NixOS
|
|
|
|
To install the greeter on NixOS add the repo to your flake inputs as described in the readme. Then somewhere in your NixOS config add this to imports:
|
|
```nix
|
|
imports = [
|
|
inputs.dankMaterialShell.nixosModules.greeter
|
|
]
|
|
```
|
|
|
|
Enable the greeter with this in your NixOS config:
|
|
```nix
|
|
programs.dankMaterialShell.greeter = {
|
|
enable = true;
|
|
compositor.name = "niri"; # or set to hyprland
|
|
configHome = "/home/user"; # optionally copyies that users DMS settings (and wallpaper if set) to the greeters data directory as root before greeter starts
|
|
};
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Using dms-greeter wrapper (recommended)
|
|
|
|
The `dms-greeter` wrapper simplifies running the greeter with any compositor:
|
|
|
|
```bash
|
|
dms-greeter --command niri
|
|
dms-greeter --command hyprland
|
|
dms-greeter --command sway
|
|
dms-greeter --command niri -C /path/to/custom-niri.kdl
|
|
```
|
|
|
|
Configure greetd to use it in `/etc/greetd/config.toml`:
|
|
```toml
|
|
[terminal]
|
|
vt = 1
|
|
|
|
[default_session]
|
|
user = "greeter"
|
|
command = "/usr/local/bin/dms-greeter --command niri"
|
|
```
|
|
|
|
### Manual usage
|
|
|
|
To run dms in greeter mode you can also manually set environment variables:
|
|
|
|
```bash
|
|
DMS_RUN_GREETER=1 qs -p /path/to/dms
|
|
```
|
|
|
|
### Configuration
|
|
|
|
#### Compositor
|
|
|
|
You can configure compositor specific settings such as outputs/displays the same as you would in niri or Hyprland.
|
|
|
|
Simply edit `/etc/greetd/dms-niri.kdl` or `/etc/greetd/dms-hypr.conf` to change compositor settings for the greeter
|
|
|
|
#### Personalization
|
|
|
|
Wallpapers and themes and weather and clock formats and things are a TODO on the documentation, but it's configured exactly the same as dms.
|
|
|
|
You can synchronize those configurations with a specific user if you want greeter settings to always mirror the shell.
|
|
|
|
The greeter uses the `dms-greeter` group for file access permissions, so ensure your user and the greeter user are both members of this group.
|
|
|
|
```bash
|
|
# For core settings (theme, clock formats, etc)
|
|
sudo ln -sf ~/.config/DankMaterialShell/settings.json /var/cache/dms-greeter/settings.json
|
|
# For state (mainly you would configure wallpaper in this file)
|
|
sudo ln -sf ~/.local/state/DankMaterialShell/session.json /var/cache/dms-greeter/session.json
|
|
# For wallpaper based theming
|
|
sudo ln -sf ~/.cache/quickshell/dankshell/dms-colors.json /var/cache/dms-greeter/dms-colors.json
|
|
```
|
|
|
|
You can override the configuration path with the `DMS_GREET_CFG_DIR` environment variable or the `--cache-dir` flag when using `dms-greeter`. The default is `/var/cache/dms-greeter`.
|
|
|
|
The cache directory should be owned by `greeter:greeter` with `770` permissions. |