My Arch Linux + Hyprland setup: a monochrome GrokNight look, one quickshell notch instead of a bar, and coding agents wired into it.
| Package | Tool |
|---|---|
hypr |
Hyprland (Lua config), hyprpaper, hyprlock, wallpaper |
quickshell |
Quickshell notch: bar, notifications, app launcher (ALT+SPACE), project picker (ALT+T), reminders, media, coding agents |
ghostty |
Ghostty terminal with blur and shaders |
zshrc, starship |
Zsh with Starship prompt |
tmux |
Tmux (no plugins) |
nvim |
NeoVim |
scripts |
coding (tmux session per project) and mf-recording.sh (screen recording) |
gtk |
GTK Orchis-Grey theme, retrosmart cursor |
helium |
Helium browser flags |
git |
Git config and global ignore |
fastfetch |
fastfetch |
pi |
pi coding agent (~/.pi/agent) |
Font: Maple Mono NF CN. Coding agents: Claude Code and Grok Build, both shown in the notch.
Each top-level folder is a GNU Stow package.
git clone --recurse-submodules git@github.com:luxuling/dotfiles.git ~/dotfiles
cd ~/dotfiles
stow fastfetch ghostty git gtk helium hypr nvim pi quickshell scripts starship tmux zshrcNot in the repo, install them yourself:
- zsh plugins cloned to
~/.zsh/zsh-autosuggestionsand~/.zsh/zsh-syntax-highlighting - Orchis-Grey GTK theme and the retrosmart cursor (
~/.local/share/icons) - notch runtime tools:
mpg123,pw-play,cava,hyprpicker,hyprshot,curl - secrets go in
~/.secrets.zsh, which is git-ignored - the wallpaper. hyprpaper and hyprlock both read
~/.config/hypr/wallpaper.jpg, and that file is git-ignored
The notch starts from Hyprland as qs -c notch. Reload it with ALT+SHIFT+R.
The notch shows Claude Code and Grok Build sessions. It handles permission prompts, questions and plan approval, and plays a chime when an agent finishes. Agents reach it through ~/.config/quickshell/notch/agent-hook, wired into ~/.claude/settings.json (Grok reads the same file):
"hooks": {
"SessionStart": [{ "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }],
"UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }],
"Stop": [{ "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }],
"Notification": [{ "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }],
"SessionEnd": [{ "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }],
"PostToolUse": [{ "matcher": "*", "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }],
"PostToolUseFailure": [{ "matcher": "*", "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }],
"PermissionRequest": [{ "matcher": "*", "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 3600 }] }],
"PreToolUse": [{ "matcher": "AskUserQuestion|ask_user_question|ExitPlanMode", "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 3600 }] }]
}Grok reports cancelled and failed turns with its own events, so ~/.grok/hooks/notch.json adds them:
{
"hooks": {
"StopCancelled": [{ "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }],
"StopFailure": [{ "hooks": [{ "type": "command", "command": "~/.config/quickshell/notch/agent-hook", "timeout": 5 }] }]
}
}The agent list also shows usage limits:
- Claude: the claude-hud statusline mirrors its rate limits to a file once
~/.claude/plugins/claude-hud/config.jsonhas{ "display": { "externalUsageWritePath": "~/.cache/claude-usage.json" } }(use the absolute path). - Grok: weekly credit use is read from the last billing line in
~/.grok/logs/unified.jsonl.
This repository is licensed under the MIT License. See the LICENSE file for more details.
