NEJEN is a minimal Hyprland desktop environment for Arch Linux, designed as a fast, daily-driver setup with a clean separation between system defaults and user overrides.
- Curated Hyprland Stack: Waybar, Walker, Mako, SwayOSD, and Hypridle/Hyprlock configured out of the box with zero bloat.
- Unified CLI: System actions, themes, and toggles are managed through a single
nejenbinary (e.g.,nejen theme set,nejen doctor). - Safe Overrides: System defaults stay in the install directory. Every app gets a dedicated override file in
~/.configthat loads last and is never touched by an update. - TOML Themes & Keymaps: Define themes and shortcuts in simple TOML files.
nejenautomatically renders them into native application configs and generates a dynamic cheat sheet.
Actions without dedicated shortcuts live in a central menu accessed with Super+N. Items are ordered to match the CLI command they trigger.
Each branch opens one level at a time, and the prompt carries a breadcrumb of where you are. Escape steps back up a level rather than closing the menu, so a wrong turn costs nothing. All entries are defined in config/hub.toml, keeping menu configuration declarative and decoupled from the binary.
Wallpapers can be changed directly from the hub menu or via keyboard shortcuts:
- Arch Linux, or a derivative that uses
pacman. git, to clone the repository.go, which compiles thenejendispatcher. This is a standing requirement rather than a one-off build dependency:nejen updaterebuilds the binary after every pull.base-devel, formakepkg. Parts of the desktop come from the AUR and have to be built, notablywalkerandelephant(the launcher and the hub backend).
sudo pacman -S --needed git go base-develIf paru or yay is already on PATH, the installer uses it. If neither is, it builds paru from the AUR first; that pulls a Rust toolchain as a build dependency and adds a few minutes to the first install. Everything else listed in packages/core.txt is installed for you.
Clone the repository into place and run the installer:
git clone https://github.com/negensystems/nejen.git ~/.local/share/nejen
cd ~/.local/share/nejen
./install.shThis sets up a whole desktop, so it is not a light touch. The installer will:
- install every package in
packages/core.txtthroughpacmanand an AUR helper, bootstrappingparuif you have neither it noryay; - compile
bin/nejenand link it into~/.local/bin, with bash completion; - write generated configs for Hyprland, Waybar, Alacritty, SwayOSD, Mako, btop, and bluetuith into
~/.config, and symlink thefastfetch,walker,nvim, anduwsmconfig directories; - append a
sourceline to~/.bashrc, and create~/.XComposeif you do not already have one; - enable a systemd user timer for battery monitoring on laptops.
Any file it would overwrite that NEJEN did not generate is moved aside to <file>.pre-nejen.bak first, so an existing setup stays recoverable. Pass --no-packages to skip the package step on a machine that already has them.
After installing, log into a Hyprland session and verify your setup:
nejen doctorAll desktop operations route through the nejen binary. Inspect active shortcuts anytime with nejen keys (or Super+/), and run nejen help for the command summary.
The cheat sheet is generated directly from keymap.toml to stay in sync with your config:
NEJEN is managed through a single command, nejen. Subcommands provide access to settings, actions, and system states.
These are the essential bindings for navigating the desktop and managing windows:
| Action | Key |
|---|---|
| Open Terminal | Super+Enter (Super+Return) |
| Open Terminal (tmux) | Super+Alt+Enter |
| Move Focus | Super + H/J/K/L (Vim directional) |
| Move Window | Super + Shift + H/J/K/L |
| Toggle Floating | Super+T |
| Drag Floating Window | Super + Left Click (hold and drag) |
| Resize Floating Window | Super + Right Click (hold and drag) |
| Switch Workspace | Super + 1-0 |
| Move to Workspace | Super + Shift + 1-0 |
| Close Window | Super+Q |
| Command | Description |
|---|---|
nejen doctor |
Check system health and dependencies |
nejen update |
Pull repository updates and upgrade packages |
nejen search <query> |
Search official and AUR packages |
nejen version |
Show the installed NEJEN version |
nejen keys |
Open the searchable keybinding sheet |
nejen hub |
Open the main action menu (Super+N) |
nejen hub session |
Open power and session menu (Super+Shift+N) |
nejen lock |
Lock the screen (Ctrl+Escape) |
| Command | Description |
|---|---|
nejen theme list |
List installed themes |
nejen theme set <name> |
Switch theme and reload app configs |
nejen theme current |
Show the active theme name |
nejen theme bg pick |
Open wallpaper selector (Super+Shift+W) |
nejen night toggle |
Toggle night light warmth filter (Super+W) |
nejen bar toggle |
Toggle Waybar visibility (Super+B) |
nejen bar restart |
Restart Waybar |
| Command | Description |
|---|---|
nejen win detach |
Float and pin active window (Super+U) |
nejen win gaps |
Toggle window gaps (Super+G) |
nejen win layout |
Toggle dwindle and master layouts (Super+Y) |
nejen win square |
Toggle 1:1 aspect ratio on single windows (Super+O) |
nejen win close-all |
Close all windows on current workspace |
| Command | Description |
|---|---|
nejen screenshot |
Screenshot selected region (Print) |
nejen screenrecord |
Start or stop screen recording (Super+R) |
nejen keyboard clean |
Lock keyboard input for cleaning (Super+Alt+K) |
nejen dnd toggle |
Toggle notification Do Not Disturb (Super+Ctrl+D) |
nejen idle toggle |
Toggle sleep inhibitor / caffeine (Super+I) |
nejen audio switch |
Cycle active audio output device |
nejen keymap render |
Re-render Hyprland keybindings from keymap.toml |
Place your overrides in the corresponding files. These load last and take priority over the shipped defaults, and no update touches them:
- Keybindings:
~/.config/nejen/keymap.toml - Hub Actions:
~/.config/nejen/hub.toml - Hyprland Settings:
~/.config/hypr/overrides.conf - Waybar Styling:
~/.config/waybar/overrides.css - Alacritty Configuration:
~/.config/alacritty/overrides.toml - Custom Themes:
~/.config/nejen/themes/<name>/theme.toml - Wallpapers:
~/.config/nejen/backgrounds/
The files these sit alongside (~/.config/hypr/hyprland.conf, ~/.config/waybar/style.css, and the rest) are generated, carry a DO NOT EDIT header, and are rewritten on every install and update. Edit the override file, not the generated one.
NEJEN uses a universal color palette. When you change a theme color, it automatically applies to Waybar, Alacritty, Hyprlock, Neovim, and everything else in the system.
To create your own color theme:
- Open the hub (
Super+N) and select Theme > Clone current theme. - (Or run
nejen theme clone my-themein the terminal). - The system will create a copy of the current theme and open
~/.config/nejen/themes/<your-theme>/theme.tomlin your editor. - Edit the HEX color codes under the
[palette]block to your liking. - Save the file and run
nejen theme set <your-theme>to instantly apply your new colors across the entire system!
Images placed in ~/.config/nejen/backgrounds/ are automatically available in the wallpaper picker and rotation cycle. This directory is theme-independent, so changing themes will not overwrite custom wallpapers.
If your collection lives somewhere else, symlink it into place. Do this before anything creates the directory. ln -s pointed at an existing directory nests the link inside it rather than replacing it:
ln -s ~/Pictures/wallpapers ~/.config/nejen/backgrounds| Action | Key | Command |
|---|---|---|
| Browse with previews | Super+Shift+W |
nejen theme bg pick |
| Next wallpaper | Super+Ctrl+W |
nejen theme bg next |
| Previous wallpaper | Super+Ctrl+Shift+W |
nejen theme bg prev |
| Random wallpaper | nejen theme bg random |
|
| Set a specific wallpaper | nejen theme bg set <name|path> |
|
| Add images to collection | nejen theme bg add <file>... |
|
| List available wallpapers | nejen theme bg list [--names] |
|
| Show current wallpaper | nejen theme bg current [--name] |
|
| Print wallpaper directory | nejen theme bg dir |
These actions are also available under Theme > Wallpaper in the hub (Super+N).
nejen theme bg set accepts an absolute path, a filename, or a display name (e.g., nejen theme bg set "Misty Ridge" and nejen theme bg set ~/Pictures/ridge.jpg). Wallpapers resolve across three layers, first match winning: ~/.config/nejen/backgrounds/, then the active theme's backgrounds/ directory under ~/.config/nejen/themes/<name>/, then the shipped theme's own. A file in an earlier layer shadows a same-named file in a later one. Use --link with nejen theme bg add to symlink files instead of copying them.
nejen keyboard clean disables keyboard input temporarily so you can safely wipe your keyboard. A Hyprland submap captures all keystrokes during the session, preventing accidental input, shortcut triggers, or dialog responses. A fullscreen countdown overlay displays remaining time and blocks accidental clicks.
| Action | Key | Command |
|---|---|---|
| Clean for 30 seconds | Super+Alt+K |
nejen keyboard clean |
| Custom duration | nejen keyboard clean --for 2m |
|
| Finish early | middle click | nejen keyboard clean --stop |
This mode is also available under Toggles > Cleaning mode in the hub (Super+N). While active, Waybar shows a indicator that can be clicked to exit immediately.
Durations accept formats like 45, 45s, or 1m30s (clamped between 5 seconds and 5 minutes). You can exit cleaning mode at any time via timeout, nejen keyboard clean --stop, middle clicking the overlay, or clicking the Waybar indicator.
Boot splash, lock screen, and system info share a consistent design using the ASCII block mark from logo.txt.
On encrypted installations, the Plymouth boot screen prompts for the disk passphrase directly within the splash theme:
nejen lock (Ctrl+Escape) launches hyprlock, themed automatically using your active TOML settings with a blurred background, clock, user info, and passphrase input.
Weather and countdown modules are built directly into the nejen binary, so the status bar needs no external script or interpreter:
- Weather (
nejen weather): Location-aware weather via Open-Meteo (no API key required). Set static coordinates in~/.config/nejen/weather.toml(useful when on a VPN), or let it auto-detect via IP. - Countdown (
nejen countdown): Target date counter manageable from Waybar vianejen countdown menu. Events are stored in~/.config/nejen/countdown.json.
cmd/nejen/: Go source code for the CLI dispatcher and helper commands.config/: Default configurations (Hyprland, Waybar, Walker, Alacritty, Neovim, etc.).themes/&templates/: Theme definitions and config templates.packages/: Package list (core.txtfor base setup).packaging/: PKGBUILD for building NEJEN as a pacman-owned package. The git-clone install above is the supported path; see the comments in the file for the rest.
NEJEN is a single compiled Go binary rather than a tree of shell and Python scripts: no interpreter startup on the paths that run constantly, and a tooling layer a system upgrade cannot break. See docs/why-go.md for details.
There is no automated uninstaller. To back NEJEN out:
rm -f ~/.local/bin/nejen ~/.local/share/bash-completion/completions/nejen
rm -rf ~/.local/share/nejen ~/.local/state/nejen ~/.config/nejenThen remove the NEJEN source line from ~/.bashrc, delete the now-dangling symlinks under ~/.config (fastfetch, walker, nvim, uwsm, and the generated app configs), and restore anything you want back from its *.pre-nejen.bak copy. Packages from packages/core.txt are left installed; remove the ones you do not want with pacman -Rns.
This project is licensed under the MIT License. See LICENSE for details.







