This repository contains my curated personal configuration files (dotfiles) for various operating systems and environments. It aims to provide a robust, reliable, and highly customized foundation for modern Linux desktop usage.
For the latest updates, check the Changelog. You can also download the current version directly from here.
This repository provides automated installation workflows tailored per operating system:
- Arch Linux & CachyOS (Primary): Runs the interactive setup manager.
git clone https://gitlab.com/pad92/dotfiles.git ~/.dotfiles cd ~/.dotfiles ./install
[!TIP] High-Fidelity Installer: The interactive manager presents a clean menu to select package suites (Base, Fonts, GTK, Hyprland, Nvidia, Steam, etc.). It automatically skips already installed packages and configures
yayorparufor AUR dependencies.
- To set up the editor configuration without installing the full suite:
curl -sSL https://gitlab.com/pad92/dotfiles/-/raw/main/vim.sh | sh- Quick Install: You can download the pre-packaged configuration from the Artifacts.
To customize and adapt this dotfiles collection to your own system and identity, you should adjust the following key configuration files:
~/.gitconfig.local(Not tracked, created locally): Define your personal Git credentials here. It is automatically imported by the main.gitconfig:[user] name = Your Name email = your.email@example.com signingkey = your_ssh_or_gpg_key
.zshrc: Adjust primary shell configurations (e.g., local languageLANG, default editorEDITOR, and the active Oh My Zshpluginslist).zsh/init/aliases.zsh: Add, edit, or remove terminal aliases to fit your daily workflow.
.config/uwsm/env: Manage global environment variables for the Wayland session (e.g., default browserBROWSER, default terminalTERMINAL, and default cursor themeXCURSOR_THEME) and set hostname-specific GPU/driver optimizations (such asAQ_DRM_DEVICESor Vulkan driver settings)..config/hypr/: Adjust window manager bindings, window rules, workspaces, and look-and-feel preferences (now migrated to Lua). Host-specific hardware layouts (such as monitor outputs and static workspace mappings) are modularly loaded fromhosts/<hostname>.luato maintain clean dotfiles portability.~/.local/share/backgrounds/: Add your custom wallpaper image files here to integrate with desktop slideshow/randomizer scripts.
.config/alacritty/: Customize the Alacritty terminal's font, window spacing, opacity, and color palette..tmux.conf: Customize keys and options for your Tmux workspace..config/nvim/: Curated, modern, and modular Neovim configuration written from scratch in Lua..vimrc: Adjust keybindings and plugin preferences for your core legacy Vim editor.~/.config/electron-flags.conf: Consolidated configuration for all Electron-based editors (VS Code, Codium, and Antigravity IDE) to ensure optimal Wayland compatibility and native GPU acceleration across all hosts.~/.dotfiles/.luarc.json: Project-specific Lua environment settings optimized for standard workspace validation and seamless autocompletion.
Configured for maximum efficiency with advanced features:
- Plugins: Powered by
oh-my-zshwithdocker,ansible,git,vscode,thefuck, and syntax highlighting/autosuggestions. - Customization: Extensive history management, custom prompt themes, and path exports for custom binaries (
$HOME/.bin).
Configured in zsh/init/key-bindings.zsh for maximum command line productivity:
| Shortcut | Action | Description |
|---|---|---|
Ctrl + R |
History Search | Search backward incrementally in history |
Ctrl + X, Ctrl + E |
Edit Command | Edit current command line in $EDITOR (Vim) |
Ctrl + Left |
Back Word | Move cursor backward one word |
Ctrl + Right |
Forward Word | Move cursor forward one word |
Alt + L (Esc + L) |
Quick ls |
Run the ls command immediately |
Alt + W (Esc + W) |
Kill Region | Cut/delete text from the cursor to the mark |
Alt + M |
Copy Shell Word | Copy the previous word on the command line |
Up Arrow (after typing) |
Fuzzy Search | Search history forward matching the typed prefix |
Down Arrow (after typing) |
Fuzzy Search | Search history backward matching the typed prefix |
PageUp / PageDown |
History Navigate | Move up/down through history lines |
Home / End |
Line Navigation | Go to the beginning/end of the line |
Shift + Tab |
Reverse Complete | Navigate backwards in the autocompletion menu |
Space |
Magic Space | Perform history expansion when pressing space |
A set of highly optimized aliases and shell functions defined in zsh/init/aliases.zsh and autoloaded from zsh/functions/:
| Alias | Target / Command | Purpose |
|---|---|---|
terraform |
tofu |
Uses OpenTofu as transparent replacement if available |
mediasync |
~/.../tools/mediasync.py |
Sync home media server repository |
backup |
~/.dotfiles/bin/backup.sh |
Trigger complete system backup script |
steam-opt |
steam-optimize |
Launch Steam with performance/GPU optimizations |
mirrord / mirrors / mirrora |
mirror [delay/score/age] |
Quick sorting alternatives for Arch mirrorlist optimization |
Organized by functional modules for clean management:
arch_update: Comprehensive system upgrade. Triggersyay -Syu --devel, firmware update checking (fwupdmgr), Flatpak updates, and automated orphans/caches cleanup.clean_arch: Cleans up packages orphans (pacman -Rns), purges pacman/yay cache (yay -Scc), removes old packages version caches (paccache), and detects outstanding.pacnew/.pacsavefiles.mirror [delay|score|age]: Fetches, filters, and rates the fastest Arch Linux package mirrors located in France utilizingreflector.
extract <file>: Extract-all wrapper that intelligently decompresses any archive format (.tar.bz2,.tgz,.zip,.rar,.7z, etc.).md5/sha1/sha256/sha512<string>: Instant, pipeline-friendly string hashing usingopenssl.gpg-encrypt <file/dir>(alias:gpge): Recursively encrypts files inside directories or a single file using GPG. Prompts for the GPG email and encrypts batch files with--trust-model always, preserving file modification times (mtime) and offering option to delete original files.gpg-decrypt <file/dir>(alias:gpgd): Recursively decrypts.gpgfiles inside directories or single files. Intelligently extracts.tar.gz.gpg/.tgz.gpgarchives, restores file modification times (mtime), and offers option to delete source encrypted files.
π Networking & Utilities (zsh/functions/ ip.zsh, meteo.zsh, transfer.zsh, curl.zsh, youtube.zsh, ssh.zsh)
ssh-copy-agent-keys [user@host]: Interactive shell function to copy selected SSH public keys from your localssh-agentto a remote server'sauthorized_keys, preventing duplicates.ip_a/ip_l/ip_p: Show network info (All, Local, or Public IP address).meteo: Instant graphical terminal-based weather forecast usingwttr.in.transfer <file>: Fast upload of any file totransfer.shand returns a direct shareable URL.curl_time <url>: Detailed HTTP connection profiling (DNS lookup, connect, start-transfer, and total times).youtubeEncode <file>: Re-encodes source video with optimized parameters (libx264,aac) for reliable YouTube uploads.radio: Easy interactive CLI radio terminal frontend.calc "<expr>": Command-line evaluator powered bybc.src: Sourced reloader helper for shell config.
A state-of-the-art configuration written completely in Lua from scratch, designed to turn Neovim into a blazing-fast, IDE-like developer workspace.
- Key Features:
- Plugin Manager: Managed by
lazy.nvimfor fast startup and lazy loading. - Fuzzy Finder: Built with
telescope.nvimfor rapid interactive file/buffer/symbol searching. - Syntax & AST: Powered by
nvim-treesitterfor beautiful, precise, and fast syntax highlighting. - Native LSP: Utilizes the modern native LSP framework (
vim.lsp.config/vim.lsp.enablein Neovim 0.11+) integrated withmason.nvimandnvim-cmpfor rich IDE autocompletions and go-to-definitions. - Git Integration: Realtime changes displayed in the margin by
gitsigns.nvim. - Aesthetics: Sleek
gruvboxcolorscheme coupled withlualine.nvimstatusline and vertical indentation guides.
- Plugin Manager: Managed by
My original editor configuration built with vundle.
- Key Features: Advanced statusline customization, robust filetype detection, and classic plugin support (e.g.,
vim-gitgutter,vim-fugitive).
- Terminal Emulators: Optimized configuration for Alacritty.
- Multiplexer:
tmuxconfigured with plugins for session management and layout persistence.
| Shortcut | Action |
|---|---|
SUPER + Return |
Terminal |
SUPER + Shift + Q |
Close window |
SUPER + [0-9] |
Focus workspace |
SUPER + Shift + [0-9] |
Move window to workspace |
SUPER + [Arrows/Vim keys] |
Focus window |
SUPER + Shift + [Arrows/Vim keys] |
Move window |
SUPER + F |
Fullscreen toggle |
XF86Audio... |
Audio Controls |
XF86Mon... |
Brightness Controls |
SUPER + E |
File manager |
SUPER + C |
Code editor |
SUPER + W |
Browser |
SUPER + M |
Music Player |
SUPER + Shift + Return |
Password Manager |
SUPER + L |
Lock |
SUPER + Delete |
Logout menu |
SUPER + ALT + Space |
Float/Tile |
SUPER + SHIFT + F |
Toggle Float |
SUPER + ALT + Right |
Change wallpaper |
Print / SUPER + P |
Screenshot |
My current primary Window Manager configuration.
Warning
Breaking Change: The Hyprland configuration has migrated to Lua. These files are compatible with Hyprland v0.55 and above.
- Configuration: Located in
.config/hypr - Wallpapers: Place images into
~/.local/share/backgrounds - Batch upload tip:
exiftool -q -if '$Keywords =~ /paysage/' -r ${SRC_DIR} -o "${XDG_DATA_HOME}/backgrounds/"
- Wallpaper Daemon (
awww): Wallpaper loading and randomization are fully managed via standard Systemd user services undergraphical-session.target:awww.service: Systemd user service wrapper for theawww-daemon. It is robustly configured to prevent startup race conditions in Wayland by waiting for the$WAYLAND_DISPLAYsocket (ExecStartPre) and clearing stale sockets, running with--no-cacheto prevent BrokenPipe and SIGABRT crashes.awww_random.timer: Triggersawww_random.service(which executesawww.sh) every 15 minutes to automatically rotate the wallpapers across all connected monitors.- Manual Trigger: Force wallpaper randomization at any time with
systemctl --user start awww_random.service, or use theSUPER + ALT + Rightkeyboard shortcut.
When launching Hyprland from a TTY, PAM and session management must be configured to support services like GNOME Keyring auto-unlock and UWSM session wrapping.
For a detailed, step-by-step setup covering:
- GNOME Keyring PAM configuration (
/etc/pam.d/login) - UWSM (Universal Wayland Session Manager) installation and setup
- TTY shell profile/rc integration (
~/.zshrcor~/.zprofile) - Systemd graphical session target and application autostart
See the Arch Linux Installation Guide - UWSM & PAM Setup.
Refer to the Hyprland Wiki - Systemd startup for official upstream details.
A collection of highly optimized Python, Bash, and shell scripts located in the bin/ directory:
steam-optimize: Advanced, monitor-aware Python 3 wrapper for launching Steam games with customized environment variables (e.g. RADV, Vulkan ICD, Mesa layers), game-specific overrides, dynamic Gamescope integration, and robust signal handling with automatic session cleanup.awww.sh: A robust wallpaper randomizer script that integrates seamlessly with theawwwdaemon, utilizingshuf -zandmapfileto safely load distinct wallpapers per monitor.backup.sh: Complete, high-performance system and configurations backup utility powered byrsync(fully integrated withssh-agent, no hardcoded local keys required).razer_dpi.py: Convenient Razer peripherals DPI management tool.- Zsh Functions & Aliases: See the comprehensive Custom Aliases & Functions section for a detailed list of system maintenance, utility, and archive handling scripts.
- Arch Linux:
- Detailed installation guide: Arch Linux / CachyOS Installation Guide.
- Includes
arch_updatefor full system updates andmirrorfunctions for mirrorlist management.
A comprehensive list of configured tools across the stack:
| Category | Tools |
|---|---|
| Shell | Zsh |
| Editor | Neovim, Vim, VSCode |
| Terminal | Alacritty |
| Multiplexer | Tmux |
| UI/UX | Waybar, hyprlauncher, Mako |
| Security | Proton Pass CLI |
| System | Fastfetch, Htop |
Maintained by padπ with β€οΈ since 2015 (11+ years)