8000
Skip to content

XcluEzy7/windots

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,771 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

title

A Windows 11 Dotfiles Repo infused with Catppuccin Theme TWITTERΒ Β 


Last CommitΒ Β  REPO SIZEΒ Β  LICENSEΒ Β  StargazersΒ Β 


Important

The below screenshots are taken on my main monitor, which has the resolution of 3440x1440. Configurations in this repository are compatible with wide screen monitors and have been tested on sizes ranging from 1920x1080 to 3440x1440, but should work for any monitor size.

Note: The glassit VSCode extension was present in the original repository but has been removed from this fork as it did not work properly with my setup.



⚠️ Disclaimer

Note

This is a fork of the original windots repository by @jacquindev. This fork has been customized for personal use and may differ from the original repository.

  • Original Repository: Created by @jacquindev (Jacquin Moon) - View Original Repo
  • Original Author's Last Contribution (to original repo): ~7 months ago (approximately May 2025)
  • Fork Maintained By: @XcluEzy7 (Erik Garcia) - Independent changes began November 21, 2025

This repository contains configurations and dotfiles that have been adapted to fit personal preferences. Some apps or packages may have been added / removed / reconfigured from the original setup.


✨ Prerequisites

Highly Recommended:


πŸŒ† Preview

Yasb's Catppuccin Statusbar

yasb1

lazygit

preview

yasb3

Rainmeter's Catppuccin Statusbar

rainmeter1

rainmeter2

rainmeter3

  • Transparent File Explorer

fileexplorer


🌷 Install

  • Simply clone this repo to your_location
git clone https://github.com/XcluEzy7/windots.git your_location
cd `your_location`
  • In your elevated PowerShell Terminal, run: .\Setup.ps1
. .\Setup.ps1

πŸ”§ Selective Installation & Reinstallation (v0.02)

🌍 Dynamic Environment Variable Expansion (v0.03)

πŸš€ Global Access & Tab Completion (v0.04)

⚑ Quick re-install Command with w11dot-setup (v0.05)

πŸ”¬ Improved PowerShell Experimental Features Support (v0.06)

βš™οΈ PowerShell 5.1 Module Installation Support (v0.07)

πŸ”‘ YASB GitHub Token Configuration (v0.08)

🐧 WSL Configuration Setup with Terminal Editor Support (v0.09)

πŸ”„ Application Update Management (v0.10)

⌨️ Terminal Shortcuts Cheatsheet Module (v0.11)

Important

PowerShell Module Installation: PowerShell modules from the PowerShell Gallery must be installed in PowerShell 5.1 (Windows PowerShell), not PowerShell 7.x. The Setup.ps1 script automatically handles this by delegating module installation to PowerShell 5.1 (powershell.exe) even when the script itself runs in PowerShell 7.x. This ensures modules are installed in the correct location and are available to both PowerShell versions.

After the initial setup, Setup.ps1 is automatically added to your PATH, allowing you to run it from anywhere in your terminal. The script also includes:

  • Function wrapper: Call w11dot-setup from anywhere (e.g., w11dot-setup -Environment -Force)
  • Tab completion: Press Tab after w11dot-setup - to see all available parameters with descriptions
  • Case-insensitive parameters: -Environment, -environment, and -ENVIRONMENT all work the same
  • Always available: Once the initial setup completes, the w11dot-setup command and Setup.ps1 script are permanently available from any directory, allowing you to run specific installation sections whenever needed
  • Selective execution: Run individual sections of the installer independently (e.g., w11dot-setup -Packages, w11dot-setup -Git) without running the full installation process
  • Automatic privilege escalation: When running w11dot-setup commands, the function automatically uses gsudo to elevate privileges. A UAC prompt will appear - simply click "Yes" and the script will run with admin privileges. No need to manually open an elevated terminal!

Environment variables in appList.json now automatically expand to user-specific paths. No need to manually edit hardcoded paths - use placeholders like %USERPROFILE% or %ProgramFiles% and they will be automatically resolved to the correct paths for each user during setup.

PowerShell experimental features are now properly enabled with improved error handling and validation. The script correctly identifies feature names (e.g., PSSubsystemPluginModel), validates their existence before enabling, and provides clear warnings about PowerShell restart requirements. When PSSubsystemPluginModel is enabled, the script automatically attempts to install the CompletionPredictor module, with helpful guidance if a restart is required first.

The WSL setup section now includes interactive .wslconfig file configuration. When running w11dot-setup -Wsl, the script will:

  • Copy the .wslconfig template from config/home/.wslconfig to your user profile
  • Prompt you to configure the file with your system's resources (memory, processors, swap size, etc.)
  • Open the file in a terminal editor (nvim or micro, if available) for editing before copying to the destination
  • Wait for you to save and exit the editor, then automatically copy the configured file to $env:USERPROFILE\.wslconfig
  • Allow you to skip configuration if you prefer to configure it later

The setup script supports skip parameters to run only specific sections of the installation. This is useful for:

  • Reinstalling missing packages after issues
  • Updating specific configurations
  • Testing individual sections
  • Force overwriting existing configurations

Available Skip Parameters:

  • -Packages - Install/reinstall WinGet, Chocolatey, and Scoop packages
  • -PowerShell - Setup PowerShell modules and experimental features
  • -Git - Configure Git settings
  • -Symlinks - Create symbolic links for dotfiles
  • -Environment - Set environment variables
  • -Addons - Install package addons/plugins
  • -VSCode - Install VSCode extensions
  • -Themes - Install Catppuccin themes
  • -Miscellaneous - Run miscellaneous tasks (yazi plugins, bat themes)
  • -Komorebi - Setup Komorebi & YASB engines
  • -NerdFonts - Install Nerd Fonts
  • -WSL - Install Windows Subsystem for Linux
  • -Updates - Update all installed applications from appList.json

Force Mode: Use the -Force parameter with any skip parameter to overwrite existing configurations or force reinstall packages.

Examples:

# From the repository directory (first time setup)
. .\Setup.ps1 -Packages

# From anywhere after initial setup (Setup.ps1 is in PATH)
w11dot-setup -Packages -Force
Setup.ps1 -Environment -Force
w11dot-setup -Git

# Force reinstall all packages even if already installed
w11dot-setup -Packages -Force

# Only setup environment variables, overwrite existing
w11dot-setup -Environment -Force

# Only setup symlinks, overwrite existing files
w11dot-setup -Symlinks -Force

# Only install VSCode extensions, reinstall even if exists
w11dot-setup -VSCode -Force

# Update all installed applications from appList.json
w11dot-setup -Updates

Note

  • Only one skip parameter can be used at a time. If no skip parameter is provided, the script runs the full installation as normal.
  • After the initial setup, Setup.ps1 is added to PATH automatically. You may need to restart PowerShell or reload your profile for PATH changes to take effect.
  • Use w11dot-setup (function) or Setup.ps1 (script) - both work from anywhere once PATH is configured.
  • Tab completion works for all parameter names - just type w11dot-setup - and press Tab to see available options.

Tip

Privilege Escalation: The w11dot-setup function automatically uses gsudo to elevate privileges when needed. If gsudo is not installed, you'll see a warning and can install it with winget install gerardog.gsudo. The function will attempt to run without elevation as a fallback, but most setup operations require admin privileges.

πŸ”„ Application Update Management (v0.10)

The -Updates parameter allows you to update all installed applications listed in appList.json using their respective package managers. This feature intelligently manages updates across Winget, Chocolatey, and Scoop packages.

Usage:

# Update all installed applications
w11dot-setup -Updates

# Update only specific package managers (for testing)
.\updateApps.ps1 -Winget
.\updateApps.ps1 -Choco
.\updateApps.ps1 -Scoop
.\updateApps.ps1 -Choco -Scoop  # Multiple managers

How It Works:

  1. Smart Detection: The script checks which package manager installed each application and uses the correct update command for that manager.

  2. Pre-Update Checks: Before attempting to update, the script verifies if an update is actually available:

    • Winget: Compares installed version with available version using winget list
    • Chocolatey: Uses choco outdated to check for available updates
    • Scoop: Parses scoop update output to detect "latest version" status
  3. Privilege Management:

    • Winget & Chocolatey: Can run with admin privileges (automatically elevated if needed)
    • Scoop: MUST run as non-privileged user to prevent package corruption. The script automatically spawns a non-admin process when running as admin.
  4. PowerShell Module Packages: Packages ending in *psmodule (e.g., burnttoast-psmodule) are automatically handled in PowerShell 5.1 context with PowerShellGet module imported, as required by Chocolatey's module installation process.

  5. Output & Logging:

    • Success Logs: Saved to %USERPROFILE%\w11dot_logs\apps\appUpdate_{timestamp}_success.log
      • Concise entries showing package manager, package name, and version changes
      • Format: βœ… manager | package | version (or old -> new)
    • Error Logs: Saved to %USERPROFILE%\w11dot_logs\apps\appUpdate_{timestamp}_error.log
      • Verbose error details for troubleshooting failed updates
    • Console Output: Clean, color-coded status messages:
      • (up to date) - Package is already at the latest version
      • (success) - Package was successfully updated
      • (failed) - Update encountered an error
      • (skipped) - Package is not installed
  6. Update Status Detection:

    • Packages are marked as "up to date" if:
      • No newer version is available
      • Installed version matches available version
      • Package manager reports "already up to date" or "latest version"
    • Only packages that actually need updating will show "Updating..." message

Best Practices:

  • Run w11dot-setup -Updates regularly to keep your applications current
  • Check the success log to see which packages were updated and their version changes
  • Review error logs if any packages fail to update
  • Use individual package manager switches (-Winget, -Choco, -Scoop) for testing or selective updates

Note: The update process respects the autoInstall setting in appList.json. Only packages from package managers with autoInstall: true will be processed.

⌨️ Terminal Shortcuts Cheatsheet Module (v0.11)

The TerminalHelpers.psm1 module provides comprehensive cheat sheets for terminal shortcuts with unified keybindings across Windows Terminal and WezTerm.

Usage:

# Display WezTerm shortcuts
wezhelp
Show-WezTermHelp

# Display Windows Terminal shortcuts
wthelp
Show-WTHelp

Features:

  • Unified Shortcuts: Common shortcuts are identical across both terminals for consistency
  • Color-Coded Display: Uses PowerShell native colors (Green for common, Yellow for terminal-specific)
  • Organized Categories: Shortcuts grouped by function (Tabs, Panes, Edit, Scrolling, etc.)
  • Justifications: Explains why 3-modifier-key shortcuts are used for advanced features
  • GlazeWM Compatible: All shortcuts use Ctrl+Shift to avoid conflicts with GlazeWM window manager
  • Auto-Loaded: Module is automatically loaded via PowerShell profiles, available globally

Shortcut Categories:

  • Tabs: New/close tabs, navigation between tabs
  • Panes: Split (vertical/horizontal), navigation, management, advanced features
  • Edit: Copy/paste, find/search, mark mode
  • Font Size: Increase/decrease/reset font size
  • Scrolling: Scroll up/down, jump to top/bottom
  • Settings: Open settings, command palette, reload configuration
  • Special Features: Terminal-specific features (WezTerm: copy mode, launcher menu, etc.)

Key Design Principles:

  • Avoid 3-modifier keys (Ctrl+Shift+Alt) unless justified for advanced features
  • Prefer Ctrl + action key or Ctrl + Shift + action key for common operations
  • Visual shortcuts: Ctrl+| for vertical split, Ctrl+\ for horizontal split
  • Terminal-specific features clearly marked (e.g., "WT Only", "WezTerm Only")

Module Location:

  • dotposh/Modules/TerminalHelpers.psm1
  • Automatically loaded via PowerShell profiles (Profile.ps1, WindowsProfile.ps1)

⁉️ Overriding Defaults

Important

Before running the Setup.ps1 script, please check the appList.json file to ADD/REMOVE the apps you would like to install.

VSCode Extensions:
Edit the VSCode's extensions list to ADD/REMOVE the extensions you would like to install.

PowerShell Profile:
The Profile.ps1 is symbolically linked to this repository. Be sure to overwrite the Profile.ps1 if you do not want its settings and configuration, as these settings are specifically tailored for my workflow.


😎 Clink Setup
  • In your Command Prompt console, type:

    clink installscripts "your_location\clink\clink-custom"
    clink installscripts "your_location\clink\clink-completions"
    clink installscripts "your_location\clink\clink-gizmos"
    clink installscripts "your_location\clink\more-clink-completions"
  • Replace your_location with full path to where you cloned this repository.

Note

The clink-custom directory contains Lua scripts to extend clink based on the programs you use. If you do not have the programs define in the scripts, they will not be activated.


🀦 Note to Self(Git-Noob): The Submodule That Lives Its Own Life

[!WARNING] Dear Future Me (and anyone else who stumbles upon this):

Yes, that dotposh/Config/powershell-completions-collection thing is a submodule. No, it's not broken. Yes, it will show as "modified content" in git status when it's in detached HEAD state (which is like 90% of the time because submodules are drama queens).

The Prayer Point to Fix Your Sanity:

git submodule update --remote dotposh/Config/powershell-completions-collection

This updates the submodule to the latest commit from its remote repository. Think of it as giving the submodule a reality check and telling it "hey, you should probably sync with your remote friends."

When Things Go Sideways (Because They Will):

  1. Submodule is in detached HEAD? (You'll know because git status will yell at you)
cd dotposh/Config/powershell-completions-collection
git checkout main  # or maste
6DB6
r, whatever branch it uses
cd ../../..
git add dotposh/Config/powershell-completions-collection
git commit -m "update submodule because it was being difficult again"
  1. Want to update it to the latest?
git submodule update --remote dotposh/Config/powershell-completions-collection
git add dotposh/Config/powershell-completions-collection
git commit -m "update powershell-completions-collection submodule"
  1. Cloned the repo and submodule is empty?
git submodule update --init --recursive

Remember: Submodules track specific commits, not branches. They're like that friend who always shows up at the exact commit you told them to, even if the world has moved on. You have to explicitly tell them to update. They won't do it themselves because they're too busy being... submodules.

TL;DR: If git status shows the submodule as modified and you didn't change anything, just run git submodule update --remote dotposh/Config/powershell-completions-collection and commit the update. Your future self will thank you. Probably.


⛏ Setup Development Tools with MISE (mise-en-place)

Ensure that mise command available on your system (using scoop install mise)

# Enable experimental features:
mise settings experimental true

The below command with install latest LTS version of NodeJS, and also automatically install NPM global packages define in .default-npm-packages

# Install latest NodeJS LTS
mise use -g node@lts

For further information please visit: https://mise.jdx.dev.


🌟 Bootstrap WSL

WSL setup can be done automatically by using Ansible. Any details can be found here: https://github.com/jacquindev/automated-wsl2-setup.

➝ WSL dotfiles are maintained in this repository: https://github.com/jacquindev/dotfiles.


β›πŸ§± Extra Setup (optional)

Follow the below links to download and learn to how to setup:

🌈 Catppuccin Themes 🎨
🎸 Spicetify Setup 🎧

[!NOTE] I do not use Spicetify personally. For setup and configuration details, please refer to the original repository.


✨ Features

Details
πŸ–₯️ CLI/TUI Apps
Entry App
Terminal Emulator Windows Terminal βš™οΈ
File Explorer yazi βš™οΈ
Fuzzy File Finder fzf
System Monitor btop
System Fetch fastfetch βš™οΈ
Git TUI lazygit βš™οΈ

Details
🌎 Replacement
Entry App
cat bat βš™οΈ
cd zoxide
ls eza βš™οΈ
find fd
grep ripgrep

Details
πŸ–±οΈ GUI Apps
Entry App
App Launcher PowerToys Run (PowerToys)
Git Clients GitHub Desktop, GitKraken
IDEs IntelliJ IDEA Community, Visual Studio Code
Text Editors Notepad++, Obsidian
Development DevPod (Client-Only Codespaces), Postman
Containerization Podman Desktop, VirtualBox
Security Kleopatra (GPG Key Manager)
System Tools PowerToys, Start11
Networking ProtonVPN, Synergy
Customization Rainmeter, Lively Wallpaper

Details
πŸ“Œ Git Addons
Installer Link Description
winget GitHub Desktop Simple collaboration from your desktop.
winget GitKraken Desktop Dev Tools that simplify & supercharge Git.
scoop gh Bring GitHub to the command line.
scoop git-aliases Oh My Zsh's Git aliases for PowerShell.
scoop git-crypt Transparent file encryption in Git.
scoop git-filter-repo Quickly rewrite git repository history (filter-branch replacement).
scoop git-lfs Improve then handling of large files.
scoop git-sizer Compute various size metrics for a Git repository.
scoop gitleaks Detect secrets like passwords, API keys, and tokens.
npm commitizen + cz-git Write better Git commits.
npm git-open Open the GitHub page or website for a repository in your browser.
npm git-recent See your latest local git branches, formatted real fancy.
git aliases Include git aliases for git command for faster version control.
Details
πŸ“ Text Editor / Note Taking

πŸŽ‰ Credits

Big thanks for those inspirations:


πŸ‘€ Author

Original Author

Current Maintainer


πŸ“œ License

This repository is released under the MIT License.

Feel free to use and modify these dotfiles to suit your needs.


Show your support

Please give a ⭐️ if this project helped you!

Buy Me A Coffee

About

My Windows 11 dotfiles - cedits to jacquindev

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • PowerShell 65.0%
  • Lua 32.3%
  • CSS 1.4%
  • Shell 1.3%
0