Home

sysc-greet is a graphical console greeter for greetd, written in Go with the Bubble Tea framework.

Features¶
- Multiple Themes: Dracula, Gruvbox, Material, Nord, Tokyo Night, Catppuccin, Solarized, Monochrome, TransIsHardJob, Eldritch, RAMA, Dark (plus custom themes)
- Background Effects: Fire (DOOM PSX), Matrix rain, ASCII rain, Fireworks, Aquarium
- ASCII Effects: Typewriter, Print, Beams, and Pour effects for session text
- Border Styles: Classic, Modern, Minimal, ASCII-1, ASCII-2, Wave, Pulse
- Screensaver: Configurable idle timeout with ASCII art cycling
- Video Wallpapers: Multi-monitor support via gSlapper
- Security Features: Failed attempt counter with account lockout warnings, optional username caching
Installation¶
Quick Install Script¶
One-line install for most systems:
curl -fsSL https://raw.githubusercontent.com/Nomadcxx/sysc-greet/master/install.sh | sudo bash
Manual Build¶
The installer lets you choose your compositor and handles all configuration:
git clone https://github.com/Nomadcxx/sysc-greet
cd sysc-greet
go run ./cmd/installer/
Arch Linux (AUR)¶
sysc-greet provides three AUR packages for different compositors:
# Recommended (niri)
yay -S sysc-greet
# Hyprland variant
yay -S sysc-greet-hyprland
# Sway variant
yay -S sysc-greet-sway
NixOS (Flake)¶
Add sysc-greet to your NixOS configuration using the flake:
flake.nix:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
sysc-greet = {
url = "github:Nomadcxx/sysc-greet";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, sysc-greet, ... }: {
nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
sysc-greet.nixosModules.default
];
};
};
}
configuration.nix:
{
services.sysc-greet = {
enable = true;
compositor = "niri"; # or "hyprland" or "sway"
};
# Optional: Set initial session for auto-login
services.sysc-greet.settings.initial_session = {
command = "Hyprland";
user = "your-username";
};
}
Then rebuild your system:
sudo nixos-rebuild switch --flake .#your-hostname
Advanced: Manual Build from Source¶
Requirements: - Go 1.25+ - greetd - Wayland compositor (niri, hyprland, or sway) - kitty (terminal) - gSlapper (wallpaper daemon) - swww (legacy wallpaper daemon, optional fallback)
Build and install:
git clone https://github.com/Nomadcxx/sysc-greet
cd sysc-greet
go build -o sysc-greet ./cmd/sysc-greet/
sudo install -Dm755 sysc-greet /usr/local/bin/sysc-greet
Install assets:
sudo mkdir -p /usr/share/sysc-greet/{ascii_configs,fonts,wallpapers}
sudo cp -r ascii_configs/* /usr/share/sysc-greet/ascii_configs/
sudo cp -r fonts/* /usr/share/sysc-greet/fonts/
sudo cp -r wallpapers/* /usr/share/sysc-greet/wallpapers/
sudo cp config/kitty-greeter.conf /etc/greetd/kitty.conf
Configure greetd (/etc/greetd/config.toml):
Choose your compositor and update the command below:
[terminal]
vt = 1
[default_session]
# Pick one:
command = "niri -c /etc/greetd/niri-greeter-config.kdl"
# command = "start-hyprland -- -c /etc/greetd/hyprland-greeter-config.conf"
# command = "sway --unsupported-gpu -c /etc/greetd/sway-greeter-config"
user = "greeter"
Create compositor config:
Copy the appropriate config file to /etc/greetd/:
# For niri:
sudo cp config/niri-greeter-config.kdl /etc/greetd/
# For hyprland:
sudo cp config/hyprland-greeter-config.conf /etc/greetd/
# For sway:
sudo cp config/sway-greeter-config /etc/greetd/
Create greeter user:
sudo useradd -M -G video -s /usr/bin/nologin greeter
sudo mkdir -p /var/cache/sysc-greet /var/lib/greeter/Pictures/wallpapers
sudo chown -R greeter:greeter /var/cache/sysc-greet /var/lib/greeter
sudo chmod 755 /var/lib/greeter
Enable service:
sudo systemctl enable greetd.service
Usage¶
Key Bindings¶
- F1 - Settings menu (themes, borders, backgrounds)
- F2 - Session selection
- F3 - Release notes
- F4 - Power menu (shutdown/reboot)
- Page Up/Down - Cycle ASCII variants
- Tab - Navigate fields
- Enter - Submit/Continue
- Esc - Cancel/Return to previous screen
Test Mode¶
Test the greeter without locking your session:
sysc-greet --test
# Test in fullscreen (recommended for accurate preview)
kitty --start-as=fullscreen sysc-greet --test
Additional Options¶
sysc-greet --theme dracula # Start with specific theme
sysc-greet --screensaver # Enable screensaver in test mode
sysc-greet --remember-username # Cache username across sessions
sysc-greet --debug # Enable debug logging
sysc-greet --version # Show version information
Configuration¶
sysc-greet stores user preferences in /var/cache/sysc-greet/. The following settings are cached:
- Theme - Selected color theme
- Background - Selected background effect or video wallpaper
- Border Style - Selected border style
- Session - Last selected session
- Username - Last entered username (if
--remember-usernameenabled) - ASCII Index - Last selected ASCII variant
Themes¶
sysc-greet includes multiple built-in themes:
| Theme | Primary Color | Description |
|---|---|---|
| Dracula | #bd93f9 | Dark purple-blue theme |
| Gruvbox | #fe8019 | Warm dark theme |
| Material | #80cbc4 | Material Design dark theme |
| Nord | #81a1c1 | Arctic blue-toned dark theme |
| Tokyo Night | #7aa2f7 | Modern dark theme |
| Catppuccin | #cba6f7 | Soft pastel dark theme |
| Solarized | #268bd2 | Solarized dark theme |
| Monochrome | #ffffff | Black and white minimal theme |
| TransIsHardJob | #5BCEFA | Transgender flag colors |
| Eldritch | #37f499 | Purple and green theme |
| RAMA | #ef233c | RAMA keyboard aesthetics |
| Dark | #ffffff | True black and white minimal theme |
Custom themes can be added via TOML files in /usr/share/sysc-greet/themes/ or ~/.config/sysc-greet/themes/. See Themes Configuration for details.
Background Effects¶
sysc-greet supports several background effects:
- Fire - DOOM PSX fire effect
- Matrix - Matrix rain effect
- ASCII Rain - Falling ASCII characters
- Fireworks - Firework explosions
- Aquarium - Swimming fish animation
Wallpapers¶
sysc-greet supports two types of wallpapers:
- Themed Wallpapers - Static images that match selected theme (stored in
/usr/share/sysc-greet/wallpapers/) - Video Wallpapers - Video backgrounds managed by gSlapper (stored in
/var/lib/greeter/Pictures/wallpapers/)
For detailed configuration, see Wallpapers Feature.
ASCII Art¶
Each session can have custom ASCII art with multiple variants. Press Page Up/Down at the greeter to cycle through variants.
ASCII art configurations are stored in /usr/share/sysc-greet/ascii_configs/. Each session has a .conf file containing:
name- Display name for the sessionascii_1,ascii_2, etc. - Multiple ASCII art variantscolors- Optional hex colors for rainbow effectroasts- Custom roast messages separated by│character
For more details, see ASCII Art Feature.
Screensaver¶
The screensaver activates after a configurable idle timeout and displays:
- Current time and date
- ASCII art cycling
- Optional print animation effect
Screensaver configuration is in /usr/share/sysc-greet/ascii_configs/screensaver.conf.
Compositor Setup¶
sysc-greet works with niri, Hyprland, and Sway compositors. For detailed setup instructions, see:
Development¶
Building¶
make build
Testing¶
make test
Running in Test Mode¶
./sysc-greet --test --debug
For development details, see Development Guide.
Troubleshooting¶
Greeter won't start:
sudo systemctl status greetd
journalctl -u greetd -n 50
Check gSlapper status:
# Check if gSlapper is running
ps aux | grep gslapper
# View gSlapper debug log
cat /tmp/sysc-greet-wallpaper.log
Debug logging:
# Run with debug flag
sysc-greet --debug
# View debug log
cat /tmp/sysc-greet-debug.log
For more troubleshooting, see Troubleshooting Guide.
Related Projects¶
If you like ASCII animations, CLI and TUI terminal aesthetics check out these projects:
- sysc-Go - Terminal animation library for Go
- sysc-walls - Terminal-based screensaver for Wayland/X11
- gSlapper - Video wallpaper manager for Wayland
Acknowledgments¶
- tuigreet by apognu - Original inspiration and base
- Bubble Tea by Charm - TUI framework
- Lipgloss by Charm - Terminal styling
- greetd by kennylevinsen - Login manager
License¶
MIT