Installation

Windows

WinGet

Install winget

winget install --id Microsoft.WindowsTerminal --exact 

Chocolatey

Note

Package is maintained by a third party

Install chocolatey
Run powershell as admin

choco install microsoft-windows-terminal

Preferences

Script

# Get Theme from Remote
$mochaUrl = "https://raw.githubusercontent.com/catppuccin/windows-terminal/refs/heads/main/mocha.json"
$mochaThemeUrl = "https://raw.githubusercontent.com/catppuccin/windows-terminal/refs/heads/main/mochaTheme.json"
$mochaObject = Invoke-RestMethod -Uri $mochaUrl
$mochaThemeObject = Invoke-RestMethod -Uri $mochaThemeUrl
 
# Get Terminal Config from AppData
$package = Get-AppxPackage Microsoft.WindowsTerminal
$packageFamilyName = $package.PackageFamilyName
$terminalConfigPath = Join-Path -Path $env:USERPROFILE -ChildPath "AppData\Local\Packages\$packageFamilyName\LocalState\settings.json"
$terminalConfig = Get-Content -Path $terminalConfigPath -Raw | ConvertFrom-Json
 
# Add scheme if it does not exist
if (-not ($terminalConfig.schemes | Where-Object { $_.name -eq $mochaObject.name })) { 
$terminalConfig.schemes += $mochaObject 
}
 
# Add theme if it does not exist
if (-not ($terminalConfig.themes | Where-Object { $_.name -eq $mochaThemeObject.name })) { 
$terminalConfig.themes += $mochaThemeObject 
}
 
# Print previous scheme, then update scheme
$terminalConfig.profiles.defaults.colorScheme
$terminalConfig.profiles.defaults | Add-Member -MemberType NoteProperty -Name colorScheme -Value $mochaObject.name -Force
$terminalConfig.profiles.defaults | Add-Member -MemberType NoteProperty -Name opacity -Value 90 -Force
 
# Print previous theme, then update theme
$terminalConfig.theme
$terminalConfig | Add-Member -MemberType NoteProperty -Name theme -Value $mochaThemeObject.name -Force
 
$terminalJson = $terminalConfig | ConvertTo-Json -Depth 10
$terminalJson | Set-Content -Path $terminalConfigPath -Force

Appendix