From 45362f360c39c27446e2daf7bae3993b04c09f86 Mon Sep 17 00:00:00 2001 From: Kurtis Date: Tue, 28 Oct 2025 23:34:05 +1000 Subject: [PATCH] Update Addes menu to script updated readme to allow to run from repo --- README.md | 6 ++ start.ps1 | 285 ++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 216 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index 7e33d03..89d6ff6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ ## Win95ify! Windows 11 Edition +Run the script with the following from an administrator cmd + +``` +powershell -ExecutionPolicy Bypass -c "irm "https://git.tcmeta.net/kurtis/win95ify-11/raw/branch/main/start.ps1" | iex" +``` + This script converts your windows 11 ui to windows 95. It does the following things diff --git a/start.ps1 b/start.ps1 index 4586f34..06fd718 100644 --- a/start.ps1 +++ b/start.ps1 @@ -4,78 +4,63 @@ If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdenti Write-Host "This script needs to run with Administrator privileges. Please Run again" Exit } - -# download git via winget since we need to get this. - -Write-Host "Making sure you have git" - -winget install Git.Git - -# Download all the software - -Write-Host "Creating Win95 Directory" - +# Global Variables $folderPath = "C:\Program Files\Win95" -if (-not (Test-Path $folderPath -PathType Container)) { - New-Item -Path $folderPath -ItemType Directory -Force - Write-Host "Folder '$folderPath' created successfully." -} else { - Write-Host "Folder '$folderPath' already exists." +Function Make-Program-Directory { + Write-Host "Creating Win95 Directory" + + if (-not (Test-Path $folderPath -PathType Container)) { + New-Item -Path $folderPath -ItemType Directory -Force + Write-Host "Folder '$folderPath' created successfully." + } else { + Write-Host "Folder '$folderPath' already exists." + } } -Write-Host "Downloading Wallpapers" +Function Download-Wallpapers { + Make-Program-Directory + $tempPath = Join-Path $env:TEMP "wallpapers.zip" + $download = "https://git.tcmeta.net/kurtis/chicago95-wallpapers/archive/main.zip" + Invoke-WebRequest $download -Out $tempPath + Write-Host "Unzipping" + Expand-Archive $tempPath -DestinationPath "$folderPath\Wallpapers" -Force + Write-Host "Removing Temp" + Remove-Item $tempPath -Force +} -git clone https://git.tcmeta.net/kurtis/chicago95-wallpapers.git "$folderPath\Wallpapers" +Function Download-Icons { + Make-Program-Directory + $tempPath = Join-Path $env:TEMP "icons.zip" + $download = "https://git.tcmeta.net/kurtis/win95-icons/archive/main.zip" + Invoke-WebRequest $download -Out $tempPath + Write-Host "Unzipping" + Expand-Archive $tempPath -DestinationPath "$folderPath\Icons" -Force + Write-Host "Removing Temp" + Remove-Item $tempPath -Force +} -Write-Host "Downloading Icons" +Function Download-Sounds { + Make-Program-Directory + $tempPath = Join-Path $env:TEMP "sounds.zip" + $download = "https://git.tcmeta.net/kurtis/win95-sounds/archive/main.zip" + Invoke-WebRequest $download -Out $tempPath + Write-Host "Unzipping" + Expand-Archive $tempPath -DestinationPath "$folderPath\Sounds" -Force + Write-Host "Removing Temp" + Remove-Item $tempPath -Force +} -git clone https://git.tcmeta.net/kurtis/win95-icons.git "$folderPath\Icons" - -Write-Host "Downloading Sounds" - -git clone https://git.tcmeta.net/kurtis/win95-sounds.git "$folderPath\Sounds" - -Write-Host "Downloading Login Screen" -$download = "https://git.tcmeta.net/kurtis/win95ify-11/raw/branch/main/login.png" -Invoke-WebRequest $download -Out "$folderPath\login.png" - - -Write-Host "Downloading Latest HackBRGT" -$tempPath = Join-Path $env:TEMP "hackgrbt.zip" -$releases = "https://api.github.com/repos/Metabolix/HackBGRT/releases" -$tag = (Invoke-WebRequest $releases | ConvertFrom-Json)[0].tag_name -$download = "https://github.com/Metabolix/HackBGRT/releases/download/$tag/HackBGRT-$($tag.SubString(1)).zip" -Invoke-WebRequest $download -Out $tempPath - -Write-Host "Unzipping" -Expand-Archive $tempPath -DestinationPath "$folderPath" -Force -Write-Host "Removing Temp" -Remove-Item $tempPath -Force -Write-Host "Downloading Custom Logo" -$download = "https://git.tcmeta.net/kurtis/win95ify-11/raw/branch/main/splash.bmp" -Invoke-WebRequest $download -Out "$folderPath\HackBGRT-$($tag.SubString(1))\splash.bmp" -Write-Host "Starting Boot Screen setup." -Start-Process "$folderPath\HackBGRT-$($tag.SubString(1))\setup.exe" -pause -#Okay now lets start to install the essentials - -Write-Host "Installing RetroBar" - -winget install dremin.RetroBar - -Start-Process "$ENV:LOCALAPPDATA\Programs\RetroBar\RetroBar.exe" - -Write-Host "Installing OpenShell in interactive mode" -winget install Open-Shell.Open-Shell-Menu -i - -# okay now we need to apply wallpapers and also other stuff - -# need to download and install the latest clippy ai - - - -Write-Host "Updating Wallpaper" +Function Set-Login { + Write-Host "Downloading Login Screen" + $download = "https://git.tcmeta.net/kurtis/win95ify-11/raw/branch/main/login.png" + Invoke-WebRequest $download -Out "$folderPath\login.png" + Write-Host "Updating Login Screen" + New-ItemProperty -Path "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Personalization" -Name "LockScreenImage" -Value "$folderPath\login.png" -PropertyType "String" -Force + New-ItemProperty -Path "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP" -Name "LockScreenImageStatus" -Value "00000001" -PropertyType "DWord" -Force + New-ItemProperty -Path "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP" -Name "LockScreenImagePath" -Value "$folderPath\login.png" -PropertyType "String" -Force + New-ItemProperty -Path "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP" -Name "LockScreenImageUrl" -Value "$folderPath\login.png" -PropertyType "String" -Force +} Function Set-WallPaper($Image) { <# @@ -114,18 +99,168 @@ public class Params $ret = [Params]::SystemParametersInfo($SPI_SETDESKWALLPAPER, 0, $Image, $fWinIni) } -Set-WallPaper("$folderPath\Wallpapers\default.png") -Write-Host "Changing to lite mode (if not already done)" -Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 1 -Type Dword -Force -Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 1 -Type Dword -Force +Function Update-Wallpaper { + Write-Host "Updating Wallpaper" + Download-Wallpapers + Set-WallPaper("$folderPath\Wallpapers\default.png") +} -Write-Host "Updating Login Screen" +Function Install-HackGRBT { + Write-Host "Downloading Latest HackBRGT" + $tempPath = Join-Path $env:TEMP "hackgrbt.zip" + $releases = "https://api.github.com/repos/Metabolix/HackBGRT/releases" + $tag = (Invoke-WebRequest $releases | ConvertFrom-Json)[0].tag_name + $download = "https://github.com/Metabolix/HackBGRT/releases/download/$tag/HackBGRT-$($tag.SubString(1)).zip" + Invoke-WebRequest $download -Out $tempPath -REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Personalization" /V "LockScreenImage" /T REG_SZ /D "$folderPath\login.png" /F -REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP" /V "LockScreenImageStatus" /T REG_DWORD /D "00000001" /F -REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP" /V "LockScreenImagePath" /T REG_SZ /D "$folderPath\login.png" /F -REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP" /V "LockScreenImageUrl" /T REG_SZ /D "$folderPath\login.png" /F + Write-Host "Unzipping" + Expand-Archive $tempPath -DestinationPath "$folderPath" -Force + Write-Host "Removing Temp" + Remove-Item $tempPath -Force + Write-Host "Downloading Custom Logo" + $download = "https://git.tcmeta.net/kurtis/win95ify-11/raw/branch/main/splash.bmp" + Invoke-WebRequest $download -Out "$folderPath\HackBGRT-$($tag.SubString(1))\splash.bmp" + Write-Host "Starting Boot Screen setup." + Start-Process "$folderPath\HackBGRT-$($tag.SubString(1))\setup.exe" -Wait +} +Function Install-RetroBar { + Write-Host "Installing RetroBar" + winget install dremin.RetroBar + New-ItemProperty -Path "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" -Name "RetroBar" -Value "$ENV:LOCALAPPDATA\Programs\RetroBar\RetroBar.exe" -PropertyType "String" -Force + Write-Host "Setting taskbar to hidden (makes booting look a bit nicer)" + $p='HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3';$v=(Get-ItemProperty -Path $p).Settings;$v[8]=3;&Set-ItemProperty -Path $p -Name Settings -Value $v;&Stop-Process -f -ProcessName explorer +} -# Update icons +Function Install-OpenShell { + Write-Host "Installing OpenShell in interactive mode" + winget install Open-Shell.Open-Shell-Menu -i + Write-Host "Changing to lite mode (if not already done)" + Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 1 -Type Dword -Force + Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 1 -Type Dword -Force +} + +Function Install-JCReborn { + Write-Host "Installing JC_REBORN" + + $download = "https://git.tcmeta.net/kurtis/castaway/releases/download/Win-Release/jc_reborn.msi" + $tempPath = Join-Path $env:TEMP "jc_reborn.msi" + Invoke-WebRequest $download -Out $tempPath + Start-Process 'msiexec.exe' -ArgumentList "/I `"$tempPath`" /qn" -Wait + Remove-Item $tempPath -Force +} + +Function Install-Clippy { + Write-Host "Installing Clippy" + + $tempPath = Join-Path $env:TEMP "clippy.exe" + $releases = "https://api.github.com/repos/felixrieseberg/clippy/releases" + $tag = (Invoke-WebRequest $releases | ConvertFrom-Json)[0].tag_name + $download = "https://github.com/felixrieseberg/clippy/releases/download/$tag/Clippy-$($tag.SubString(1))-setup-x64.exe" + Invoke-WebRequest $download -Out $tempPath + $process = Start-Process -FilePath $tempPath -PassThru + $process.WaitForExit() + Remove-Item $tempPath -Force +} + +Function Update-Sounds { + Download-Sounds + Set-ItemProperty -Path "HKCU:\AppEvents\Schemes\Apps\.Default\WindowsLogon\.Current\" -Name "(default)" -Value "$folderPath\The-Microsoft-Sound.wav" + Set-ItemProperty -Path "HKCU:\AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Current\" -Name "(default)" -Value "$folderPath\CHORD.WAV" + Set-ItemProperty -Path "HKCU:\AppEvents\Schemes\Apps\.Default\SystemExclamation\.Current\" -Name "(default)" -Value "$folderPath\CHORD.WAV" + Set-ItemProperty -Path "HKCU:\AppEvents\Schemes\Apps\.Default\SystemQuestion\.Current\" -Name "(default)" -Value "$folderPath\CHORD.WAV" +} + +Function Update-Icons { + Download-Icons + Write-Host "Updating Shortcut Icons" + + $iconsArray = @( + @("$ENV:APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\File Explorer.lnk", + "$folderPathicons\Icons\Folder.ico"), + @("$ENV:APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\Thunderbird.lnk", + "$folderPathicons\Icons\Mail.ico"), + ) + + foreach ($innerArray in $multiLevelArray) { + Write-Host "Processing Icon: $($innerArray[0])" + + } +} + +function Show-InteractiveMenu { + param ( + [string]$Title = "Main Menu", + [array]$Options + ) + + Clear-Host + Write-Host "================ $Title ================" + + for ($i = 0; $i -lt $Options.Count; $i++) { + Write-Host "$($i + 1): $($Options[$i])" + } + Write-Host "Q: Quit" + Write-Host "========================================" +} + +$menuOptions = @( + "Install All", + "Update Wallpaper", + "Update Login", + "Update Icons", + "Update Sounds" + "Install RetroBar, Openshell, JCReborn and Clippy AI" +) + +do { + Show-InteractiveMenu -Title "Win95ify! Windows 11 Edition" -Options $menuOptions + $choice = Read-Host "Enter your choice (1- $($menuOptions.Count), or Q to quit)" + + switch ($choice) { + "1" { + Write-Head "Installing everything in no particular order" + Set-Login + Set-Wallpaper + Update-Wallpaper + Update-Sounds + Update-Icons + Install-HackBGRT + Install-RetroBar + Install-OpenShell + Install-JCReborn + Install-Clippy + Write-Head "All Done!" + Pause + } + "2" { + Update-Wallpaper + Pause + } + "3" { + Update-Login + Pause + } + "4" { + Update-Icons + Pause + } + "5" { + Update-Sounds + Pause + } + "q" { + Write-Host "Exiting menu." + break + } + "Q" { + Write-Host "Exiting menu." + break + } + default { + Write-Host "Invalid choice. Please try again." -ForegroundColor Red + Pause + } + } +} while ($choice -ne "q" -and $choice -ne "Q")