This repository is the live ~/.config/hypr directory for a modular Hyprland setup. The config is split into small files, most key behavior is driven by shell helpers in scripts/, and a few app configs are mirrored under others/ for backup/reference.
It is usable as a starting point, but it is not a drop-in "works everywhere" preset. Several bindings and autostart entries are personal and should be reviewed before first launch.
- Dwindle layout with small gaps, thin borders, and animations disabled
- Separate config files for bindings, inputs, autostart, window rules, lock screen, idle lock, and night light
- Wofi-based launchers for apps, clipboard history, emoji, search, power menu, and cheatsheets
- Region OCR, screenshots, and GPU-based screen recording helpers
- Optional mirrored configs for Waybar, Kitty, and Dunst under
others/ - Wallpaper and terminal art assets bundled in
wallpapers/andff_logo/
The main entrypoint is hyprland.conf. It currently sources:
binds.confinputs.confwindows.confautostart.confwindowrules.confhyprsunset.confmonitors.confworkspaces.conf~/.config/hypremoji/hypremoji.conf
Important notes:
hyprlock.confandhypridle.confare live, but they are launched by bindings/autostart rather than sourced fromhyprland.conf.monitors.confandworkspaces.confare generated bynwg-displays. Regenerate them for your hardware instead of editing them by hand.others/waybar,others/kitty, andothers/dunstare not wired automatically by Hyprland.waybaris started as plainwaybar, and the sync script mirrors your real~/.config/{waybar,kitty,dunst}back into this repo.hyprland-backup-20260415-014031.confis a historical backup, not the active entrypoint.- The backup still references
binds-qol.conf, but the current livehyprland.confdoes not.
.
├── hyprland.conf # Main Hyprland entrypoint
├── binds.conf # Keybindings and helper script paths
├── inputs.conf # Keyboard, mouse, touchpad settings
├── windows.conf # Workspace declarations
├── windowrules.conf # Float/size rules for selected apps
├── autostart.conf # Session startup commands
├── hyprsunset.conf # Night light schedule
├── hyprlock.conf # Lock screen appearance
├── hypridle.conf # Idle timeout -> lock
├── monitors.conf # Generated by nwg-displays
├── workspaces.conf # Generated by nwg-displays
├── scripts/ # Launchers, toggles, capture, sync helpers
├── others/ # Mirrored Waybar / Kitty / Dunst configs
├── wallpapers/ # Wallpaper assets
└── ff_logo/ # Optional terminal art assets
- Uses the
dwindlelayout - Sets
gaps_in = 1,gaps_out = 2,border_size = 1 - Disables animations
- Enables
xwayland { force_zero_scaling = true } - Sources a separate Hypremoji config from
~/.config/hypremoji/hypremoji.conf
The session currently starts:
nm-appletblueman-appletwaybarelephantswaybgwithwallpapers/jap2.jpgdunsthyprsunsetwl-pastewatchers forcliphisttext and image historyollamaviasystemctl --user start ollama || ollama servehypridlescripts/sync-others.sh watchfoot -e sh -c 'picoclaw agent 2>/dev/null'
If any of those commands do not exist on your machine, remove or replace the line before using the config.
- Keyboard layout is
us follow_mouse = 1- Touchpad natural scroll and tap-to-click are enabled
- A
kb_options = altwin:swap_alt_winline is intentionally present for an external keyboard workflow scripts/keyboard-mode-toggle.shcomments/uncomments that line and then reloads Hyprland
- Declares workspaces
1through10
Rules currently float and size:
wofiorg.gnome.Calculatorio.github.kaii_lb.Overskride
- Locks the session with
hyprlockafter 300 seconds
- Uses
wallpapers/jap2.jpg - Applies blur and a centered password field
- Shows time, date, username, and failure status
- Assumes
JetBrainsMono Nerd Fontis installed
- Enabled
- Manual schedule with
sunrise = 06:00andsunset = 18:00 - Night temperature set to
4000
- These are generated files, not hand-maintained config
- The current repo snapshot expects monitors named
eDP-1andHDMI-A-1 - The current workspace mapping is machine-specific and should be regenerated for your own setup
This setup assumes a Wayland/Hyprland desktop with a fairly opinionated toolchain. Install the packages that provide these commands before first use.
hyprlandhyprlockhypridlehyprsunsetkittyfootwaybarwofidunstswaybgchromiumfirefoxnautilusnm-appletblueman-appletwl-copywl-pastecliphistwpctlbrightnessctlplayerctlpowerprofilesctl
grimslurphyprshotgpu-screen-recordertesseractmagickrsyncinotifywaitflocklockfilewtype
hypremojiand a valid~/.config/hypremoji/hypremoji.confspotifylocalsendcodebtopfastfetchnvtoppulsemixerwifituiollamapicoclawelephant/snap/bin/visualboyadvance-mjavafor TLauncher
Install at least these fonts if you want the setup to look right:
JetBrainsMono Nerd FontFiraCode Nerd FontSymbols Nerd Font
mv ~/.config/hypr ~/.config/hypr.backup.$(date +%F-%H%M%S)git clone https://github.com/juswa005/dotfiles.git ~/.config/hyprIf you prefer to keep the repo elsewhere, clone it anywhere you like and symlink it back to ~/.config/hypr.
Do not skip this step. Several bindings and autostart entries assume the commands listed above already exist.
Before launching the config, check these files and change anything that is personal to the original machine:
autostart.conf- remove or replace
elephant - remove or replace the
picoclawstartup line - change the wallpaper path if you do not want
wallpapers/jap2.jpg - remove
ollamastartup if unused
- remove or replace
hyprland.conf- comment out
source = ~/.config/hypremoji/hypremoji.confif you do not use Hypremoji
- comment out
binds.conf- review all personal URLs opened by the webapp shortcuts
- replace
chromiumprofile names if yours differ - replace the LAN IP shortcuts if they are meaningless on your network
- remove
localsend,spotify,code, or emulator bindings if you do not use them - update the TLauncher path if
~/Games/tl.jardoes not exist
monitors.confandworkspaces.conf- regenerate them with
nwg-displaysfor your monitor layout
- regenerate them with
This repo does not automatically point those programs at others/.
Typical options:
- copy the contents of
others/waybarto~/.config/waybar - copy the contents of
others/kittyto~/.config/kitty - copy the contents of
others/dunstto~/.config/dunst - or symlink those directories if that matches your dotfiles workflow
hyprctl reloadThis repo has a lot of bindings. The full source of truth is binds.conf. These are the main ones.
SUPER + Return-> KittySUPER + Shift + Return-> Kitty runningfastfetchSUPER + Space-> app launcherSUPER + E-> NautilusSUPER + Shift + E-> HypremojiSUPER + B-> Chromium default profileSUPER + Shift + B-> Chromium "Profile 2"SUPER + Shift + M-> TLauncher menuSUPER + L-> LocalSendSUPER + Shift + A-> SpotifySUPER + ~-> VS Code
Several SUPER + <key> bindings launch hardcoded web apps or URLs in Chromium or Firefox, including:
- ChatGPT
- Gmail
- YouTube
- Facebook / Messenger
- Google Calendar
- Discord
- GitHub profiles
- a local router page
- a LAN dashboard
Review and replace these in binds.conf before using the config on another machine.
SUPER + Escape-> power menuSUPER + Shift + Escape-> power profile selectorSUPER + Shift + L-> lock screenSUPER + Ctrl + L-> disablehypridleSUPER + Alt + L-> enablehypridleSUPER + Z-> toggle WaybarSUPER + Ctrl + V-> clipboard history pickerSUPER + Ctrl + K-> toggle the keyboard mode line ininputs.confSUPER + K-> keybind viewerSUPER + H-> tmux cheatsheetSUPER + Shift + H-> Neovim cheatsheetSUPER + Shift + N-> show current Spotify trackSUPER + Ctrl + N-> open a floating quick note in~/Notes
SUPER + Shift + S-> region screenshot viahyprshotPrint-> full output screenshotShift + Print-> active window screenshotSUPER + Alt + S-> start region recording with desktop audioSUPER + Ctrl + S-> start region recording without audioSUPER + Shift + C-> stop recordingSUPER + Shift + T-> OCR a selected region and copy the detected text
SUPER + 1..0-> switch workspace1..10SUPER + Shift + 1..0-> move active window to workspace1..10SUPER + T-> toggle floatingSUPER + Ctrl + Arrow-> move focusSUPER + Ctrl + Shift + Arrow-> swap tiled windowsSUPER + Shift + Arrow-> move floating windowsSUPER + Alt + Arrow-> resize floating windowsALT + Tab-> cycle focus
XF86MonBrightnessUp/XF86MonBrightnessDownXF86AudioRaiseVolume/XF86AudioLowerVolume/XF86AudioMuteXF86AudioMicMuteXF86AudioPlay/XF86AudioNext/XF86AudioPrev
All custom helpers live in scripts/.
| Script | Purpose | Notes |
|---|---|---|
applauncher.sh |
Opens Wofi app launcher | Uses lockfile for debouncing |
anime-movies.sh |
Menu for opening anime/movie sites | Hardcoded URLs |
clipboard.sh |
Clipboard history picker | Requires cliphist, wofi, wl-copy |
emoji-picker.sh |
Emoji picker and optional typed insertion | Uses wtype if available |
hypr-binds.sh |
Shows bindings from binds.conf in Wofi |
Good quick reference |
hypridle-toggle.sh |
Starts or stops hypridle |
Sends desktop notifications |
keyboard-mode-toggle.sh |
Comments/uncomments kb_options = altwin:swap_alt_win |
Runs hyprctl reload |
launch-webapp.sh |
Opens a URL in Chromium app mode | Used by multiple keybinds |
notify-spotify.sh |
Shows current Spotify track | Silent when Spotify is not playing |
nvim-cheatsheet.sh |
Neovim cheatsheet picker | Read-only helper |
ocr-area.sh |
OCR for a selected screen region | Requires grim, slurp, tesseract, wl-copy |
powermenu.sh |
Shutdown / reboot menu | Uses systemctl |
powermode.sh |
Power profile menu | Requires powerprofilesctl |
preview-clipboard.sh |
Decodes clipboard entries for preview | Uses magick for image thumbnails |
quick-note.sh |
Opens a dated note in a floating Kitty + Neovim window | Writes to $HOME/Notes |
screenrecord.sh |
Region recorder with optional desktop audio | Uses gpu-screen-recorder |
search.sh |
Google search prompt in app mode Chromium | Hardcoded to Google |
shot-area |
Region screenshot helper | Separate from the hyprshot bindings |
sync-others.sh |
Mirrors ~/.config/{waybar,kitty,dunst} into others/ |
Starts in watch mode at login |
tlauncher-launcher.sh |
TLauncher mode picker | Assumes ~/Games/tl.jar |
tmux-cheatsheet.sh |
tmux cheatsheet picker | Read-only helper |
waybar-toggle.sh |
Starts or kills Waybar | Launches bare waybar |
These are useful, but they are not automatically active just because they exist in this repo.
config.jsoncis the main mirrored Waybar configstyle.cssis the main mirrored stylesheet2.jsoncis an alternate Waybar layoutbackups/contains older Waybar config/style snapshotsscripts/sysusage.shis a simple CPU/RAM script used by the alternate layout
The main mirrored Waybar setup expects click handlers for tools such as fastfetch, nvtop, btop, pulsemixer, wifitui, and sigye.
kitty.confis a black-and-white leaning main config with transparencycolors.confcontains a Tokyo Night paletteKanagawa.confis a full alternate themekitty.conf.bakis an older minimalist Kitty configcurrent-theme.confandDefault.confare stock/default theme references
dunstrcdefines a monochrome notification look using JetBrainsMono
wallpapers/jap2.jpgis used by bothautostart.confandhyprlock.confwallpapers/contains additional wallpapers you can swap in manuallyff_logo/contains PNG art plusfrieren.txt, which looks like ANSI/terminal art for tools such as Fastfetch
- The config is personalized. Some bindings open personal sites, LAN addresses, or apps that may not exist on your machine.
sync-others.sh watchcontinuously mirrors your real~/.config/waybar,~/.config/kitty, and~/.config/dunstinto this repo. If you do not want that behavior, remove the autostart line.waybaris launched without a-cor-spath, so Waybar will use whatever config is installed in your real~/.config/waybar, not the repo copy underothers/waybar.- The mirrored Waybar configs still use a
wf-recordercheck for the recording indicator, but the live recording helper usesgpu-screen-recorder. hyprland.confsources~/.config/hypremoji/hypremoji.conf. If that file is missing, comment out the line.quick-note.shcreates files in$HOME/Notes.monitors.confandworkspaces.confare machine-specific generated files.
If you want to reuse this setup cleanly:
- Get the core session stable first:
hyprland.conf,binds.conf,inputs.conf,autostart.conf. - Remove personal app bindings and hardcoded URLs next.
- Regenerate monitors/workspaces with
nwg-displays. - Decide whether you want the mirrored
others/configs to become your real Waybar/Kitty/Dunst configs. - Only keep startup services you actually use.
There is no build, lint, or test runner in this repo. Verification is manual:
- run
hyprctl reloadafter editing config files - use
bash -n scripts/<name>.shwhen changing shell helpers - exercise the relevant keybinding in a live Hyprland session