# Nerd Fonts Auto Installer with Animations # Usage: irm https://fonts.os.kamaru.online/install.ps1 | iex $isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) if (-not $isAdmin) { Write-Host "`nšŸ” Requesting Administrator privileges..." -ForegroundColor Yellow Start-Process powershell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `"irm https://fonts.os.kamaru.online/install.ps1 | iex`"" exit } # Animation functions function Write-Animated { param([string]$Text, [string]$Color = "White", [int]$Delay = 10) foreach ($char in $Text.ToCharArray()) { Write-Host $char -NoNewline -ForegroundColor $Color Start-Sleep -Milliseconds $Delay } } function Show-Spinner { param([scriptblock]$Task, [string]$Message) $spinner = @('ā ‹','ā ™','ā ¹','ā ø','ā ¼','ā “','ā ¦','ā §','ā ‡','ā ') $job = Start-Job -ScriptBlock $Task $i = 0 while ($job.State -eq 'Running') { Write-Host "`r $($spinner[$i % 10]) $Message" -NoNewline -ForegroundColor Cyan Start-Sleep -Milliseconds 100 $i++ } $result = Receive-Job $job Remove-Job $job Write-Host "`r āœ… $Message" -ForegroundColor Green return $result } function Show-ProgressBar { param([int]$Percent, [string]$Status) $width = 30 $filled = [math]::Floor($width * $Percent / 100) $empty = $width - $filled $bar = "ā–ˆ" * $filled + "ā–‘" * $empty Write-Host "`r [$bar] $Percent% $Status " -NoNewline -ForegroundColor Cyan } # Clear and start Clear-Host # Banner animation $banner = @" ╔═══════════════════════════════════════════════════════════╗ ā•‘ ā•‘ ā•‘ ā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā•‘ ā•‘ ā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•— ā•‘ ā•‘ ā–ˆā–ˆā•”ā–ˆā–ˆā•— ā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā•‘ ā•‘ ā–ˆā–ˆā•‘ā•šā–ˆā–ˆā•—ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā• ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā•‘ ā•‘ ā–ˆā–ˆā•‘ ā•šā–ˆā–ˆā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā• ā•‘ ā•‘ ā•šā•ā• ā•šā•ā•ā•ā•ā•šā•ā•ā•ā•ā•ā•ā•ā•šā•ā• ā•šā•ā•ā•šā•ā•ā•ā•ā•ā• ā•‘ ā•‘ ā•‘ ā•‘ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā•‘ ā•‘ ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•‘ā•šā•ā•ā–ˆā–ˆā•”ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā•ā•ā• ā•‘ ā•‘ ā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā–ˆā–ˆā•— ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā•‘ ā•‘ ā–ˆā–ˆā•”ā•ā•ā• ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ā•šā–ˆā–ˆā•—ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā•šā•ā•ā•ā•ā–ˆā–ˆā•‘ ā•‘ ā•‘ ā–ˆā–ˆā•‘ ā•šā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā•‘ ā•šā–ˆā–ˆā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•‘ ā•‘ ā•‘ ā•šā•ā• ā•šā•ā•ā•ā•ā•ā• ā•šā•ā• ā•šā•ā•ā•ā• ā•šā•ā• ā•šā•ā•ā•ā•ā•ā•ā• ā•‘ ā•‘ ā•‘ ā•‘ šŸ”¤ JetBrainsMono Nerd Font Installer ā•‘ ā•‘ fonts.os.kamaru.online ā•‘ ā•‘ ā•‘ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā• "@ Write-Host $banner -ForegroundColor Cyan Start-Sleep -Milliseconds 500 $fontUrl = "https://fonts.os.kamaru.online/JetBrainsMono.zip" $tempDir = "$env:TEMP\NerdFonts_$(Get-Random)" $systemFontDir = "C:\Windows\Fonts" New-Item -ItemType Directory -Force -Path $tempDir | Out-Null # Step 1: Download with animation Write-Host "" Write-Animated " šŸ“„ STEP 1: Downloading fonts..." "Yellow" 20 Write-Host "" [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $ProgressPreference = 'SilentlyContinue' try { $webClient = New-Object System.Net.WebClient $webClient.DownloadFile($fontUrl, "$tempDir\font.zip") Write-Host " āœ… Download complete!" -ForegroundColor Green } catch { Write-Host " āŒ Download failed!" -ForegroundColor Red exit 1 } Start-Sleep -Milliseconds 300 # Step 2: Extract with animation Write-Host "" Write-Animated " šŸ“¦ STEP 2: Extracting fonts..." "Yellow" 20 Write-Host "" Expand-Archive -Path "$tempDir\font.zip" -DestinationPath "$tempDir\fonts" -Force $fonts = Get-ChildItem "$tempDir\fonts\*.ttf" Write-Host " āœ… Extracted $($fonts.Count) font files!" -ForegroundColor Green Start-Sleep -Milliseconds 300 # Step 3: Install with progress bar Write-Host "" Write-Animated " šŸ”§ STEP 3: Installing fonts..." "Yellow" 20 Write-Host "" $total = $fonts.Count $current = 0 foreach ($font in $fonts) { $current++ $percent = [math]::Floor($current * 100 / $total) Show-ProgressBar $percent $font.Name $destPath = Join-Path $systemFontDir $font.Name Copy-Item $font.FullName $destPath -Force -ErrorAction SilentlyContinue $regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" $fontName = [System.IO.Path]::GetFileNameWithoutExtension($font.Name) + " (TrueType)" New-ItemProperty -Path $regPath -Name $fontName -Value $font.Name -PropertyType String -Force -ErrorAction SilentlyContinue | Out-Null Start-Sleep -Milliseconds 20 } Write-Host "`r āœ… Installed $total fonts! " -ForegroundColor Green Start-Sleep -Milliseconds 300 # Step 4: Configure Windows Terminal Write-Host "" Write-Animated " āš™ļø STEP 4: Configuring Windows Terminal..." "Yellow" 20 Write-Host "" $wtConfigured = $false @( "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json", "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe\LocalState\settings.json" ) | ForEach-Object { if (Test-Path $_) { try { $settings = Get-Content $_ -Raw | ConvertFrom-Json if (-not $settings.profiles.defaults) { $settings.profiles | Add-Member -NotePropertyName "defaults" -NotePropertyValue @{} -Force } $settings.profiles.defaults | Add-Member -NotePropertyName "font" -NotePropertyValue @{face="JetBrainsMono Nerd Font";size=12} -Force $settings | ConvertTo-Json -Depth 100 | Set-Content $_ -Encoding UTF8 $wtConfigured = $true } catch { } } } if ($wtConfigured) { Write-Host " āœ… Windows Terminal configured!" -ForegroundColor Green } else { Write-Host " āš ļø Windows Terminal not found" -ForegroundColor DarkYellow } # Cleanup Remove-Item -Recurse -Force $tempDir -ErrorAction SilentlyContinue # Success animation Start-Sleep -Milliseconds 500 Write-Host "" Write-Host "" $success = @" ╔═══════════════════════════════════════════════════════════╗ ā•‘ ā•‘ ā•‘ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā•— ā•‘ ā•‘ ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•‘ ā•‘ ā•‘ ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā–ˆā–ˆā•— ā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•‘ ā•‘ ā•‘ ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ā•šā–ˆā–ˆā•—ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā• ā•šā•ā• ā•‘ ā•‘ ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā•šā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā•‘ ā•šā–ˆā–ˆā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā•— ā•‘ ā•‘ ā•šā•ā•ā•ā•ā•ā• ā•šā•ā•ā•ā•ā•ā• ā•šā•ā• ā•šā•ā•ā•ā•ā•šā•ā•ā•ā•ā•ā•ā•ā•šā•ā• ā•‘ ā•‘ ā•‘ ╠═══════════════════════════════════════════════════════════╣ ā•‘ ā•‘ ā•‘ āœ… JetBrainsMono Nerd Font installed! ā•‘ ā•‘ āœ… Windows Terminal configured! ā•‘ ā•‘ ā•‘ ā•‘ šŸ”„ Please RESTART your terminal and SSH again! ā•‘ ā•‘ ā•‘ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā• "@ Write-Host $success -ForegroundColor Green Write-Host "" Write-Host " Press any key to exit..." -ForegroundColor DarkGray $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")