diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Modules/Greetd/README.md')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/dms/Modules/Greetd/README.md | 277 |
1 files changed, 277 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Modules/Greetd/README.md b/raveos-hyprland-theme/theme-data/dms/Modules/Greetd/README.md new file mode 100644 index 0000000..4ac5a77 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modules/Greetd/README.md @@ -0,0 +1,277 @@ +# 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 +- **Multiple compositors**: The `dms-greeter` wrapper supports niri, Hyprland, sway, scroll, miracle-wm, labwc, and mangowc. +- **Custom PAM**: Supports custom PAM configuration in `/etc/pam.d/greetd` +- **Session Memory**: Remembers last selected session and user + - Can be disabled via `settings.json` keys: `greeterRememberLastSession` and `greeterRememberLastUser` + +## 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 +``` + +### Debian / openSUSE + +Official packages are available from the [DankLinux OBS repository](https://software.opensuse.org/download/package?package=dms-greeter&project=home%3AAvengeMedia%3Adanklinux). Add the repo for your distribution and install: + +```bash +# Debian 13 +sudo apt install dms-greeter # after adding the repo + +# openSUSE Tumbleweed +zypper install dms-greeter # after adding the repo +``` + +See the [Installation guide](https://danklinux.com/docs/dankgreeter/installation) for full repository setup. + +If you previously installed manually, remove legacy files first: + +```bash +sudo rm -f /usr/local/bin/dms-greeter +sudo rm -rf /etc/xdg/quickshell/dms-greeter +``` + +Then complete setup: + +```bash +dms greeter enable +dms greeter sync +``` + +#### Syncing themes (Optional) + +To sync your wallpaper and theme with the greeter login screen, follow the manual setup below: + +<details> +<summary>Manual theme syncing</summary> + +```bash +# Add yourself to greeter group +sudo usermod -aG greeter <username> + +# Set ACLs to allow greeter to traverse your directories +setfacl -m u:greeter:x ~ ~/.config ~/.local ~/.cache ~/.local/state + +# Set group ownership on config directories +sudo chgrp -R greeter ~/.config/DankMaterialShell +sudo chgrp -R greeter ~/.local/state/DankMaterialShell +sudo chgrp -R greeter ~/.cache/DankMaterialShell +sudo chmod -R g+rX ~/.config/DankMaterialShell ~/.cache/DankMaterialShell ~/.cache/quickshell + +# Create symlinks +sudo ln -sf ~/.config/DankMaterialShell/settings.json /var/cache/dms-greeter/settings.json +sudo ln -sf ~/.local/state/DankMaterialShell/session.json /var/cache/dms-greeter/session.json +sudo ln -sf ~/.cache/DankMaterialShell/dms-colors.json /var/cache/dms-greeter/colors.json + +# Logout and login for group membership to take effect +``` + +</details> + +### Fedora / RHEL / Rocky / Alma + +Install from COPR or build the RPM: + +```bash +# From COPR (when available) +sudo dnf copr enable avenge/dms +sudo dnf install dms-greeter + +# Or build locally +cd /path/to/DankMaterialShell +rpkg local +sudo rpm -ivh x86_64/dms-greeter-*.rpm +``` + +The package automatically: +- Creates the greeter user +- Sets up directories and permissions +- Configures greetd with auto-detected compositor +- Applies SELinux contexts + +Then complete setup: + +```bash +dms greeter enable +dms greeter sync +``` + +#### Syncing themes (Optional) + +Run: + +```bash +dms greeter sync +``` + +Then logout/login to see your wallpaper on the greeter. + +### Automatic + +The easiest thing is to run `dms greeter install` or `dms` for interactive installation. +On Debian/openSUSE, this now prefers the `dms-greeter` package when the OBS repo is configured. + +### Manual (fallback only) + +Use this only if no package is available for your distro. + +1. Install `greetd` (in most distro's standard repositories) and `quickshell` + +2. Create the greeter user (if not already created by greetd): +```bash +sudo groupadd -r greeter +sudo useradd -r -g greeter -d /var/lib/greeter -s /bin/bash -c "System Greeter" greeter +sudo mkdir -p /var/lib/greeter +sudo chown greeter:greeter /var/lib/greeter +``` + +3. 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 +``` + +4. Copy `Modules/Greetd/assets/dms-greeter` to `/usr/local/bin/dms-greeter`: +```bash +sudo cp /etc/xdg/quickshell/dms-greeter/Modules/Greetd/assets/dms-greeter /usr/local/bin/dms-greeter +sudo chmod +x /usr/local/bin/dms-greeter +``` + +5. Create greeter cache directory with proper permissions: +```bash +sudo mkdir -p /var/cache/dms-greeter +sudo chown <greeter-user>:<greeter-group> /var/cache/dms-greeter +sudo chmod 2770 /var/cache/dms-greeter +``` + +6. Edit or create `/etc/greetd/config.toml`: +```toml +[terminal] +vt = 1 + +[default_session] +user = "greeter" +# Change compositor to another wrapper-supported compositor if preferred +command = "/usr/local/bin/dms-greeter --command niri" +``` + +7. Disable existing display manager and enable greetd: +```bash +sudo systemctl disable gdm sddm lightdm +sudo systemctl enable greetd +``` + +8. (Optional) Set up theme syncing using the manual ACL method described in the Configuration → Personalization section below + +#### 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.dank-material-shell.nixosModules.greeter +] +``` + +Enable the greeter with this in your NixOS config: +```nix +programs.dank-material-shell.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 mangowc +dms-greeter --command niri -C /path/to/custom-niri.kdl +dms-greeter --command niri --remember-last-user false --remember-last-session false +``` + +Configure greetd to use it in `/etc/greetd/config.toml`: +```toml +[terminal] +vt = 1 + +[default_session] +user = "greeter" +command = "/usr/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 + +For current wrapper-based installs, the `dms-greeter` wrapper supports niri, hyprland, sway, scroll, miracle-wm, labwc, and mangowc. + +Only niri currently has a generated greeter config path managed by `dms greeter sync`. + +- niri: `dms greeter sync` writes the generated greeter config to `/etc/greetd/niri/config.kdl`. Add local manual tweaks in `/etc/greetd/niri_overrides.kdl`. +- Other wrapper-supported compositors use the wrapper-generated config by default. If you need a custom compositor config, add `-C /path/to/config` to the `dms-greeter` command in `/etc/greetd/config.toml`. + +#### Personalization + +The greeter can be personalized with wallpapers, themes, weather, clock formats, and more - configured exactly the same as dms. + +**Easiest method:** Run `dms greeter sync` to automatically sync your DMS theme with the greeter. + +**Manual method:** You can manually synchronize configurations if you want greeter settings to always mirror your shell: + +```bash +# Add yourself to the greeter group +sudo usermod -aG greeter $USER + +# Set ACLs to allow greeter user to traverse your home directory +setfacl -m u:greeter:x ~ ~/.config ~/.local ~/.cache ~/.local/state + +# Set group permissions on DMS directories +sudo chgrp -R greeter ~/.config/DankMaterialShell ~/.local/state/DankMaterialShell ~/.cache/quickshell +sudo chmod -R g+rX ~/.config/DankMaterialShell ~/.local/state/DankMaterialShell ~/.cache/quickshell + +# Create symlinks for theme files +sudo ln -sf ~/.config/DankMaterialShell/settings.json /var/cache/dms-greeter/settings.json +sudo ln -sf ~/.local/state/DankMaterialShell/session.json /var/cache/dms-greeter/session.json +sudo ln -sf ~/.cache/DankMaterialShell/dms-colors.json /var/cache/dms-greeter/colors.json + +# Logout and login for group membership to take effect +``` + +**Advanced:** 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-user>:<greeter-group>` with `2770` permissions. If the greeter user is not available yet, DMS falls back to `root:<greeter-group>`. |