////////// SEE YOU IN SPACE COWBOY //////////

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 bashManual 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-hyprlandThe 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.9/sysc-greet_1.1.9_amd64.deb
sudo apt install ./sysc-greet_1.1.9_amd64.debFedora:
wget https://github.com/Nomadcxx/sysc-greet/releases/download/v1.1.9/sysc-greet-1.1.9-1.x86_64.rpm
sudo dnf install ./sysc-greet-1.1.9-1.x86_64.rpmPackage 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-hostnameAdvanced: 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-greetInstall 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.confConfigure 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/greeterEnable service:
sudo systemctl enable greetd.serviceUsage
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 --testAdditional 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 informationConfiguration
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 buildTesting
make testRunning in Test Mode
./sysc-greet --test --debugFor development details, see Development Guide.
Troubleshooting
Greeter won't start:
sudo systemctl status greetd
journalctl -u greetd -n 50Check gSlapper status:
# Check if gSlapper is running
ps aux | grep gslapper
# View gSlapper debug log
cat /tmp/sysc-greet-wallpaper.logDebug logging:
# Run with debug flag
sysc-greet --debug
# View debug log
cat /tmp/sysc-greet-debug.logFor 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
