My Arch Linux Configuration!
A keyboard-first home for my desktop, terminals, and development tools.
The stack · Quick start · Temperz · Setup notes · Extra tools
Personal dotfiles for an Arch Linux workflow built around Hyprland, Neovim, and the terminal. Configurations stay in this repository, with symlinks putting them where they belong.
The current issues pertain to having a polished hyprland setup replicatable across vm environments. While I can get it almost smooth, I am unable to get it perfect and replicatable across multiple environments. The lightweight i3 VM profile provides an X11 alternative with Ghostty, Fish and Fastfetch.
| Layer | Tools |
|---|---|
| Desktop | Hyprland · Hyprpaper · Waybar · Rofi |
| Desktop widgets | Clock · Calendar · Weather · System · Network · Pomodoro · Media |
| Terminals | Ghostty · Alacritty · WezTerm |
| Shell & sessions | Fish · Starship · tmux |
| Editor | Neovim |
| System info | btop · Fastfetch · Neofetch |
| Dotfile manager | Temperz |
Clone it. Open the control panel. Pick your configs.
git clone https://github.com/Fozzyack/dotfiles.git ~/dotfiles
cd ~/dotfiles
mkdir -p ~/.config
./temperzImportant
These configs are tailored to my setup. Review them and back up your existing configurations first. Keep this repository in place after installation: the symlinks point to its files.
Temperz is a small Zig CLI for managing dotfiles and development tools. A Linux x86-64 executable is included as ./temperz; run it from this repository's root so it can find configs/.
[ temperz ] DEV ENVIRONMENT / CONTROL PANEL
Your tools. Your dotfiles. One place.
+--------------------------------------------------+
[1] Install configs Link your dotfiles
[2] Remove configs Unlink your dotfiles
[3] Install dependencies Set up your dev tools
[4] Pull updates Sync this repository
[5] Setup VM Link your VM dotfiles
[6] Install VM deps Set up your VM tools
[7] Exit
+--------------------------------------------------+
READY >
| Action | What happens |
|---|---|
| Install configs | Link individual configs or all of them. Existing destination paths are skipped. |
| Remove configs | Remove corresponding home-directory paths; keep repository sources. Missing paths are skipped. |
| Install dependencies | Run one or all commands from configs/install.config. Batch installation stops at the first failure. |
| Pull updates | Run git pull in the current repository. |
| Setup VM | Link vm/home/ entries into ~/ and vm/configs/ entries into ~/.config/; existing entries are skipped. See VM setup. |
| Install VM deps | Run commands from vm/install.config for the lightweight Arch/i3 desktop. |
Type a menu number and press Enter. Empty input exits the main menu or processes all items in a config/dependency submenu. Set NO_COLOR=1 to disable colors.
Warning
Temperz does not check whether a matching destination is a symlink before removing it. Review the selected paths carefully, especially if installation skipped an existing file.
~/dotfiles/
├── configs/
│ ├── configs/ → ~/.config/
│ ├── home/ → ~/
│ ├── windows/ Windows dotfiles for manual setup
│ ├── gtk-widgets/ Retro GTK desktop widgets (manual setup)
│ └── install.config Dependency commands, one per line
├── vm/ Separate profile for Temperz's VM menus
│ ├── home/ → ~/ (includes .xinitrc)
│ ├── configs/ → ~/.config/ (one link per app)
│ └── install.config VM-only dependency commands
├── other-configs/ Extra configs for manual setup
├── ff/ Fuzzy file finder
├── dfile/ File information tool
├── scripts/ Legacy install / uninstall scripts
└── temperz Dotfile control panel
Temperz preserves entry names; it does not add a leading dot. For example, configs/home/wezterm.lua becomes ~/wezterm.lua, while configs/configs/nvim/ becomes ~/.config/nvim/.
The dependency commands use sudo pacman; no AUR helper is required. Run sudo pacman -Syu first to avoid partial upgrades. Review configs/install.config before running it, and only use trusted commands.
Build Temperz from source
If the bundled executable is unsuitable for your system, build it from the Temperz repository with Zig:
git clone https://github.com/Fozzyack/temperz.git ~/temperz
cd ~/temperz
zig build
cd ~/dotfiles
~/temperz/zig-out/bin/temperzWindows-specific dotfiles are available in configs/windows/, including .glzr/, alacritty/, and .wezterm.lua. These are not installed by Temperz and require manual setup on Windows.
Use Temperz's Setup VM menu to select pi and fish (or install all).
Pi's configuration lives at ~/.config/pi; the VM Fish config exports
PI_CODING_AGENT_DIR so Pi finds it without a separate setup script.
Install VM deps installs Pi with Bun. Open a new Fish session afterward.
See the Pi config guide for shortcuts, other shells,
and private-state storage caveats.
Install the tmux Plugin Manager (TPM):
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmEdit configs/configs/hypr/hyprpaper.conf to match your monitor names and wallpaper paths. The referenced wallpapers under ~/wallpapers/ are not included in this repository.
You may need to install language servers for the languages you use. In Neovim, run :help lspconfig-all for configuration guidance.
The desktop widgets, Waybar, and Ghostty share a charcoal, warm cream, orange, teal, and muted blue palette with Terminess Nerd Font Mono lettering. Ghostty has bottom tabs with orange active markers, blue inactive labels and subtle bevels, plus matching menus, dialogs, search fields and notifications. Its GTK styling requires GTK 4.16+ and libadwaita 1.6+.
Link the whole configs/configs/ghostty/ and
configs/configs/waybar/ directories through Temperz
so their themes, stylesheets and menu helpers remain together. Restart Ghostty
after first enabling its stylesheet; subsequent config reloads use Ctrl+Shift+,.
configs/gtk-widgets/ contains independent GTK 4 / Wayland
widgets. They sit above the wallpaper but behind normal windows, reserve no
screen space, and can be closed individually with [x] or Escape when focused.
| Widget | Features |
|---|---|
| Clock | Large 24-hour display, separate seconds, local date/timezone and day-progress meter |
| Calendar | Today card, clickable Monday-first grid, ISO week numbers and selected-date details |
| Weather | Open-Meteo conditions, ASCII artwork, temperature, humidity and wind; configurable city/units |
| System | CPU/RAM meters, CPU history and load averages |
| Network | Live download/upload rates, traffic histories, interface selector and byte totals |
| Pomodoro | Start/pause/reset, saved focus/break durations and completion notifications |
| Media | MPRIS player selector, album art, track details, progress and playback controls; manual-launch only |
Install the widget dependencies on Arch:
sudo pacman -S python-gobject gtk4 gtk4-layer-shellThe widgets are outside Temperz's managed config directories. Run them from this
repository, or use Waybar's WIDGETS ▾ dropdown to launch any widget individually.
The menu requires the Waybar directory to be linked to ~/.config/waybar; its
launcher resolves widget paths relative to the repository. Weather defaults to
Perth in the menu; edit its action to change the city. Media needs a running
MPRIS-compatible player such as Spotify or VLC.
From the repository root, apply widget changes and reload Waybar:
configs/gtk-widgets/restart-widgets.sh
pkill -SIGUSR2 -x waybarThe restart script launches the six enabled widgets, preserves running weather
arguments, and closes media without relaunching it. Launch media separately with
python3 configs/gtk-widgets/media_player.py or the Waybar menu.
Clock/calendar/network/Pomodoro use 324px default widths; weather/system/media
use 360px. Network is anchored to the bottom-left; the other positions and margins
are configured in configs/gtk-widgets/widget.py. Colours and sizing live in
configs/gtk-widgets/clock.css. Logs go to ~/.local/state/retro-widgets/ (or
$XDG_STATE_HOME/retro-widgets).
For Hyprland autostart, set city in
configs/gtk-widgets/hyprland-widgets.lua, then load it from your Hyprland Lua
configuration using its absolute path. The supplied path must be updated for
your clone location; widget scripts are resolved beside the Lua file automatically.
This starts the six enabled widgets, including Network and Pomodoro, on login, not on a
configuration reload.
Pomodoro defaults to 25/5/15 minutes, with a long break after four focus
sessions. Expand DURATIONS / MINUTES to customize and save settings in
~/.config/retro-widgets/pomodoro.json. Each interval waits for START; restarting
resets the countdown and session count, but retains saved durations.
See the widget guide, Waybar controls, and Ghostty guide for details.
A fuzzy finder for files and directories. There is no automated installation method yet; run the included executable directly:
cd ~/dotfiles/ff
./ffcli -sShell wrappers are available in ff/ff.sh and ff/ff.fish.
A small tool for displaying file or directory information. There is no automated installation method yet:
cd ~/dotfiles/dfile
./dfile /path/to/file/or/directoryEarlier managers and scripts
- DOTMAN: The previous dotfile manager is available in the dotfile-manager repository. It is not bundled here; use Temperz for the current repository layout.
- Shell scripts:
scripts/install.shandscripts/uninstall.share retained for reference. The installer still uses the old~/dotfiles/configs/<app>paths and is not compatible with the current layout without edits.
Legacy uninstall warning:
scripts/uninstall.shalso deletes~/.local/share/nvim, including installed Neovim plugins and other data. Prefer Temperz for managing the current configs.
Personal configs. A work in progress. Make yourself at ~/.