Commit 33daf3f

copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-03-02 02:49:43
fix personal info leaks and add README
- Revert previous broken attempt (used $HOME in .desktop Icon= which XDG spec does not expand) - Replace /home/robin/ with YOUR_HOME/ placeholder in 17 .desktop files (users run: sed -i "s|YOUR_HOME|$HOME|g" ~/.local/share/applications/*.desktop) - Replace hardcoded /home/robin/ with ~/ in hyprpanel config wallpaper path - Replace personal email/name in .gitconfig with placeholder values - Add comment in init.zsh about SSH key names - Add README.md: structure, requirements, install steps, customisation guide, keybinds reference, scripts and binaries descriptions Co-authored-by: The-Robin-Hood <32297581+The-Robin-Hood@users.noreply.github.com>
1 parent 48a4186
.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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_HOME/.local/appimages/openscad.AppImage
 Terminal=false
 Type=Application
 StartupNotify=true
-Icon=/home/robin/.assets/icons/openscad.png
+Icon=YOUR_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=YOUR_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=YOUR_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=YOUR_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=YOUR_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,117 @@
+# dotfiles
+
+Personal dotfiles for an Arch Linux + Hyprland setup, managed with [GNU Stow](https://www.gnu.org/software/stow/).
+
+## Structure
+
+| Path | Purpose |
+|---|---|
+| `.config/hypr/` | Hyprland compositor (keybinds, decorations, idle, lock) |
+| `.config/ghostty/` | Ghostty terminal |
+| `.config/tmux/` | tmux with Catppuccin theme and TPM |
+| `.config/nvim/` | Neovim — lazy.nvim, LSP, Treesitter, Telescope, blink.cmp |
+| `.config/waybar/` | Waybar status bar |
+| `.config/rofi/` | Rofi launcher with Wraith theme |
+| `.config/swaync/` | SwayNC notification center |
+| `.config/zsh/` | Zsh aliases, exports, init hooks |
+| `.config/ssh/` | Hardened sshd config (key-only auth) |
+| `.wraith/scripts/` | Custom shell scripts (brightness, screenshot, packages, 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/` | Wraith Zsh prompt theme |
+| `.assets/` | Icons, wallpapers, fonts used by the configs |
+| `.gitconfig` | Git defaults |
+| `.zshrc` | Zsh entry point |
+
+## Requirements
+
+**Core**
+- Arch Linux, Hyprland, Zsh + [Oh My Zsh](https://ohmyz.sh/), [GNU Stow](https://www.gnu.org/software/stow/)
+
+**Shell**
+- [Ghostty](https://ghostty.org/), [tmux](https://github.com/tmux/tmux) + [TPM](https://github.com/tmux-plugins/tpm)
+- [zoxide](https://github.com/ajeetdsouza/zoxide), [fzf](https://github.com/junegunn/fzf), [eza](https://github.com/eza-community/eza), [bat](https://github.com/sharkdp/bat)
+- [keychain](https://www.funtoo.org/Keychain), [mise](https://mise.jdx.dev/)
+
+**Wayland**
+- [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)
+- [cliphist](https://github.com/sentriz/cliphist), [rofimoji](https://github.com/fdw/rofimoji), [gum](https://github.com/charmbracelet/gum)
+
+**Neovim** — Neovim ≥ 0.10, a [Nerd Font](https://www.nerdfonts.com/)
+
+**Brightness** — [ddcutil](https://www.ddcutil.com/) (DDC/CI for external monitors)
+
+## Installation
+
+```sh
+git clone https://github.com/The-Robin-Hood/dotfiles ~/dotfiles
+cd ~/dotfiles
+stow --target="$HOME" .
+```
+
+After stowing, open a new shell or run `src` (`source ~/.zshrc`).
+
+**Fix `.desktop` icon paths** — the `.desktop` files under `.local/share/applications/` contain `YOUR_HOME/` as a placeholder for your actual home directory. Run this once after stowing:
+
+```sh
+sed -i "s|YOUR_HOME|$HOME|g" ~/.local/share/applications/*.desktop
+```
+
+> The `sync-config` shell function re-runs stow whenever you want to apply changes.
+
+## What to update before using
+
+| File | What to change |
+|---|---|
+| `.gitconfig` | Set your own `name` and `email` under `[user]` |
+| `.config/zsh/init.zsh` | Replace `github homelab` with your own SSH key names |
+| `.config/hyprpanel/config.json` | `wallpaper.image` — update to your wallpaper path |
+| `.config/hypr/modules/vars.conf` | Remove the NVIDIA `env` lines if you don't have an NVIDIA GPU |
+| `.config/hypr/modules/windows.conf` | Update the monitor name to match your setup |
+| `.local/share/applications/openscad.desktop` | Update the AppImage path under `Exec=` |
+
+## Key bindings
+
+| 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 |
+
+## Scripts (`~/.wraith/scripts/`)
+
+| Script | What it does |
+|---|---|
+| `brightness.sh` | Get/set external monitor brightness via DDC/CI |
+| `screenshot.sh` | Region / window / full-screen capture menu |
+| `packages.sh` | Browse and uninstall packages; prompts to update |
+| `arch-spring-cleanup.sh` | TUI maintenance wizard (upgrade, cache, orphans, logs) |
+| `butt-out.sh` | Countdown timer with optional shutdown |
+| `display.sh` | Switch monitor input source via DDC |
+| `firewall.sh` | UFW setup (run once) |
+| `mimetypes.sh` | Set default apps via `xdg-mime` |
+| `internet-connectivity.sh` | Outputs network status JSON for Waybar |
+| `cycle-special-workspace.sh` | Cycle through Hyprland special workspaces |
+| `waybar-swaync.sh` | Restart Waybar and SwayNC |
+
+## Binaries (`~/.wraith/bin/`)
+
+| Binary | What it does |
+|---|---|
+| `smart-launch` | Focus an existing window or launch a new one (GUI / TUI / web) |
+| `install-app` | Interactive installer for web apps, TUI apps, and AppImages |
+| `chromium-pwa` | Launch a Chromium PWA with an isolated profile |
+| `wdu` | Disk usage summary |
+| `swaylock` | Wrapper around swaylock with the configured theme |