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 four AUR packages for different greeter compositors:
# niri (default)
yay -S sysc-greet
# Cagebreak variant (the Hyprland replacement)
yay -S sysc-greet-cagebreak
# Sway variant
yay -S sysc-greet-sway
# Hyprland variant (deprecated, replaced by cagebreak)
yay -S sysc-greet-hyprland
The packages conflict with each other — install exactly one. sysc-greet-cagebreak pulls in cagebreak and socat from the AUR.
Pre-built Packages (.deb / .rpm)¶
Download from GitHub Releases:
Debian/Ubuntu:
wget https://github.com/Nomadcxx/sysc-greet/releases/download/v1.1.8/sysc-greet_1.1.8_amd64.deb
sudo apt install ./sysc-greet_1.1.8_amd64.deb
Fedora:
wget https://github.com/Nomadcxx/sysc-greet/releases/download/v1.1.8/sysc-greet-1.1.8-1.x86_64.rpm
sudo dnf install ./sysc-greet-1.1.8-1.x86_64.rpm
Package configs use conservative syntax for stable distro compatibility. For bleeding-edge compositor features, use the install script or AUR instead.
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 "cagebreak", "sway", "hyprland" (deprecated)
};
# Optional: Set initial session for auto-login
services.sysc-greet.settings.initial_session = {
command = "Hyprland";
user = "your-username";
};
}
By default, the NixOS module does not install niri, cagebreak, hyprland, or sway.
Install your chosen backend yourself, or set niriPackage, cagebreakPackage, hyprlandPackage,
or swayPackage if you want the module to install and use a specific package.
If your compositor is managed elsewhere, set compositorCommand to the exact
command greetd should run.
Then rebuild your system:
sudo nixos-rebuild switch --flake .#your-hostname
Advanced: Manual Build from Source¶
Requirements: - Go 1.25+ - greetd - Wayland compositor: niri (default), cagebreak, sway, or hyprland (deprecated) - socat (cagebreak only — quits the compositor after login) - 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 = "cagebreak -e -c /etc/greetd/cagebreak-greeter-config"
# command = "sway --unsupported-gpu -c /etc/greetd/sway-greeter-config"
# command = "start-hyprland -- -c /etc/greetd/hyprland-greeter-config.conf"
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 cagebreak:
sudo cp config/cagebreak-greeter-config /etc/greetd/
# For sway:
sudo cp config/sway-greeter-config /etc/greetd/
# For hyprland (deprecated):
sudo cp config/hyprland-greeter-config.conf /etc/greetd/
Create greeter user:
sudo useradd -M -d /var/lib/greeter -G video,render,input -s /usr/bin/nologin greeter
sudo mkdir -p /var/cache/sysc-greet /var/lib/greeter/Pictures/wallpapers \
/var/lib/greeter/.cache /var/lib/greeter/.config /var/lib/greeter/.local/state
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 runs its greeter session under niri (default), cagebreak, Sway, or Hyprland (deprecated — support ends in ~3 months, migrate to cagebreak). This only affects the boot greeter; your desktop session is unrelated. For detailed setup instructions, see:
- Niri Setup — default
- Cagebreak Setup — the Hyprland replacement
- Sway Setup
- Hyprland Setup — deprecated
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¶
GPL-3.0