Commit a03b6b4

copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-03-02 02:42:33
fix personal info leaks and add README
- Replace /home/robin/ with $HOME/ in 17 .desktop files (Icon and Exec paths) - Replace /home/robin/ with ~/ in .config/hyprpanel/config.json wallpaper path - Replace personal email and name in .gitconfig with placeholder values - Add comment in .config/zsh/init.zsh about SSH key names - Add README.md: structure overview, requirements, install steps, what to customise, keybinds, scripts reference Co-authored-by: The-Robin-Hood <32297581+The-Robin-Hood@users.noreply.github.com>
1 parent d94f960
.config/hyprpanel/config.json
@@ -118,7 +118,7 @@
   "bar.workspaces.icons.active": "",
   "bar.workspaces.icons.occupied": "",
   "bar.workspaces.icons.available": "",
-  "wallpaper.image": "/home/robin/.assets/wallpapers/gwen-stacy.jpg",
+  "wallpaper.image": "~/.assets/wallpapers/gwen-stacy.jpg",
   "theme.osd.enable": false,
   "menus.volume.raiseMaximumVolume": false,
   "theme.bar.buttons.workspaces.pill.active_width": "9em",
.config/zsh/init.zsh
@@ -1,5 +1,6 @@
 eval "$(zoxide init --cmd cd zsh)"
 
+# Replace 'github homelab' with the names of your SSH keys in ~/.ssh/
 eval "$(keychain -q --ssh-agent-socket $HOME/.ssh/agent.sock --eval github homelab)"
 
 eval "$($HOME/.local/bin/mise activate zsh)"
.local/share/applications/arch-cleanup.desktop
@@ -4,6 +4,6 @@ Name=Arch Cleanup
 Exec=smart-launch --tui "arch-cleanup" "$HOME/.wraith/scripts/arch-spring-cleanup.sh"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/shell.png
+Icon=$HOME/.assets/icons/shell.png
 StartupNotify=true
 
.local/share/applications/butt-out.desktop
@@ -4,6 +4,6 @@ Name=Butt-Out
 Exec=zsh -lc "$HOME/.wraith/scripts/butt-out.sh"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/shell.png
+Icon=$HOME/.assets/icons/shell.png
 StartupNotify=true
 
.local/share/applications/claude.desktop
@@ -4,6 +4,6 @@ Name=Claude AI
 Exec=smart-launch --web "chrome-claude.ai" "https://claude.ai"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/claude.png
+Icon=$HOME/.assets/icons/claude.png
 StartupNotify=true
 
.local/share/applications/disk-usage.desktop
@@ -4,6 +4,6 @@ Name=Disk Usage
 Exec=smart-launch --tui "disk-usage" "bash -c 'while :; do clear;wdu; dust -r;echo; echo -n \\"r: reload  q: quit \\"; read -n1 -s k; [[ $k == r ]] || break; done'"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/shell.png
+Icon=$HOME/.assets/icons/shell.png
 StartupNotify=true
 
.local/share/applications/display-switch.desktop
@@ -4,5 +4,5 @@ Name=Display Interface Switch
 Exec=zsh -lc "$HOME/.wraith/scripts/display.sh"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/shell.png
+Icon=$HOME/.assets/icons/shell.png
 StartupNotify=true
.local/share/applications/docker-desktop.desktop
@@ -4,6 +4,6 @@ Name=Docker Desktop
 Exec=smart-launch --tui "docker-desktop" "lazydocker"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/docker-desktop.png
+Icon=$HOME/.assets/icons/docker-desktop.png
 StartupNotify=true
 
.local/share/applications/freecad.desktop
@@ -4,6 +4,6 @@ Name=FreeCAD
 Exec="/opt/AppImages/FreeCAD_1.0.2-conda-Linux-x86_64-py311.AppImage"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/freecad.png
+Icon=$HOME/.assets/icons/freecad.png
 StartupNotify=true
 
.local/share/applications/google-gemini.desktop
@@ -4,6 +4,6 @@ Name=Google Gemini
 Exec=smart-launch --web "chrome-gemini.google.com" "https://gemini.google.com"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/google-gemini.png
+Icon=$HOME/.assets/icons/google-gemini.png
 StartupNotify=true
 
.local/share/applications/install-apps.desktop
@@ -4,6 +4,6 @@ Name=Install Apps
 Exec=smart-launch --tui "install-apps" "install-app"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/shell.png
+Icon=$HOME/.assets/icons/shell.png
 StartupNotify=true
 
.local/share/applications/medium.desktop
@@ -4,5 +4,5 @@ Name=Medium
 Exec=smart-launch --web "chrome-medium.com" "https://medium.com"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/medium.png
+Icon=$HOME/.assets/icons/medium.png
 StartupNotify=true
\ No newline at end of file
.local/share/applications/notion.desktop
@@ -4,6 +4,6 @@ Name=Notion
 Exec=smart-launch --web "chrome-notion.so" "https://notion.so"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/notion.png
+Icon=$HOME/.assets/icons/notion.png
 StartupNotify=true
 
.local/share/applications/omnitools.desktop
@@ -4,6 +4,6 @@ Name=OmniTools
 Exec=smart-launch --web "chrome-omnitools.app" "https://omnitools.app/"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/omnitools.png
+Icon=$HOME/.assets/icons/omnitools.png
 StartupNotify=true
 
.local/share/applications/openscad.desktop
@@ -1,9 +1,9 @@
 [Desktop Entry]
 Version=1.0
 Name=OpenScad
-Exec=/home/robin/.local/appimages/openscad.AppImage
+Exec=$HOME/.local/appimages/openscad.AppImage
 Terminal=false
 Type=Application
 StartupNotify=true
-Icon=/home/robin/.assets/icons/openscad.png
+Icon=$HOME/.assets/icons/openscad.png
 
.local/share/applications/packages.desktop
@@ -4,6 +4,6 @@ Name=Packages
 Exec=zsh -lc "$HOME/.wraith/scripts/packages.sh"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/arch.png
+Icon=$HOME/.assets/icons/arch.png
 StartupNotify=true
 
.local/share/applications/tailscale.desktop
@@ -5,5 +5,5 @@ Exec=smart-launch --web "chrome-login.tailscale.com" "https://login.tailscale.co
 Terminal=false
 Type=Application
 StartupNotify=true
-Icon=/home/robin/.assets/icons/tailscale.png
+Icon=$HOME/.assets/icons/tailscale.png
 
.local/share/applications/youtube-music.desktop
@@ -4,6 +4,6 @@ Name=YT Music
 Exec=smart-launch --web "chrome-music.youtube.com" "https://music.youtube.com"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/youtube-music.png
+Icon=$HOME/.assets/icons/youtube-music.png
 StartupNotify=true
 
.local/share/applications/youtube.desktop
@@ -4,6 +4,6 @@ Name=Youtube
 Exec=smart-launch --web --new "chrome-youtube.com" "https://youtube.com"
 Terminal=false
 Type=Application
-Icon=/home/robin/.assets/icons/youtube.png
+Icon=$HOME/.assets/icons/youtube.png
 StartupNotify=true
 
.gitconfig
@@ -1,6 +1,6 @@
 [user]
-    email = ping@ansari.wtf
-    name = Ansari
+    email = you@example.com
+    name = Your Name
 [init]
 	defaultBranch = main
 [alias]
README.md
@@ -0,0 +1,131 @@
+# dotfiles
+
+Personal dotfiles for an Arch Linux + Hyprland setup. Managed with [GNU Stow](https://www.gnu.org/software/stow/).
+
+## What's inside
+
+| Path | Purpose |
+|---|---|
+| `.config/hypr/` | Hyprland compositor config (keybinds, windows, decorations, idle, lock) |
+| `.config/ghostty/` | Ghostty terminal config |
+| `.config/tmux/` | tmux config with Catppuccin theme and TPM plugins |
+| `.config/nvim/` | Neovim setup (lazy.nvim, LSP, Treesitter, Telescope, blink.cmp) |
+| `.config/waybar/` | Waybar status bar |
+| `.config/rofi/` | Rofi launcher with custom Wraith theme |
+| `.config/swaync/` | SwayNC notification center |
+| `.config/zsh/` | Zsh aliases, exports, init hooks |
+| `.config/ssh/` | Hardened sshd config (key-only auth) |
+| `.wraith/scripts/` | Shell scripts (brightness, screenshot, packages, cleanup, etc.) |
+| `.wraith/bin/` | Custom binaries (`smart-launch`, `install-app`, `chromium-pwa`, etc.) |
+| `.local/share/applications/` | Custom `.desktop` entries for web apps, TUI apps, AppImages |
+| `.oh-my-zsh/custom/themes/` | Custom `wraith` Zsh prompt theme |
+| `.gitconfig` | Git defaults (rebase on pull, histogram diff, auto remote setup) |
+| `.zshrc` | Zsh entry point |
+
+## Requirements
+
+**Core**
+- Arch Linux
+- Hyprland
+- Zsh + [Oh My Zsh](https://ohmyz.sh/)
+- [GNU Stow](https://www.gnu.org/software/stow/) — `sudo pacman -S stow`
+
+**Terminal / Shell**
+- [Ghostty](https://ghostty.org/)
+- [tmux](https://github.com/tmux/tmux) + [TPM](https://github.com/tmux-plugins/tpm) (auto-installed on first run)
+- [zoxide](https://github.com/ajeetdsouza/zoxide) — smarter `cd`
+- [fzf](https://github.com/junegunn/fzf)
+- [eza](https://github.com/eza-community/eza) — better `ls`
+- [bat](https://github.com/sharkdp/bat) — better `cat`
+- [keychain](https://www.funtoo.org/Keychain) — SSH agent manager
+- [mise](https://mise.jdx.dev/) — runtime version manager
+
+**Wayland / Desktop**
+- [waybar](https://github.com/Alexays/Waybar)
+- [rofi-wayland](https://github.com/lbonn/rofi)
+- [swaync](https://github.com/ErikReider/SwayNotificationCenter)
+- [hyprlock](https://github.com/hyprwm/hyprlock)
+- [hypridle](https://github.com/hyprwm/hypridle)
+- [swww](https://github.com/LGFae/swww) — wallpaper daemon
+- [cliphist](https://github.com/sentriz/cliphist) — clipboard history
+- [rofimoji](https://github.com/fdw/rofimoji)
+- [gum](https://github.com/charmbracelet/gum) — used by cleanup/package scripts
+
+**Neovim**
+- Neovim ≥ 0.10
+- A [Nerd Font](https://www.nerdfonts.com/) (config uses Hack Nerd Font Propo)
+
+**Brightness control**
+- [ddcutil](https://www.ddcutil.com/) — controls external monitor brightness over DDC/CI
+
+## Installation
+
+```sh
+# Clone into your home directory
+git clone https://github.com/The-Robin-Hood/dotfiles ~/dotfiles
+
+# Stow everything into $HOME
+cd ~/dotfiles
+stow --target="$HOME" .
+```
+
+After stowing, run `src` (alias for `source ~/.zshrc`) or start a new shell.
+
+> **Tip:** The `sync-config` shell function re-runs stow from `~/dotfiles` whenever you want to apply changes.
+
+## What to change before using
+
+| File | What to update |
+|---|---|
+| `.gitconfig` | Set your own `name` and `email` under `[user]` |
+| `.config/zsh/init.zsh` | Replace `github homelab` in the `keychain` line with your own SSH key names |
+| `.config/hyprpanel/config.json` | Update `wallpaper.image` to your preferred wallpaper path |
+| `.config/hypr/modules/windows.conf` | Adjust the monitor name (`DP-1`) to match your setup |
+| `.config/hypr/modules/vars.conf` | NVIDIA env vars — remove if you don't have an NVIDIA GPU |
+| `.config/zsh/exports.zsh` | `DEV` path defaults to `~/dev`, change if needed |
+| `.local/share/applications/*.desktop` | These contain absolute icon/exec paths. Re-generate them with `install-app` after stowing so paths match your username |
+
+## Key bindings (Hyprland)
+
+| Key | Action |
+|---|---|
+| `Super + Space` | App launcher (Rofi) |
+| `Super + T` | Terminal (Ghostty) |
+| `Super + E` | File manager (Yazi) |
+| `Super + B` | Browser (Zen) |
+| `Super + L` | Lock screen |
+| `Super + V` | Clipboard history |
+| `Super + .` | Emoji picker |
+| `Super + Shift + S` | Screenshot menu |
+| `Super + S` | Cycle special workspaces |
+| `Super + Shift + W` | Close window |
+| `Super + F` | Toggle floating |
+| `Super + Ctrl + F` | Fullscreen |
+| `Super + 1–9` | Switch workspace |
+| `Super + Shift + 1–9` | Move window to workspace |
+
+## Custom scripts
+
+Located in `~/.wraith/scripts/`:
+
+| Script | What it does |
+|---|---|
+| `brightness.sh` | Get/set external monitor brightness via DDC/CI |
+| `screenshot.sh` | Rofi menu for region, window, or full-screen captures |
+| `packages.sh` | Browse/uninstall packages; prompts to update when many updates are pending |
+| `arch-spring-cleanup.sh` | TUI maintenance wizard (upgrade, cache, orphans, logs, service health) |
+| `butt-out.sh` | Countdown timer that can schedule a shutdown |
+| `display.sh` | Switch monitor input source via DDC |
+| `internet-connectivity.sh` | Outputs network status JSON for Waybar |
+| `firewall.sh` | UFW setup script (run once to configure firewall rules) |
+| `mimetypes.sh` | Sets default apps for common file types via `xdg-mime` |
+| `cycle-special-workspace.sh` | Cycles through Hyprland special workspaces |
+| `waybar-swaync.sh` | Restarts Waybar and SwayNC |
+
+Located in `~/.wraith/bin/`:
+
+| Binary | What it does |
+|---|---|
+| `smart-launch` | Focus existing Hyprland window or launch a new one (supports GUI, TUI, web apps) |
+| `install-app` | Interactive installer for web apps, TUI apps, and AppImages |
+| `chromium-pwa` | Chromium wrapper for launching PWAs with isolated profile |