Skip to content

pad92/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,081 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Dotfiles Collection

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.

🚀 Installation & Quick Start

For the latest updates, check the Changelog. You can also download the current version directly from here.

Full Setup

This script performs a full setup, applying all configurations and managing necessary installations.

git clone https://gitlab.com/pad92/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install

Editor Only

  • 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.

⚙️ Customization & Personalization

To customize and adapt this dotfiles collection to your own system and identity, you should adjust the following key configuration files:

👤 Git Identity

  • ~/.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

🐚 Shell & Environment (Zsh)

  • .zshrc: Adjust primary shell configurations (e.g., local language LANG, default editor EDITOR, and the active Oh My Zsh plugins list).
  • zsh/init/aliases.zsh: Add, edit, or remove terminal aliases to fit your daily workflow.

🖥️ Wayland & Hyprland Session

  • .config/uwsm/env: Manage global environment variables for the Wayland session (e.g., default browser BROWSER, default terminal TERMINAL, and default cursor theme XCURSOR_THEME) and set hostname-specific GPU/driver optimizations (such as AQ_DRM_DEVICES or Vulkan driver settings).
  • .config/hypr/: Adjust window manager bindings, window rules, workspaces, and look-and-feel preferences (now migrated to Lua).
  • ~/.local/share/backgrounds/: Add your custom wallpaper image files here to integrate with desktop slideshow/randomizer scripts.

💻 Terminals & Tools

  • .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.

🛠️ Core Tooling

🐚 Shell (Zsh)

Configured for maximum efficiency with advanced features:

  • Plugins: Powered by oh-my-zsh with docker, ansible, git, vscode, thefuck, and syntax highlighting/autosuggestions.
  • Customization: Extensive history management, custom prompt themes, and path exports for custom binaries ($HOME/.bin).

⌨️ Zsh Keyboard Shortcuts

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

🐚 Custom Aliases & Functions

A set of highly optimized aliases and shell functions defined in zsh/init/aliases.zsh and autoloaded from zsh/functions/:

📌 Handy Aliases
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
ggc git-gen-commit Automatically generate semantic git commit messages
volmute / volinc / voldec ManageSound.sh Convenient system audio/volume control aliases
mirrord / mirrors / mirrora mirror [delay/score/age] Quick sorting alternatives for Arch mirrorlist optimization
🛠️ Custom Shell Functions

Organized by functional modules for clean management:

🐧 Arch Linux & System Maintenance (zsh/functions/arch.zsh)
  • arch_update: Comprehensive system upgrade. Triggers yay -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 / .pacsave files.
  • mirror [delay|score|age]: Fetches, filters, and rates the fastest Arch Linux package mirrors located in France utilizing reflector.
📁 Archives & Crypto (zsh/functions/archive.zsh, crypt.zsh)
  • 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 using openssl.
🌐 Networking & Utilities (zsh/functions/ ip.zsh, meteo.zsh, transfer.zsh, curl.zsh, youtube.zsh)
  • ip_a / ip_l / ip_p: Show network info (All, Local, or Public IP address).
  • meteo: Instant graphical terminal-based weather forecast using wttr.in.
  • transfer <file>: Fast upload of any file to transfer.sh and 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 by bc.
  • src: Sourced reloader helper for shell config.

📖 Editors (Vim & Neovim)

⚡ Neovim (Modern & Modular)

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.nvim for fast startup and lazy loading.
    • Fuzzy Finder: Built with telescope.nvim for rapid interactive file/buffer/symbol searching.
    • Syntax & AST: Powered by nvim-treesitter for beautiful, precise, and fast syntax highlighting.
    • Native LSP: Utilizes the modern native LSP framework (vim.lsp.config/vim.lsp.enable in Neovim 0.11+) integrated with mason.nvim and nvim-cmp for rich IDE autocompletions and go-to-definitions.
    • Git Integration: Realtime changes displayed in the margin by gitsigns.nvim.
    • Aesthetics: Sleek gruvbox colorscheme coupled with lualine.nvim statusline and vertical indentation guides.

📖 Legacy Vim

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 & Session Management

  • Terminal Emulators: Optimized configuration for Alacritty.
  • Multiplexer: tmux configured with plugins for session management and layout persistence.

🖥️ Desktop Environment & Window Management

⌨️ Unified Keybindings

Shortcut Action
SUPER + Return Terminal
SUPER + Shift + Q Close window
SUPER + [1-9] Focus workspace
SUPER + Shift + [1-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

Hyprland (Primary)

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/"

🔑 TTY Launch & Session Integration

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 (~/.zshrc or ~/.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.

📦 System Utilities & OS Specifics

🔧 Custom Scripts

A collection of shell scripts and utilities located in the bin/ directory:

  • backup.sh: System backup utility.
  • razer_dpi.py: Razer peripheral DPI management.
  • Zsh Functions & Aliases: See the comprehensive Custom Aliases & Functions section for a detailed list of system maintenance, utility, and archive handling scripts.

🐧 OS Maintenance

  • Arch Linux (Primary):
  • Ubuntu: Compatible configurations provided.

📋 Application Ecosystem Summary

A comprehensive list of configured tools across the stack:

Category Tools
Shell Zsh
Editor Vim, VSCode
Terminal Alacritty
Multiplexer Tmux
UI/UX Waybar, Wofi, Mako
System Fastfetch, Htop

Maintained by pad🐐 with ❤️ since 2015 (11+ years)