A minimal, beautiful PowerShell profile themed with Catppuccin Mocha. Inspired by Linux terminal aesthetics, built for Windows.
This project is based on the work of SleepyCatHey. The original concept and setup were presented in his video, highly recommended if you want to understand the full setup or go further with your Windows terminal customization:
- Catppuccin Mocha colors throughout -- prompt, welcome message, search output
- Colored path segments -- each folder segment gets its own Mocha color
- Welcome message -- date, time, and a random dev quote on every startup
- Fastfetch integration with random ASCII art support
- Custom commands --
ll,touch,mkcd,whereis,show,cdh,hash,hex,weather,help showcommand -- file search with size, creation date, and modification datewhereiscommand -- finds commands in PATH and installed apps in the registryhelpcommand -- lists every custom command with a short description
| File | For |
|---|---|
Microsoft_PowerShell_profile.ps1 |
PowerShell 7 profile |
fastfetch-random.ps1 |
Fastfetch random ASCII script / PowerShell 7 |
Microsoft_PowerShell_profile-ps5.ps1 |
Windows PowerShell 5 profile |
fastfetch-random-ps5.ps1 |
Fastfetch random ASCII script / Windows PowerShell 5 |
config.jsonc |
Fastfetch config |
ascii-files/ |
ASCII art .txt files for fastfetch |
settings.json |
Windows Terminal settings |
| Tool | Purpose |
|---|---|
| PowerShell 7 or Windows PowerShell | Required |
| Windows Terminal | Recommended |
| Nerd Font | Required for icons |
| fastfetch | Required for system info on startup |
winget install -e --id DEVCOM.JetBrainsMonoNerdFontAfter installing, open Windows Terminal → Settings → open the JSON file → replace its entire content with the settings.json included in this repo, then save.
Find your profile path:
$PROFILEIt will return something like:
C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
or for Windows PowerShell:
C:\Users\username\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
If the file doesn't exist yet, create it:
New-Item -Path $profile.CurrentUserAllHosts -Type File -ForceThen close the terminal, navigate to that location, and replace the file's content with the correct file from this repo:
- PowerShell 7 → use
Microsoft_PowerShell_profile.ps1 - Windows PowerShell 5 → use
Microsoft_PowerShell_profile-ps5.ps1, but rename it to match your profile filename (Microsoft_PowerShell_profile.ps1orprofile.ps1) before placing it
Windows PowerShell 5 only: Save the profile file as UTF-8 in VS Code (click the encoding in the bottom right → "Save with Encoding" → "UTF-8"), otherwise special characters and icons won't display correctly.
After setting everything up, you may see this error when opening PowerShell:
File C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded
because running scripts is disabled on this system.
or
File C:\Users\username\Documents\WindowsPowerShell\profile.ps1 cannot be loaded
because running scripts is disabled on this system.
This is a Windows security restriction. Fix it by running the following command:
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedand
Unblock-File "$env:USERPROFILE/.config/fastfetch/fastfetch-random.ps1"
Unblock-File "$env:USERPROFILE/Documents/WindowsPowerShell/profile.ps1" # Powershell 5
Unblock-File "$env:USERPROFILE/Documents/PowerShell/Microsoft.PowerShell_profile.ps1" # Powershell 7Then close and reopen PowerShell and your profile should load correctly.
Choose one of the following:
winget install fastfetch # recommended
scoop install fastfetch
choco install fastfetchOr download it directly from the fastfetch releases page.
Download the following files from this repo and move them to:
C:\Users\username\.config\fastfetch\
Files needed:
config.jsonc- The correct fastfetch script for your PowerShell version:
- PowerShell 7 →
fastfetch-random.ps1(keep the name as is) - Windows PowerShell 5 →
fastfetch-random-ps5.ps1, rename it tofastfetch-random.ps1before placing it
- PowerShell 7 →
- All ASCII art
.txtfiles (from theascii-files/folder)
You will need to create the
.configandfastfetchfolders manually.
Set the.configfolder attribute to Hidden if you want it to stay clean.
If you don't want random ASCII art on startup, either keep only one
.txtfile or editfastfetch-random.ps1to point to a single config.
Lists all files including hidden ones.
ll
ll C:\some\pathCreates an empty file, or updates its timestamp if it already exists, just like on Linux.
touch notes.txt
touch script.ps1Searches PATH and Windows registry for commands and installed applications.
whereis git
whereis ffmpeg
whereis "Visual Studio Code"Searches for files and displays size, creation date, and last modification date. Supports substring matching by default.
show filename.txt # current folder only
show filename # current folder, all "filename*"
show -u filename.txt # user folder (C:\Users\you)
show -deep filename.txt # entire C:\ drive
show -from "C:\path" name # from a specific folderExample output:
◆ SHOW searching for main.py in C:\Users\you\project
────────────────────────────────────────────────────────────
▶ C:\Users\you\project\main.py
size 12.4 KB
created 2024-11-01 10:22 modified 2025-02-28 14:05
────────────────────────────────────────────────────────────
◆ found 1 result(s)
mkcd my-new-folderShows current weather and 3-day forecast for a city (default: Sydney).
weather
weather Paris
weather TokyoSave and jump between directories.
cdh # list saved bookmarks
cdh save # bookmark current directory
cdh save myproject # bookmark with a custom label
cdh myproject # jump to bookmark
cdh del myproject # remove bookmarkSupports SHA256 (default), MD5, and SHA1. Auto-copies result to clipboard.
hash file.exe # SHA256
hash file.exe -md5 # MD5
hash -text "hello" # hash a stringDisplays the hex and ASCII representation of a file.
hex file.bin # first 256 bytes
hex file.bin 512 # first N bytesLists all available custom commands with descriptions.
help # show all commands
help tools # filter by keywordYour username folder is automatically highlighted in Lavender using $env:USERNAME, no hardcoding needed.
All colors are defined as ANSI RGB variables. Replace any RGB value with your own:
$mauve = "`e[38;2;203;166;247m" # replace 203;166;247 with your RGB valuesEdit the $quotes array in the welcome message section to add your own.
The » icon requires a Nerd Font. You can swap it for any other Nerd Font glyph from nerdfonts.com/cheat-sheet.
| Name | Hex | Usage |
|---|---|---|
| Mauve | #CBA6F7 |
Prompt icon, drive letter |
| Teal | #94E2D5 |
Users folder |
| Lavender | #B4BEFE |
Username folder |
| Pink | #F5C2E7 |
Prompt symbol, quote icon |
| Peach | #FAB387 |
Quote text, prompt $ |
| Green | #A6E3A1 |
Date, KB-sized files |
| Yellow | #F9E2AF |
Date text, MB-sized files |
| Sky | #89DCEB |
Search path |
| Sapphire | #74C7EC |
Created date |
| Red | #F38BA8 |
Not found message |
| Overlay | #6C7086 |
Subtle labels |
Big thanks to SleepyCatHey whose project and video were the foundation of this setup. Go check out his work!
MIT. Do whatever you want with it.



