Test 2024 01 12 (#1401)

* change logseq url and add .net 8 (#1385)

* Update applications.json

Add Official logseq url 
Add .net runtime 8.0

* compile with new logseq and .net 8 runtime

* add thorium avx2

* Compile Winutil

* Remove Cider Music Player (#1400)

* Update winutil.ps1

* Update applications.json

* Compile Winutil

* Import/Export is now global, Settings menu added and many more improvements (#1398)

* Anoter one of those huge PRs
- Fix version inefficiency the version is already stored in sync, no need to slow down loading by one extra replace.
- Created custom dialog and About message
- Create a menu with Import/Export values
	- press on teh Settings cog in the right upper corner and save all the checkboxes
	- then you can either load them or load and run automatically
- Made Import Export load accross the whole app
- Optimized the way checkbox controls are looked up, it is 20% faster now
- Added a switch to load all the boxes from a config file
	- example: .winutil.ps1 -Config "C:UsersasdfDesktop\111.json"
- Added a switch to run all the action in unattended mode by passing -Run siwthc
	- example: .winutil.ps1 -Config "C:UsersasdfDesktop\111.json" -Run
	- This will run all the tweaks and install all the apps

* Fixing a couple of bugs and blur fonts, also menu now closes when focus is lost

---------

Co-authored-by: KonTy <KonTy@github.com>
Co-authored-by: Chris Titus <contact@christitus.com>

* Update applications.json

* Compile Winutil

* Add F8 Recovery Menu and Windows Reg Backup and others (#1389)

* Update feature.json append F8 legacy startup and Win Reg Backup and web search suggestion in search app

- enable automatic windows registry backup and do schedule for it as well (disabled by default in Win10, Win11) this will help when doing last known Good Configuration thru the F8 startup menu.
- enable / disable legacy F8 startup recovery option.
- enable / disable web search suggestions in the windows search in task bar.

* new tick boxes features. F8 recovery, regbackup, search web suggestions

- enable automatic windows registry backup and do schedule for it as well (disabled by default in Win10, Win11) this will help when doing last known Good Configuration thru the F8 startup menu.
- enable / disable legacy F8 startup recovery option.
- enable / disable web search suggestions in the windows search in task bar.

* Compile Winutil

* add Parsec to installable applications (#1157) (#1396)

Identifiers:
- Winget: Parsec.parsec
- Chocolatey: parsec

* Compile Winutil

* add Konty to About page

* Compile Winutil

* fix description (#1388) (#1402)

Co-authored-by: howell2024 <156375832+howell2024@users.noreply.github.com>

---------

Co-authored-by: Cristian Negulescu <cristian@clamsen.com>
Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com>
Co-authored-by: Tommi Pöntinen <98650216+hamburgerghini1@users.noreply.github.com>
Co-authored-by: KonTy <9524513+KonTy@users.noreply.github.com>
Co-authored-by: KonTy <KonTy@github.com>
Co-authored-by: Smartek <70715469+smartekIT@users.noreply.github.com>
Co-authored-by: Saikrishnan K <53394202+K-Saikrishnan@users.noreply.github.com>
Co-authored-by: howell2024 <156375832+howell2024@users.noreply.github.com>
This commit is contained in:
Chris Titus 2024-01-15 11:32:19 -06:00 committed by GitHub
parent ef2befa10e
commit 3b133e704e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 1645 additions and 645 deletions

View File

@ -15,7 +15,7 @@ Write-output '
################################################################################################################ ################################################################################################################
' | Out-File ./$scriptname -Append -Encoding ascii ' | Out-File ./$scriptname -Append -Encoding ascii
(Get-Content .\scripts\start.ps1).replace('#{replaceme}',"$(get-date -format yy.MM.dd)") | Out-File ./$scriptname -Append -Encoding ascii (Get-Content .\scripts\start.ps1).replace('#{replaceme}',"$(Get-Date -Format yy.MM.dd)") | Out-File ./$scriptname -Append -Encoding ascii
Get-ChildItem .\functions -Recurse -File | ForEach-Object { Get-ChildItem .\functions -Recurse -File | ForEach-Object {
Get-Content $psitem.FullName | Out-File ./$scriptname -Append -Encoding ascii Get-Content $psitem.FullName | Out-File ./$scriptname -Append -Encoding ascii
@ -23,9 +23,7 @@ Get-ChildItem .\functions -Recurse -File | ForEach-Object {
Get-ChildItem .\xaml | ForEach-Object { Get-ChildItem .\xaml | ForEach-Object {
$xaml = (Get-Content $psitem.FullName).replace("'","''") $xaml = (Get-Content $psitem.FullName).replace("'","''")
$newXaml = $xaml -replace 'CTTVersion', (Get-Date -Format 'yy.MM.dd') Write-output "`$$($psitem.BaseName) = '$xaml'" | Out-File ./$scriptname -Append -Encoding ascii
Write-output "`$$($psitem.BaseName) = '$newXaml'" | Out-File ./$scriptname -Append -Encoding ascii
} }
Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach-Object { Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach-Object {

View File

@ -71,6 +71,15 @@
"link": "https://librewolf-community.gitlab.io/", "link": "https://librewolf-community.gitlab.io/",
"description": "LibreWolf is a privacy-focused web browser based on Firefox, with additional privacy and security enhancements." "description": "LibreWolf is a privacy-focused web browser based on Firefox, with additional privacy and security enhancements."
}, },
"WPFInstallthorium": {
"winget": "Alex313031.Thorium.AVX2",
"choco": "na",
"category": "Browsers",
"panel": "0",
"content": "Thorium Browser AVX2",
"link": "http://thorium.rocks/",
"description": "Browser built for speed over vanilla chromium. It is built with AVX2 optimizations and is the fastest browser on the market."
},
"WPFInstalltor": { "WPFInstalltor": {
"winget": "TorProject.TorBrowser", "winget": "TorProject.TorBrowser",
"choco": "tor-browser", "choco": "tor-browser",
@ -653,7 +662,7 @@
"category": "Document", "category": "Document",
"panel": "1", "panel": "1",
"content": "Logseq", "content": "Logseq",
"link": "https://github.com/logseq/logseq/releases", "link": "https://logseq.com/",
"description": "Logseq is a versatile knowledge management and note-taking application designed for the digital thinker. With a focus on the interconnectedness of ideas, Logseq allows users to seamlessly organize their thoughts through a combination of hierarchical outlines and bi-directional linking. It supports both structured and unstructured content, enabling users to create a personalized knowledge graph that adapts to their evolving ideas and insights." "description": "Logseq is a versatile knowledge management and note-taking application designed for the digital thinker. With a focus on the interconnectedness of ideas, Logseq allows users to seamlessly organize their thoughts through a combination of hierarchical outlines and bi-directional linking. It supports both structured and unstructured content, enabling users to create a personalized knowledge graph that adapts to their evolving ideas and insights."
}, },
"WPFInstallobsidian": { "WPFInstallobsidian": {
@ -961,6 +970,15 @@
"content": ".NET Desktop Runtime 7", "content": ".NET Desktop Runtime 7",
"description": ".NET Desktop Runtime 7 is a runtime environment required for running applications developed with .NET 7.", "description": ".NET Desktop Runtime 7 is a runtime environment required for running applications developed with .NET 7.",
"link": "https://dotnet.microsoft.com/download/dotnet/7.0" "link": "https://dotnet.microsoft.com/download/dotnet/7.0"
},
"WPFInstalldotnet8": {
"winget": "Microsoft.DotNet.DesktopRuntime.8",
"choco": "dotnet-8.0-runtime",
"category": "Microsoft Tools",
"panel": "2",
"content": ".NET Desktop Runtime 8",
"description": ".NET Desktop Runtime 8 is a runtime environment required for running applications developed with .NET 7.",
"link": "https://dotnet.microsoft.com/download/dotnet/8.0"
}, },
"WPFInstallnuget": { "WPFInstallnuget": {
"winget": "Microsoft.NuGet", "winget": "Microsoft.NuGet",
@ -1070,15 +1088,6 @@
"description": "Blender is a powerful open-source 3D creation suite, offering modeling, sculpting, animation, and rendering tools.", "description": "Blender is a powerful open-source 3D creation suite, offering modeling, sculpting, animation, and rendering tools.",
"link": "https://www.blender.org/" "link": "https://www.blender.org/"
}, },
"WPFInstallcider": {
"winget": "CiderCollective.Cider",
"choco": "cider",
"category": "Multimedia Tools",
"panel": "3",
"content": "Cider (FOSS Music Player)",
"description": "Cider is a free and open-source music player that focuses on simplicity, providing a clean interface for enjoying your music.",
"link": "https://getcider.io/"
},
"WPFInstallclementine": { "WPFInstallclementine": {
"winget": "Clementine.Clementine", "winget": "Clementine.Clementine",
"choco": "clementine", "choco": "clementine",
@ -1925,6 +1934,15 @@
"link": "https://owncloud.com/desktop-app/", "link": "https://owncloud.com/desktop-app/",
"description": "ownCloud Desktop is the official desktop client for the ownCloud file synchronization and sharing platform." "description": "ownCloud Desktop is the official desktop client for the ownCloud file synchronization and sharing platform."
}, },
"WPFInstallparsec": {
"winget": "Parsec.parsec",
"choco": "parsec",
"category": "Utilities",
"panel": "4",
"content": "Parsec",
"link": "https://parsec.app/",
"description": "Parsec is a low-latency, high-quality remote desktop sharing application for collaborating and gaming across devices."
},
"WPFInstallpeazip": { "WPFInstallpeazip": {
"winget": "Giorgiotani.Peazip", "winget": "Giorgiotani.Peazip",
"choco": "peazip", "choco": "peazip",
@ -2213,4 +2231,4 @@
"link": "https://www.ghisler.com/", "link": "https://www.ghisler.com/",
"description": "Total Commander is a file manager for Windows that provides a powerful and intuitive interface for file management." "description": "Total Commander is a file manager for Windows that provides a powerful and intuitive interface for file management."
} }
} }

View File

@ -57,5 +57,70 @@
nfsadmin client localhost config fileaccess=755 SecFlavors=+sys -krb5 -krb5i nfsadmin client localhost config fileaccess=755 SecFlavors=+sys -krb5 -krb5i
" "
] ]
},
"WPFFeatureEnableSearchSuggestions": {
"feature": [
],
"InvokeScript": [
"
If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) {
New-Item -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Force | Out-Null
}
New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 0 -Force
Stop-Process -name explorer -force
"
]
},
"WPFFeatureDisableSearchSuggestions": {
"feature": [
],
"InvokeScript": [
"
If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) {
New-Item -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Force | Out-Null
}
New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 1 -Force
Stop-Process -name explorer -force
"
]
},
"WPFFeatureRegBackup": {
"feature": [
],
"InvokeScript": [
"
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager' -Name 'EnablePeriodicBackup' -Type DWord -Value 1 -Force
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager' -Name 'BackupCount' -Type DWord -Value 2 -Force
$action = New-ScheduledTaskAction -Execute 'schtasks' -Argument '/run /i /tn \"\\Microsoft\\Windows\\Registry\\RegIdleBackup\"'
$trigger = New-ScheduledTaskTrigger -Daily -At 00:30
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName 'AutoRegBackup' -Description 'Create System Registry Backups' -User 'System'
"
]
},
"WPFFeatureEnableLegacyRecovery": {
"feature": [
],
"InvokeScript": [
"
If (!(Test-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood')) {
New-Item -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Name 'Enabled' -Type DWord -Value 1 -Force
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Legacy' -Wait
"
]
},
"WPFFeatureDisableLegacyRecovery": {
"feature": [
],
"InvokeScript": [
"
If (!(Test-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood')) {
New-Item -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Name 'Enabled' -Type DWord -Value 0 -Force
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Standard' -Wait
"
]
} }
} }

View File

@ -1,33 +1,33 @@
{ {
"desktop": [ "desktop": [
"WPFEssTweaksAH", "WPFTweaksAH",
"WPFEssTweaksDVR", "WPFTweaksDVR",
"WPFEssTweaksHiber", "WPFTweaksHiber",
"WPFEssTweaksHome", "WPFTweaksHome",
"WPFEssTweaksLoc", "WPFTweaksLoc",
"WPFEssTweaksOO", "WPFTweaksOO",
"WPFEssTweaksServices", "WPFTweaksServices",
"WPFEssTweaksStorage", "WPFTweaksStorage",
"WPFEssTweaksTele", "WPFTweaksTele",
"WPFEssTweaksWifi", "WPFTweaksWifi",
"WPFMiscTweaksPower" "WPFMiscTweaksPower"
], ],
"laptop": [ "laptop": [
"WPFEssTweaksAH", "WPFTweaksAH",
"WPFEssTweaksDVR", "WPFTweaksDVR",
"WPFEssTweaksHome", "WPFTweaksHome",
"WPFEssTweaksLoc", "WPFTweaksLoc",
"WPFEssTweaksOO", "WPFTweaksOO",
"WPFEssTweaksServices", "WPFTweaksServices",
"WPFEssTweaksStorage", "WPFTweaksStorage",
"WPFEssTweaksTele", "WPFTweaksTele",
"WPFEssTweaksWifi", "WPFTweaksWifi",
"WPFMiscTweaksLapPower" "WPFMiscTweaksLapPower"
], ],
"minimal": [ "minimal": [
"WPFEssTweaksHome", "WPFTweaksHome",
"WPFEssTweaksOO", "WPFTweaksOO",
"WPFEssTweaksServices", "WPFTweaksServices",
"WPFEssTweaksTele" "WPFTweaksTele"
] ]
} }

View File

@ -1,5 +1,5 @@
{ {
"WPFEssTweaksAH": { "WPFTweaksAH": {
"registry": [ "registry": [
{ {
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System", "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
@ -24,7 +24,7 @@
} }
] ]
}, },
"WPFEssTweaksHiber": { "WPFTweaksHiber": {
"registry": [ "registry": [
{ {
"Path": "HKLM:\\System\\CurrentControlSet\\Control\\Session Manager\\Power", "Path": "HKLM:\\System\\CurrentControlSet\\Control\\Session Manager\\Power",
@ -45,7 +45,7 @@
"powercfg.exe /hibernate off" "powercfg.exe /hibernate off"
] ]
}, },
"WPFEssTweaksHome": { "WPFTweaksHome": {
"service": [ "service": [
{ {
"Name": "HomeGroupListener", "Name": "HomeGroupListener",
@ -59,7 +59,7 @@
} }
] ]
}, },
"WPFEssTweaksLoc": { "WPFTweaksLoc": {
"registry": [ "registry": [
{ {
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CapabilityAccessManager\\ConsentStore\\location", "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CapabilityAccessManager\\ConsentStore\\location",
@ -91,7 +91,7 @@
} }
] ]
}, },
"WPFEssTweaksServices": { "WPFTweaksServices": {
"service": [ "service": [
{ {
"Name": "AJRouter", "Name": "AJRouter",
@ -1510,7 +1510,7 @@
} }
] ]
}, },
"WPFEssTweaksTele": { "WPFTweaksTele": {
"ScheduledTask": [ "ScheduledTask": [
{ {
"Name": "Microsoft\\Windows\\Application Experience\\Microsoft Compatibility Appraiser", "Name": "Microsoft\\Windows\\Application Experience\\Microsoft Compatibility Appraiser",
@ -1897,7 +1897,7 @@
" "
] ]
}, },
"WPFEssTweaksWifi": { "WPFTweaksWifi": {
"registry": [ "registry": [
{ {
"Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowWiFiHotSpotReporting", "Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowWiFiHotSpotReporting",
@ -1915,7 +1915,7 @@
} }
] ]
}, },
"WPFMiscTweaksUTC": { "WPFTweaksUTC": {
"registry": [ "registry": [
{ {
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation", "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation",
@ -1926,7 +1926,7 @@
} }
] ]
}, },
"WPFMiscTweaksDisplay": { "WPFTweaksDisplay": {
"registry": [ "registry": [
{ {
"Path": "HKCU:\\Control Panel\\Desktop", "Path": "HKCU:\\Control Panel\\Desktop",
@ -2027,7 +2027,7 @@
"Remove-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\"" "Remove-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\""
] ]
}, },
"WPFEssTweaksDeBloat": { "WPFTweaksDeBloat": {
"appx": [ "appx": [
"Microsoft.Microsoft3DViewer", "Microsoft.Microsoft3DViewer",
"Microsoft.AppConnector", "Microsoft.AppConnector",
@ -2141,7 +2141,7 @@
" "
] ]
}, },
"WPFEssTweaksRestorePoint": { "WPFTweaksRestorePoint": {
"InvokeScript": [ "InvokeScript": [
" "
# Check if the user has administrative privileges # Check if the user has administrative privileges
@ -2178,7 +2178,7 @@
" "
] ]
}, },
"WPFEssTweaksOO": { "WPFTweaksOO": {
"InvokeScript": [ "InvokeScript": [
"curl.exe -s \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/ooshutup10_winutil_settings.cfg\" -o $ENV:temp\\ooshutup10.cfg "curl.exe -s \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/ooshutup10_winutil_settings.cfg\" -o $ENV:temp\\ooshutup10.cfg
curl.exe -s \"https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe\" -o $ENV:temp\\OOSU10.exe curl.exe -s \"https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe\" -o $ENV:temp\\OOSU10.exe
@ -2186,7 +2186,7 @@
" "
] ]
}, },
"WPFEssTweaksStorage": { "WPFTweaksStorage": {
"InvokeScript": [ "InvokeScript": [
"Remove-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Recurse -ErrorAction SilentlyContinue" "Remove-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Recurse -ErrorAction SilentlyContinue"
], ],
@ -2195,7 +2195,7 @@
" "
] ]
}, },
"WPFEssTweaksRemoveEdge": { "WPFTweaksRemoveEdge": {
"InvokeScript": [ "InvokeScript": [
" "
#:: Standalone script by AveYo Source: https://raw.githubusercontent.com/AveYo/fox/main/Edge_Removal.bat #:: Standalone script by AveYo Source: https://raw.githubusercontent.com/AveYo/fox/main/Edge_Removal.bat
@ -2212,7 +2212,7 @@
" "
] ]
}, },
"WPFEssTweaksRemoveOnedrive": { "WPFTweaksRemoveOnedrive": {
"InvokeScript": [ "InvokeScript": [
" "
@ -2289,7 +2289,7 @@
" "
] ]
}, },
"WPFMiscTweaksDisableNotifications": { "WPFTweaksDisableNotifications": {
"registry": [ "registry": [
{ {
"Path": "HKCU:\\Software\\Policies\\Microsoft\\Windows\\Explorer", "Path": "HKCU:\\Software\\Policies\\Microsoft\\Windows\\Explorer",
@ -2307,7 +2307,7 @@
} }
] ]
}, },
"WPFMiscTweaksRightClickMenu": { "WPFTweaksRightClickMenu": {
"InvokeScript": [ "InvokeScript": [
"New-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Name \"InprocServer32\" -force -value \"\" " "New-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Name \"InprocServer32\" -force -value \"\" "
], ],
@ -2318,7 +2318,7 @@
" "
] ]
}, },
"WPFEssTweaksDiskCleanup": { "WPFTweaksDiskCleanup": {
"InvokeScript": [ "InvokeScript": [
" "
cleanmgr.exe /d C: /VERYLOWDISK cleanmgr.exe /d C: /VERYLOWDISK
@ -2326,7 +2326,7 @@
" "
] ]
}, },
"WPFMiscTweaksDisableUAC": { "WPFTweaksDisableUAC": {
"registry": [ "registry": [
{ {
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",
@ -2337,13 +2337,13 @@
} }
] ]
}, },
"WPFEssTweaksDeleteTempFiles": { "WPFTweaksDeleteTempFiles": {
"InvokeScript": [ "InvokeScript": [
"Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse "Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse" Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse"
] ]
}, },
"WPFEssTweaksDVR": { "WPFTweaksDVR": {
"registry": [ "registry": [
{ {
"Path": "HKCU:\\System\\GameConfigStore", "Path": "HKCU:\\System\\GameConfigStore",
@ -2389,7 +2389,7 @@
} }
] ]
}, },
"WPFEssTweaksTeredo": { "WPFTweaksTeredo": {
"registry": [ "registry": [
{ {
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters", "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
@ -2417,7 +2417,7 @@
} }
] ]
}, },
"WPFMiscTweaksDisableipsix": { "WPFTweaksDisableipsix": {
"InvokeScript": [ "InvokeScript": [
"Disable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6" "Disable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
], ],
@ -2425,7 +2425,7 @@
"Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6" "Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
] ]
}, },
"WPFMiscTweaksEnableipsix": { "WPFTweaksEnableipsix": {
"InvokeScript": [ "InvokeScript": [
"Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6" "Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
], ],

View File

@ -20,56 +20,58 @@ Function Get-WinUtilCheckBoxes {
#> #>
Param( Param(
$Group, [boolean]$unCheck = $false
[boolean]$unCheck = $true
) )
$Output = @{
$Output = New-Object System.Collections.Generic.List[System.Object] Install = @()
WPFTweaks = @()
if($Group -eq "WPFInstall"){ WPFFeature = @()
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"} WPFInstall = @()
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$sync.configs.applications.$($CheckBox.Name).winget -split ";" | ForEach-Object {
$Output.Add($psitem)
}
if ($uncheck -eq $true){
$CheckBox.value.ischecked = $false
}
}
}
} }
if($Group -eq "WPFTweaks"){ $CheckBoxes = $sync.GetEnumerator() | Where-Object { $_.Value -is [System.Windows.Controls.CheckBox] }
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Tweaks*"}
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$Output.Add($Checkbox.Name)
if ($uncheck -eq $true){ foreach ($CheckBox in $CheckBoxes) {
$CheckBox.value.ischecked = $false $group = if ($CheckBox.Key.StartsWith("WPFInstall")) { "Install" }
elseif ($CheckBox.Key.StartsWith("WPFTweaks")) { "WPFTweaks" }
elseif ($CheckBox.Key.StartsWith("WPFFeature")) { "WPFFeature" }
if ($group) {
if ($CheckBox.Value.IsChecked -eq $true) {
$feature = switch ($group) {
"Install" {
# Get the winget value
$wingetValue = $sync.configs.applications.$($CheckBox.Name).winget
if (-not [string]::IsNullOrWhiteSpace($wingetValue) -and $wingetValue -ne "na") {
$wingetValue -split ";"
} else {
$sync.configs.applications.$($CheckBox.Name).choco
}
}
default {
$CheckBox.Name
}
}
if (-not $Output.ContainsKey($group)) {
$Output[$group] = @()
}
if ($group -eq "Install") {
$Output["WPFInstall"] += $CheckBox.Name
Write-Debug "Adding: $($CheckBox.Name) under: WPFInstall"
}
Write-Debug "Adding: $($feature) under: $($group)"
$Output[$group] += $feature
if ($uncheck -eq $true) {
$CheckBox.Value.IsChecked = $false
} }
} }
} }
} }
if($Group -eq "WPFFeature"){ return $Output
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Feature*"}
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$Output.Add($Checkbox.Name)
if ($uncheck -eq $true){
$CheckBox.value.ischecked = $false
}
}
}
}
Write-Output $($Output | Select-Object -Unique)
} }

View File

@ -276,19 +276,22 @@ function New-Unattend {
# <Path>net user administrator /active:yes</Path> # <Path>net user administrator /active:yes</Path>
# </RunSynchronousCommand> # </RunSynchronousCommand>
# this section doesn't work in win10/????
# <settings pass="specialize">
# <component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
# <CEIPEnabled>0</CEIPEnabled>
# </component>
# <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
# <ConfigureChatAutoInstall>false</ConfigureChatAutoInstall>
# </component>
# </settings>
$unattend = @' $unattend = @'
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend" <unattend xmlns="urn:schemas-microsoft-com:unattend"
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<settings pass="specialize">
<component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CEIPEnabled>0</CEIPEnabled>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ConfigureChatAutoInstall>false</ConfigureChatAutoInstall>
</component>
</settings>
<settings pass="auditUser"> <settings pass="auditUser">
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous> <RunSynchronous>

View File

@ -16,6 +16,8 @@ function Invoke-WinUtilTweaks {
$CheckBox, $CheckBox,
$undo = $false $undo = $false
) )
Write-Debug "Tweaks: $($CheckBox)"
if($undo){ if($undo){
$Values = @{ $Values = @{
Registry = "OriginalValue" Registry = "OriginalValue"
@ -35,21 +37,25 @@ function Invoke-WinUtilTweaks {
} }
if($sync.configs.tweaks.$CheckBox.ScheduledTask){ if($sync.configs.tweaks.$CheckBox.ScheduledTask){
$sync.configs.tweaks.$CheckBox.ScheduledTask | ForEach-Object { $sync.configs.tweaks.$CheckBox.ScheduledTask | ForEach-Object {
Write-Debug "$($psitem.Name) and state is $($psitem.$($values.ScheduledTask))"
Set-WinUtilScheduledTask -Name $psitem.Name -State $psitem.$($values.ScheduledTask) Set-WinUtilScheduledTask -Name $psitem.Name -State $psitem.$($values.ScheduledTask)
} }
} }
if($sync.configs.tweaks.$CheckBox.service){ if($sync.configs.tweaks.$CheckBox.service){
$sync.configs.tweaks.$CheckBox.service | ForEach-Object { $sync.configs.tweaks.$CheckBox.service | ForEach-Object {
Write-Debug "$($psitem.Name) and state is $($psitem.$($values.service))"
Set-WinUtilService -Name $psitem.Name -StartupType $psitem.$($values.Service) Set-WinUtilService -Name $psitem.Name -StartupType $psitem.$($values.Service)
} }
} }
if($sync.configs.tweaks.$CheckBox.registry){ if($sync.configs.tweaks.$CheckBox.registry){
$sync.configs.tweaks.$CheckBox.registry | ForEach-Object { $sync.configs.tweaks.$CheckBox.registry | ForEach-Object {
Write-Debug "$($psitem.Name) and state is $($psitem.$($values.registry))"
Set-WinUtilRegistry -Name $psitem.Name -Path $psitem.Path -Type $psitem.Type -Value $psitem.$($values.registry) Set-WinUtilRegistry -Name $psitem.Name -Path $psitem.Path -Type $psitem.Type -Value $psitem.$($values.registry)
} }
} }
if($sync.configs.tweaks.$CheckBox.$($values.ScriptType)){ if($sync.configs.tweaks.$CheckBox.$($values.ScriptType)){
$sync.configs.tweaks.$CheckBox.$($values.ScriptType) | ForEach-Object { $sync.configs.tweaks.$CheckBox.$($values.ScriptType) | ForEach-Object {
Write-Debug "$($psitem) and state is $($psitem.$($values.ScriptType))"
$Scriptblock = [scriptblock]::Create($psitem) $Scriptblock = [scriptblock]::Create($psitem)
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name $CheckBox Invoke-WinUtilScript -ScriptBlock $scriptblock -Name $CheckBox
} }
@ -58,6 +64,7 @@ function Invoke-WinUtilTweaks {
if(!$undo){ if(!$undo){
if($sync.configs.tweaks.$CheckBox.appx){ if($sync.configs.tweaks.$CheckBox.appx){
$sync.configs.tweaks.$CheckBox.appx | ForEach-Object { $sync.configs.tweaks.$CheckBox.appx | ForEach-Object {
Write-Debug "UNDO $($psitem.Name)"
Remove-WinUtilAPPX -Name $psitem Remove-WinUtilAPPX -Name $psitem
} }
} }

View File

@ -0,0 +1,221 @@
function Show-CustomDialog {
<#
.SYNOPSIS
Displays a custom dialog box with an image, heading, message, and an OK button.
.DESCRIPTION
This function creates a custom dialog box with the specified message and additional elements such as an image, heading, and an OK button. The dialog box is designed with a green border, rounded corners, and a black background.
.PARAMETER Message
The message to be displayed in the dialog box.
.PARAMETER Width
The width of the custom dialog window.
.PARAMETER Height
The height of the custom dialog window.
.EXAMPLE
Show-CustomDialog -Message "This is a custom dialog with a message and an image above." -Width 300 -Height 200
#>
param(
[string]$Message,
[int]$Width = 300,
[int]$Height = 200
)
Add-Type -AssemblyName PresentationFramework
# Define theme colors
$foregroundColor = [Windows.Media.Brushes]::White
$backgroundColor = [Windows.Media.Brushes]::Black
$font = New-Object Windows.Media.FontFamily("Consolas")
$borderColor = [Windows.Media.Brushes]::Green
$buttonBackgroundColor = [Windows.Media.Brushes]::Black
$buttonForegroundColor = [Windows.Media.Brushes]::White
$shadowColor = [Windows.Media.ColorConverter]::ConvertFromString("#AAAAAAAA")
# Create a custom dialog window
$dialog = New-Object Windows.Window
$dialog.Title = "About"
$dialog.Height = $Height
$dialog.Width = $Width
$dialog.Margin = New-Object Windows.Thickness(10) # Add margin to the entire dialog box
$dialog.WindowStyle = [Windows.WindowStyle]::None # Remove title bar and window controls
$dialog.ResizeMode = [Windows.ResizeMode]::NoResize # Disable resizing
$dialog.WindowStartupLocation = [Windows.WindowStartupLocation]::CenterScreen # Center the window
$dialog.Foreground = $foregroundColor
$dialog.Background = $backgroundColor
$dialog.FontFamily = $font
# Create a Border for the green edge with rounded corners
$border = New-Object Windows.Controls.Border
$border.BorderBrush = $borderColor
$border.BorderThickness = New-Object Windows.Thickness(1) # Adjust border thickness as needed
$border.CornerRadius = New-Object Windows.CornerRadius(10) # Adjust the radius for rounded corners
# Create a drop shadow effect
$dropShadow = New-Object Windows.Media.Effects.DropShadowEffect
$dropShadow.Color = $shadowColor
$dropShadow.Direction = 270
$dropShadow.ShadowDepth = 5
$dropShadow.BlurRadius = 10
# Apply drop shadow effect to the border
$dialog.Effect = $dropShadow
$dialog.Content = $border
# Create a grid for layout inside the Border
$grid = New-Object Windows.Controls.Grid
$border.Child = $grid
# Add the following line to show gridlines
#$grid.ShowGridLines = $true
# Add the following line to set the background color of the grid
$grid.Background = [Windows.Media.Brushes]::Transparent
# Add the following line to make the Grid stretch
$grid.HorizontalAlignment = [Windows.HorizontalAlignment]::Stretch
$grid.VerticalAlignment = [Windows.VerticalAlignment]::Stretch
# Add the following line to make the Border stretch
$border.HorizontalAlignment = [Windows.HorizontalAlignment]::Stretch
$border.VerticalAlignment = [Windows.VerticalAlignment]::Stretch
# Set up Row Definitions
$row0 = New-Object Windows.Controls.RowDefinition
$row0.Height = [Windows.GridLength]::Auto
$row1 = New-Object Windows.Controls.RowDefinition
$row1.Height = [Windows.GridLength]::new(1, [Windows.GridUnitType]::Star)
$row2 = New-Object Windows.Controls.RowDefinition
$row2.Height = [Windows.GridLength]::Auto
# Add Row Definitions to Grid
$grid.RowDefinitions.Add($row0)
$grid.RowDefinitions.Add($row1)
$grid.RowDefinitions.Add($row2)
# Add StackPanel for horizontal layout with margins
$stackPanel = New-Object Windows.Controls.StackPanel
$stackPanel.Margin = New-Object Windows.Thickness(10) # Add margins around the stack panel
$stackPanel.Orientation = [Windows.Controls.Orientation]::Horizontal
$stackPanel.HorizontalAlignment = [Windows.HorizontalAlignment]::Left # Align to the left
$stackPanel.VerticalAlignment = [Windows.VerticalAlignment]::Top # Align to the top
$grid.Children.Add($stackPanel)
[Windows.Controls.Grid]::SetRow($stackPanel, 0) # Set the row to the second row (0-based index)
$viewbox = New-Object Windows.Controls.Viewbox
$viewbox.Width = 25
$viewbox.Height = 25
# Combine the paths into a single string
# $cttLogoPath = @"
# M174 1094 c-4 -14 -4 -55 -2 -92 3 -57 9 -75 41 -122 41 -60 45 -75 22 -84 -25 -9 -17 -21 30 -44 l45 -22 0 -103 c0 -91 3 -109 26 -155 30 -60 65 -87 204 -157 l95 -48 110 58 c184 96 205 127 205 293 l0 108 45 22 c47 23 55 36 30 46 -22 8 -18 30 9 63 13 16 34 48 46 71 20 37 21 52 15 116 l-6 73 -69 -23 c-38 -12 -137 -59 -220 -103 -82 -45 -160 -81 -171 -81 -12 0 -47 15 -78 34 -85 51 -239 127 -309 151 l-62 22 -6 -23z m500 -689 c20 -8 36 -19 36 -24 0 -18 -53 -51 -80 -51 -28 0 -80 33 -80 51 0 10 55 38 76 39 6 0 28 -7 48 -15z
# M177 711 c-19 -88 4 -242 49 -318 43 -74 107 -127 232 -191 176 -90 199 -84 28 7 -169 91 -214 129 -258 220 -29 58 -32 74 -37 190 -4 90 -8 116 -14 92z
# M1069 610 c-4 -131 -5 -137 -38 -198 -43 -79 -89 -119 -210 -181 -53 -27 -116 -61 -141 -76 -74 -43 -6 -20 115 40 221 109 296 217 294 425 -1 144 -16 137 -20 -10z
# "@
$cttLogoPath = @"
M 18.00,14.00
C 18.00,14.00 45.00,27.74 45.00,27.74
45.00,27.74 57.40,34.63 57.40,34.63
57.40,34.63 59.00,43.00 59.00,43.00
59.00,43.00 59.00,83.00 59.00,83.00
55.35,81.66 46.99,77.79 44.72,74.79
41.17,70.10 42.01,59.80 42.00,54.00
42.00,51.62 42.20,48.29 40.98,46.21
38.34,41.74 25.78,38.60 21.28,33.79
16.81,29.02 18.00,20.20 18.00,14.00 Z
M 107.00,14.00
C 109.01,19.06 108.93,30.37 104.66,34.21
100.47,37.98 86.38,43.10 84.60,47.21
83.94,48.74 84.01,51.32 84.00,53.00
83.97,57.04 84.46,68.90 83.26,72.00
81.06,77.70 72.54,81.42 67.00,83.00
67.00,83.00 67.00,43.00 67.00,43.00
67.00,43.00 67.99,35.63 67.99,35.63
67.99,35.63 80.00,28.26 80.00,28.26
80.00,28.26 107.00,14.00 107.00,14.00 Z
M 19.00,46.00
C 21.36,47.14 28.67,50.71 30.01,52.63
31.17,54.30 30.99,57.04 31.00,59.00
31.04,65.41 30.35,72.16 33.56,78.00
38.19,86.45 46.10,89.04 54.00,93.31
56.55,94.69 60.10,97.20 63.00,97.22
65.50,97.24 68.77,95.36 71.00,94.25
76.42,91.55 84.51,87.78 88.82,83.68
94.56,78.20 95.96,70.59 96.00,63.00
96.01,60.24 95.59,54.63 97.02,52.39
98.80,49.60 103.95,47.87 107.00,47.00
107.00,47.00 107.00,67.00 107.00,67.00
106.90,87.69 96.10,93.85 80.00,103.00
76.51,104.98 66.66,110.67 63.00,110.52
60.33,110.41 55.55,107.53 53.00,106.25
46.21,102.83 36.63,98.57 31.04,93.68
16.88,81.28 19.00,62.88 19.00,46.00 Z
"@
# Add SVG path
$svgPath = New-Object Windows.Shapes.Path
$svgPath.Data = [Windows.Media.Geometry]::Parse($cttLogoPath)
$svgPath.Fill = $foregroundColor # Set fill color to white
# Add SVG path to Viewbox
$viewbox.Child = $svgPath
# Add SVG path to the stack panel
$stackPanel.Children.Add($viewbox)
# Add "Winutil" text
$winutilTextBlock = New-Object Windows.Controls.TextBlock
$winutilTextBlock.Text = "Winutil"
$winutilTextBlock.FontSize = 18 # Adjust font size as needed
$winutilTextBlock.Foreground = $foregroundColor
$winutilTextBlock.Margin = New-Object Windows.Thickness(10, 5, 10, 5) # Add margins around the text block
$stackPanel.Children.Add($winutilTextBlock)
# Add TextBlock for information with text wrapping and margins
$messageTextBlock = New-Object Windows.Controls.TextBlock
$messageTextBlock.Text = $Message
$messageTextBlock.TextWrapping = [Windows.TextWrapping]::Wrap # Enable text wrapping
$messageTextBlock.HorizontalAlignment = [Windows.HorizontalAlignment]::Left
$messageTextBlock.VerticalAlignment = [Windows.VerticalAlignment]::Top
$messageTextBlock.Margin = New-Object Windows.Thickness(10) # Add margins around the text block
$grid.Children.Add($messageTextBlock)
[Windows.Controls.Grid]::SetRow($messageTextBlock, 1) # Set the row to the second row (0-based index)
# Add OK button
$okButton = New-Object Windows.Controls.Button
$okButton.Content = "OK"
$okButton.Width = 80
$okButton.Height = 30
$okButton.HorizontalAlignment = [Windows.HorizontalAlignment]::Center
$okButton.VerticalAlignment = [Windows.VerticalAlignment]::Bottom
$okButton.Margin = New-Object Windows.Thickness(0, 0, 0, 10)
$okButton.Background = $buttonBackgroundColor
$okButton.Foreground = $buttonForegroundColor
$okButton.BorderBrush = $borderColor
$okButton.Add_Click({
$dialog.Close()
})
$grid.Children.Add($okButton)
[Windows.Controls.Grid]::SetRow($okButton, 2) # Set the row to the third row (0-based index)
# Handle Escape key press to close the dialog
$dialog.Add_KeyDown({
if ($_.Key -eq 'Escape') {
$dialog.Close()
}
})
# Set the OK button as the default button (activated on Enter)
$okButton.IsDefault = $true
# Show the custom dialog
$dialog.ShowDialog()
}

View File

@ -14,7 +14,6 @@ Function Update-WinUtilProgramWinget {
Start-Transcript $ENV:TEMP\winget-update.log -Append Start-Transcript $ENV:TEMP\winget-update.log -Append
winget upgrade --all winget upgrade --all
Pause
} }
$global:WinGetInstall = Start-Process -Verb runas powershell -ArgumentList "-command invoke-command -scriptblock {$wingetinstall} -argumentlist '$($ProgramsToInstall -join ",")'" -PassThru $global:WinGetInstall = Start-Process -Verb runas powershell -ArgumentList "-command invoke-command -scriptblock {$wingetinstall} -argumentlist '$($ProgramsToInstall -join ",")'" -PassThru

View File

@ -24,10 +24,6 @@ function Invoke-WPFButton {
"WPFdesktop" {Invoke-WPFPresets "Desktop"} "WPFdesktop" {Invoke-WPFPresets "Desktop"}
"WPFlaptop" {Invoke-WPFPresets "laptop"} "WPFlaptop" {Invoke-WPFPresets "laptop"}
"WPFminimal" {Invoke-WPFPresets "minimal"} "WPFminimal" {Invoke-WPFPresets "minimal"}
"WPFexport" {Invoke-WPFImpex -type "export" -CheckBox "WPFTweaks"}
"WPFimport" {Invoke-WPFImpex -type "import" -CheckBox "WPFTweaks"}
"WPFexportWinget" {Invoke-WPFImpex -type "export" -CheckBox "WPFInstall"}
"WPFimportWinget" {Invoke-WPFImpex -type "import" -CheckBox "WPFInstall"}
"WPFclear" {Invoke-WPFPresets -preset $null -imported $true} "WPFclear" {Invoke-WPFPresets -preset $null -imported $true}
"WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"} "WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"}
"WPFtweaksbutton" {Invoke-WPFtweaksbutton} "WPFtweaksbutton" {Invoke-WPFtweaksbutton}

View File

@ -7,15 +7,15 @@ function Invoke-WPFFeatureInstall {
#> #>
if($sync.ProcessRunning){ if($sync.ProcessRunning){
$msg = "Install process is currently running." $msg = "[Invoke-WPFFeatureInstall] Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return return
} }
$Features = Get-WinUtilCheckBoxes -Group "WPFFeature" $Features = (Get-WinUtilCheckBoxes)["WPFFeatures"]
Invoke-WPFRunspace -ArgumentList $Features -ScriptBlock { Invoke-WPFRunspace -ArgumentList $Features,$DebugPreference -ScriptBlock {
param($Features) param($Features, $DebugPreference)
$sync.ProcessRunning = $true $sync.ProcessRunning = $true
@ -26,12 +26,5 @@ function Invoke-WPFFeatureInstall {
Write-Host "--- Features are Installed ---" Write-Host "--- Features are Installed ---"
Write-Host "--- A Reboot may be required ---" Write-Host "--- A Reboot may be required ---"
Write-Host "===================================" Write-Host "==================================="
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "All features are now installed "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
} }
} }

View File

@ -11,7 +11,7 @@ function Invoke-WPFGetInstalled {
param($checkbox) param($checkbox)
if($sync.ProcessRunning){ if($sync.ProcessRunning){
$msg = "Install process is currently running." $msg = "[Invoke-WPFGetInstalled] Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return return
} }
@ -23,8 +23,8 @@ function Invoke-WPFGetInstalled {
return return
} }
Invoke-WPFRunspace -ArgumentList $checkbox -ScriptBlock { Invoke-WPFRunspace -ArgumentList $checkbox,$DebugPreference -ScriptBlock {
param($checkbox) param($checkbox, $DebugPreference)
$sync.ProcessRunning = $true $sync.ProcessRunning = $true

View File

@ -16,7 +16,7 @@ function Invoke-WPFImpex {
#> #>
param( param(
$type, $type,
$checkbox $Config = $null
) )
if ($type -eq "export"){ if ($type -eq "export"){
@ -26,20 +26,36 @@ function Invoke-WPFImpex {
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog $FileBrowser = New-Object System.Windows.Forms.OpenFileDialog
} }
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop') if (-not $Config){
$FileBrowser.Filter = "JSON Files (*.json)|*.json" $FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')
$FileBrowser.ShowDialog() | Out-Null $FileBrowser.Filter = "JSON Files (*.json)|*.json"
$FileBrowser.ShowDialog() | Out-Null
if($FileBrowser.FileName -eq ""){ if($FileBrowser.FileName -eq ""){
return return
}
else{
$Config = $FileBrowser.FileName
}
} }
if ($type -eq "export"){ if ($type -eq "export"){
$jsonFile = Get-WinUtilCheckBoxes $checkbox -unCheck $false $jsonFile = Get-WinUtilCheckBoxes -unCheck $false
$jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force $jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force
} }
if ($type -eq "import"){ if ($type -eq "import"){
$jsonFile = Get-Content $FileBrowser.FileName | ConvertFrom-Json $jsonFile = Get-Content $Config | ConvertFrom-Json
Invoke-WPFPresets -preset $jsonFile -imported $true -CheckBox $checkbox
$flattenedJson = @()
$jsonFile.PSObject.Properties | ForEach-Object {
$category = $_.Name
foreach ($checkboxName in $_.Value) {
if ($category -ne "Install") {
$flattenedJson += $checkboxName
}
}
}
Invoke-WPFPresets -preset $flattenedJson -imported $true
} }
} }

View File

@ -7,12 +7,12 @@ function Invoke-WPFInstall {
#> #>
if($sync.ProcessRunning){ if($sync.ProcessRunning){
$msg = "Install process is currently running." $msg = "[Invoke-WPFInstall] Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return return
} }
$WingetInstall = Get-WinUtilCheckBoxes -Group "WPFInstall" $WingetInstall = (Get-WinUtilCheckBoxes)["Install"]
if ($wingetinstall.Count -eq 0) { if ($wingetinstall.Count -eq 0) {
$WarningMsg = "Please select the program(s) to install" $WarningMsg = "Please select the program(s) to install"
@ -20,24 +20,15 @@ function Invoke-WPFInstall {
return return
} }
Invoke-WPFRunspace -ArgumentList $WingetInstall -scriptblock { Invoke-WPFRunspace -ArgumentList $WingetInstall,$DebugPreference -ScriptBlock {
param($WingetInstall) param($WingetInstall, $DebugPreference)
try{ try{
$sync.ProcessRunning = $true $sync.ProcessRunning = $true
# Ensure winget is installed
Install-WinUtilWinget Install-WinUtilWinget
# Install all selected programs in new window
Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Installs are Finished "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "===========================================" Write-Host "==========================================="
Write-Host "-- Installs have finished ---" Write-Host "-- Installs have finished ---"
Write-Host "===========================================" Write-Host "==========================================="
@ -47,6 +38,7 @@ function Invoke-WPFInstall {
Write-Host "-- Winget failed to install ---" Write-Host "-- Winget failed to install ---"
Write-Host "===========================================" Write-Host "==========================================="
} }
Start-Sleep -Seconds 5
$sync.ProcessRunning = $False $sync.ProcessRunning = $False
} }
} }

View File

@ -13,7 +13,7 @@ function Invoke-WPFInstallUpgrade {
} }
if(Get-WinUtilInstallerProcess -Process $global:WinGetInstall){ if(Get-WinUtilInstallerProcess -Process $global:WinGetInstall){
$msg = "Install process is currently running. Please check for a powershell window labeled 'Winget Install'" $msg = "[Invoke-WPFInstallUpgrade] Install process is currently running. Please check for a powershell window labeled 'Winget Install'"
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return return
} }

View File

@ -17,8 +17,7 @@ function Invoke-WPFPresets {
param( param(
$preset, $preset,
[bool]$imported = $false, [bool]$imported = $false
$checkbox = "WPFTweaks"
) )
if($imported -eq $true){ if($imported -eq $true){
@ -28,23 +27,33 @@ function Invoke-WPFPresets {
$CheckBoxesToCheck = $sync.configs.preset.$preset $CheckBoxesToCheck = $sync.configs.preset.$preset
} }
if($checkbox -eq "WPFTweaks"){ $CheckBoxes = $sync.GetEnumerator() | Where-Object { $_.Value -is [System.Windows.Controls.CheckBox] }
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "*tweaks*"} Write-Debug "Getting checkboxes to set $($CheckBoxes.Count)"
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
if ($CheckBoxesToCheck -contains $PSItem.name){ $CheckBoxesToCheck | ForEach-Object {
$sync.$($PSItem.name).ischecked = $true if ($_ -ne $null) {
} Write-Debug $_
else{$sync.$($PSItem.name).ischecked = $false}
} }
} }
if($checkbox -eq "WPFInstall"){
foreach ($CheckBox in $CheckBoxes) {
$checkboxName = $CheckBox.Key
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"} if (-not $CheckBoxesToCheck)
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object { {
if($($sync.configs.applications.$($psitem.name).winget) -in $CheckBoxesToCheck){ $sync.$checkboxName.IsChecked = $false
$sync.$($PSItem.name).ischecked = $true continue
} }
else{$sync.$($PSItem.name).ischecked = $false}
# Check if the checkbox name exists in the flattened JSON hashtable
if ($CheckBoxesToCheck.Contains($checkboxName)) {
# If it exists, set IsChecked to true
$sync.$checkboxName.IsChecked = $true
Write-Debug "$checkboxName is checked"
} else {
# If it doesn't exist, set IsChecked to false
$sync.$checkboxName.IsChecked = $false
Write-Debug "$checkboxName is not checked"
} }
} }
} }

View File

@ -21,7 +21,8 @@ function Invoke-WPFRunspace {
[CmdletBinding()] [CmdletBinding()]
Param ( Param (
$ScriptBlock, $ScriptBlock,
$ArgumentList $ArgumentList,
$DebugPreference
) )
# Create a PowerShell instance # Create a PowerShell instance
@ -30,6 +31,7 @@ function Invoke-WPFRunspace {
# Add Scriptblock and Arguments to runspace # Add Scriptblock and Arguments to runspace
$script:powershell.AddScript($ScriptBlock) $script:powershell.AddScript($ScriptBlock)
$script:powershell.AddArgument($ArgumentList) $script:powershell.AddArgument($ArgumentList)
$script:powershell.AddArgument($DebugPreference) # Pass DebugPreference to the script block
$script:powershell.RunspacePool = $sync.runspace $script:powershell.RunspacePool = $sync.runspace
# Execute the RunspacePool # Execute the RunspacePool

View File

@ -13,19 +13,19 @@ function Invoke-WPFShortcut {
$iconPath = $null $iconPath = $null
Switch ($ShortcutToAdd) { Switch ($ShortcutToAdd) {
"WinUtil" { "WinUtil" {
$SourceExe = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" $SourceExe = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe"
$IRM = 'irm https://christitus.com/win | iex' $IRM = 'irm https://christitus.com/win | iex'
$Powershell = '-ExecutionPolicy Bypass -Command "Start-Process powershell.exe -verb runas -ArgumentList' $Powershell = '-ExecutionPolicy Bypass -Command "Start-Process powershell.exe -verb runas -ArgumentList'
$ArgumentsToSourceExe = "$powershell '$IRM'" $ArgumentsToSourceExe = "$powershell '$IRM'"
$DestinationName = "WinUtil.lnk" $DestinationName = "WinUtil.lnk"
if (Test-Path -Path "$env:TEMP\cttlogo.png") { if (Test-Path -Path "$env:TEMP\cttlogo.png") {
$iconPath = "$env:SystempRoot\cttlogo.ico" $iconPath = "$env:SystempRoot\cttlogo.ico"
ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath $iconPath ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath $iconPath
}
} }
} }
}
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog $FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop') $FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')

View File

@ -7,12 +7,12 @@ function Invoke-WPFUnInstall {
#> #>
if($sync.ProcessRunning){ if($sync.ProcessRunning){
$msg = "Install process is currently running" $msg = "[Invoke-WPFUnInstall] Install process is currently running"
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return return
} }
$WingetInstall = Get-WinUtilCheckBoxes -Group "WPFInstall" $WingetInstall = (Get-WinUtilCheckBoxes)["Install"]
if ($wingetinstall.Count -eq 0) { if ($wingetinstall.Count -eq 0) {
$WarningMsg = "Please select the program(s) to install" $WarningMsg = "Please select the program(s) to install"
@ -29,8 +29,9 @@ function Invoke-WPFUnInstall {
if($confirm -eq "No"){return} if($confirm -eq "No"){return}
Invoke-WPFRunspace -ArgumentList $WingetInstall -scriptblock { Invoke-WPFRunspace -ArgumentList $WingetInstall,$DebugPreference -ScriptBlock {
param($WingetInstall) param($WingetInstall, $DebugPreference)
try{ try{
$sync.ProcessRunning = $true $sync.ProcessRunning = $true

View File

@ -7,13 +7,13 @@ function Invoke-WPFtweaksbutton {
#> #>
if($sync.ProcessRunning){ if($sync.ProcessRunning){
$msg = "Install process is currently running." $msg = "[Invoke-WPFtweaksbutton] Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return return
} }
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks" $Tweaks = (Get-WinUtilCheckBoxes)["WPFTweaks"]
Set-WinUtilDNS -DNSProvider $sync["WPFchangedns"].text Set-WinUtilDNS -DNSProvider $sync["WPFchangedns"].text
if ($tweaks.count -eq 0 -and $sync["WPFchangedns"].text -eq "Default"){ if ($tweaks.count -eq 0 -and $sync["WPFchangedns"].text -eq "Default"){
@ -22,21 +22,20 @@ function Invoke-WPFtweaksbutton {
return return
} }
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock { Write-Debug "Number of tweaks to process: $($Tweaks.Count)"
param($Tweaks)
Invoke-WPFRunspace -ArgumentList $Tweaks -DebugPreference $DebugPreference -ScriptBlock {
param($Tweaks, $DebugPreference)
Write-Debug "Inside Number of tweaks to process: $($Tweaks.Count)"
$sync.ProcessRunning = $true $sync.ProcessRunning = $true
# Executes first if selected $cnt = 0
if ("WPFEssTweaksRestorePoint" -in $Tweaks) {
Invoke-WinUtilTweaks "WPFEssTweaksRestorePoint"
}
# Execute other selected tweaks # Execute other selected tweaks
foreach ($tweak in $tweaks) { foreach ($tweak in $Tweaks) {
if ($tweak -ne "WPFEssTweaksRestorePoint") { Write-Debug "This is a tweak to run $tweak count: $cnt"
Invoke-WinUtilTweaks $tweak Invoke-WinUtilTweaks $tweak
} $cnt += 1
} }
$sync.ProcessRunning = $false $sync.ProcessRunning = $false
@ -44,11 +43,10 @@ function Invoke-WPFtweaksbutton {
Write-Host "-- Tweaks are Finished ---" Write-Host "-- Tweaks are Finished ---"
Write-Host "=================================" Write-Host "================================="
$ButtonType = [System.Windows.MessageBoxButton]::OK # $ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Tweaks are Finished " # $MessageboxTitle = "Tweaks are Finished "
$Messageboxbody = ("Done") # $Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information # $MessageIcon = [System.Windows.MessageBoxImage]::Information
# [System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
} }
} }

View File

@ -7,12 +7,12 @@ function Invoke-WPFundoall {
#> #>
if($sync.ProcessRunning){ if($sync.ProcessRunning){
$msg = "Install process is currently running." $msg = "[Invoke-WPFundoall] Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return return
} }
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks" $Tweaks = (Get-WinUtilCheckBoxes)["WPFTweaks"]
if ($tweaks.count -eq 0){ if ($tweaks.count -eq 0){
$msg = "Please check the tweaks you wish to undo." $msg = "Please check the tweaks you wish to undo."
@ -20,8 +20,8 @@ function Invoke-WPFundoall {
return return
} }
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock { Invoke-WPFRunspace -ArgumentList $Tweaks,$DebugPreference -ScriptBlock {
param($Tweaks) param($Tweaks, $DebugPreference)
$sync.ProcessRunning = $true $sync.ProcessRunning = $true

View File

@ -1,5 +1,4 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# Set the maximum number of threads for the RunspacePool to the number of threads on the machine # Set the maximum number of threads for the RunspacePool to the number of threads on the machine
$maxthreads = [int]$env:NUMBER_OF_PROCESSORS $maxthreads = [int]$env:NUMBER_OF_PROCESSORS
@ -129,8 +128,6 @@ catch {
Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed." Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed."
} }
#=========================================================================== #===========================================================================
# Store Form Objects In PowerShell # Store Form Objects In PowerShell
#=========================================================================== #===========================================================================
@ -168,7 +165,7 @@ $sync.keys | ForEach-Object {
$sync["$psitem"].Add_MouseUp({ $sync["$psitem"].Add_MouseUp({
[System.Object]$Sender = $args[0] [System.Object]$Sender = $args[0]
Start-Process $Sender.ToolTip -ErrorAction Stop Start-Process $Sender.ToolTip -ErrorAction Stop
Write-Host "Let's go: $($Sender.ToolTip)" Write-Debug "Opening: $($Sender.ToolTip)"
}) })
} }
@ -206,7 +203,6 @@ $sync["Form"].Add_Closing({
[System.GC]::Collect() [System.GC]::Collect()
}) })
# Attach the event handler to the Click event # Attach the event handler to the Click event
$sync.CheckboxFilterClear.Add_Click({ $sync.CheckboxFilterClear.Add_Click({
$sync.CheckboxFilter.Text = "" $sync.CheckboxFilter.Text = ""
@ -264,8 +260,10 @@ $commonKeyEvents = {
$sync["Form"].Add_PreViewKeyDown($commonKeyEvents) $sync["Form"].Add_PreViewKeyDown($commonKeyEvents)
# adding some left mouse window move on drag capability
$sync["Form"].Add_MouseLeftButtonDown({ $sync["Form"].Add_MouseLeftButtonDown({
if ($sync["SettingsPopup"].IsOpen) {
$sync["SettingsPopup"].IsOpen = $false
}
$sync["Form"].DragMove() $sync["Form"].DragMove()
}) })
@ -280,31 +278,36 @@ $sync["Form"].Add_MouseDoubleClick({
} }
}) })
$sync["Form"].Add_ContentRendered({ $sync["Form"].Add_Deactivated({
Write-Debug "WinUtil lost focus"
foreach ($proc in (Get-Process | Where-Object { $_.MainWindowTitle -and $_.MainWindowTitle -like "*tit*" })) { if ($sync["SettingsPopup"].IsOpen) {
if ($proc.Id -ne [System.IntPtr]::Zero) { $sync["SettingsPopup"].IsOpen = $false
Write-Debug "MainWindowHandle: $($proc.Id) $($proc.MainWindowTitle) $($proc.MainWindowHandle)"
$windowHandle = $proc.MainWindowHandle
}
} }
})
$sync["Form"].Add_ContentRendered({
try { try {
[void][Window] [void][Window]
} catch { } catch {
Add-Type @" Add-Type @"
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
public class Window { public class Window {
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")] [DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)] [return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[DllImport("user32.dll")] [DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)] [return: MarshalAs(UnmanagedType.Bool)]
public static extern bool MoveWindow(IntPtr handle, int x, int y, int width, int height, bool redraw); public static extern bool MoveWindow(IntPtr handle, int x, int y, int width, int height, bool redraw);
[DllImport("user32.dll")] [DllImport("user32.dll")]
public static extern int GetSystemMetrics(int nIndex); public static extern int GetSystemMetrics(int nIndex);
} };
public struct RECT { public struct RECT {
public int Left; // x position of upper-left corner public int Left; // x position of upper-left corner
public int Top; // y position of upper-left corner public int Top; // y position of upper-left corner
@ -314,8 +317,29 @@ $sync["Form"].Add_ContentRendered({
"@ "@
} }
foreach ($proc in (Get-Process | Where-Object { $_.MainWindowTitle -and $_.MainWindowTitle -like "*titus*" })) {
if ($proc.Id -ne [System.IntPtr]::Zero) {
Write-Debug "MainWindowHandle: $($proc.Id) $($proc.MainWindowTitle) $($proc.MainWindowHandle)"
$windowHandle = $proc.MainWindowHandle
}
}
# need to experiemnt more
# setting icon for the windows is still not working
# $pngUrl = "https://christitus.com/images/logo-full.png"
# $pngPath = "$env:TEMP\cttlogo.png"
# $iconPath = "$env:TEMP\cttlogo.ico"
# # Download the PNG file
# Invoke-WebRequest -Uri $pngUrl -OutFile $pngPath
# if (Test-Path -Path $pngPath) {
# ConvertTo-Icon -bitmapPath $pngPath -iconPath $iconPath
# }
# $icon = [System.Drawing.Icon]::ExtractAssociatedIcon($iconPath)
# Write-Host $icon.Handle
# [Window]::SendMessage($windowHandle, 0x80, [IntPtr]::Zero, $icon.Handle)
$rect = New-Object RECT $rect = New-Object RECT
[void][Window]::GetWindowRect($windowHandle, [ref]$rect) [Window]::GetWindowRect($windowHandle, [ref]$rect)
$width = $rect.Right - $rect.Left $width = $rect.Right - $rect.Left
$height = $rect.Bottom - $rect.Top $height = $rect.Bottom - $rect.Top
@ -347,6 +371,42 @@ $sync["Form"].Add_ContentRendered({
Invoke-WPFTab "WPFTab1BT" Invoke-WPFTab "WPFTab1BT"
$sync["Form"].Focus() $sync["Form"].Focus()
# maybe this is not the best place to load and execute config file?
# maybe community can help?
if ($PARAM_CONFIG){
Invoke-WPFImpex -type "import" -Config $PARAM_CONFIG
if ($PARAM_RUN){
while ($sync.ProcessRunning) {
Start-Sleep -Seconds 5
}
Start-Sleep -Seconds 5
Write-Host "Applying tweaks..."
Invoke-WPFtweaksbutton
while ($sync.ProcessRunning) {
Start-Sleep -Seconds 5
}
Start-Sleep -Seconds 5
Write-Host "Installing features..."
Invoke-WPFFeatureInstall
while ($sync.ProcessRunning) {
Start-Sleep -Seconds 5
}
Start-Sleep -Seconds 5
Write-Host "Installing applications..."
while ($sync.ProcessRunning) {
Start-Sleep -Seconds 1
}
Invoke-WPFInstall
Start-Sleep -Seconds 5
Write-Host "Done."
}
}
}) })
$sync["CheckboxFilter"].Add_TextChanged({ $sync["CheckboxFilter"].Add_TextChanged({
@ -392,5 +452,50 @@ $sync["CheckboxFilter"].Add_TextChanged({
}) })
# Define event handler for button click
$sync["SettingsButton"].Add_Click({
Write-Debug "SettingsButton clicked"
if ($sync["SettingsPopup"].IsOpen) {
$sync["SettingsPopup"].IsOpen = $false
}
else {
$sync["SettingsPopup"].IsOpen = $true
}
$_.Handled = $false
})
# Define event handlers for menu items
$sync["ImportMenuItem"].Add_Click({
# Handle Import menu item click
Write-Debug "Import clicked"
$sync["SettingsPopup"].IsOpen = $false
Invoke-WPFImpex -type "import"
$_.Handled = $false
})
$sync["ExportMenuItem"].Add_Click({
# Handle Export menu item click
Write-Debug "Export clicked"
$sync["SettingsPopup"].IsOpen = $false
Invoke-WPFImpex -type "export"
$_.Handled = $false
})
$sync["AboutMenuItem"].Add_Click({
# Handle Export menu item click
Write-Debug "About clicked"
$sync["SettingsPopup"].IsOpen = $false
# Example usage
$authorInfo = @"
Author : @christitustech
Runspace : @DeveloperDurp
GUI : @KonTy
MicroWin : @KonTy
GitHub : https://github.com/ChrisTitusTech/winutil
Version : $($sync.version)
"@
Show-CustomDialog -Message $authorInfo -Width 400
})
$sync["Form"].ShowDialog() | out-null $sync["Form"].ShowDialog() | out-null
Stop-Transcript Stop-Transcript

View File

@ -5,6 +5,27 @@
GitHub : https://github.com/ChrisTitusTech GitHub : https://github.com/ChrisTitusTech
Version : #{replaceme} Version : #{replaceme}
#> #>
param (
[switch]$Debug,
[string]$Config,
[switch]$Run
)
# Set DebugPreference based on the -Debug switch
if ($Debug) {
$DebugPreference = "Continue"
}
if ($Config) {
$PARAM_CONFIG = $Config
}
$PARAM_RUN = $false
# Handle the -Run switch
if ($Run) {
Write-Host "Running config file tasks..."
$PARAM_RUN = $true
}
if (!(Test-Path -Path $ENV:TEMP)) { if (!(Test-Path -Path $ENV:TEMP)) {
New-Item -ItemType Directory -Force -Path $ENV:TEMP New-Item -ItemType Directory -Force -Path $ENV:TEMP
@ -27,6 +48,7 @@ $currentPid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$principal = new-object System.Security.Principal.WindowsPrincipal($currentPid) $principal = new-object System.Security.Principal.WindowsPrincipal($currentPid)
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator $adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
if ($principal.IsInRole($adminRole)) if ($principal.IsInRole($adminRole))
{ {
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Admin)" $Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Admin)"

File diff suppressed because it is too large Load Diff

View File

@ -13,15 +13,6 @@
<WindowChrome CaptionHeight="0" CornerRadius="10"/> <WindowChrome CaptionHeight="0" CornerRadius="10"/>
</WindowChrome.WindowChrome> </WindowChrome.WindowChrome>
<Window.Resources> <Window.Resources>
<Storyboard x:Key="FireworksAnimation">
<!-- Firework Burst -->
<DoubleAnimation Storyboard.TargetName="FireworkBurst" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="FireworkBurst" Storyboard.TargetProperty="ScaleX" From="0" To="1" Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="FireworkBurst" Storyboard.TargetProperty="ScaleY" From="0" To="1" Duration="0:0:0.5"/>
<ColorAnimation Storyboard.TargetName="FireworkBurst" Storyboard.TargetProperty="(Path.Fill).(SolidColorBrush.Color)" To="Red" Duration="0:0:0.5"/>
</Storyboard>
<!--Scrollbar Thumbs--> <!--Scrollbar Thumbs-->
<Style x:Key="ScrollThumbs" TargetType="{x:Type Thumb}"> <Style x:Key="ScrollThumbs" TargetType="{x:Type Thumb}">
<Setter Property="Template"> <Setter Property="Template">
@ -54,6 +45,28 @@
</Style.Triggers> </Style.Triggers>
</Style> </Style>
<Style TargetType="Button" x:Key="HoverButtonStyle">
<Setter Property="Foreground" Value="{MainForegroundColor}" />
<Setter Property="FontWeight" Value="Normal" />
<Setter Property="Background" Value="{MainBackgroundColor}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="{MainForegroundColor}" />
<Setter Property="Cursor" Value="Hand" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--ScrollBars--> <!--ScrollBars-->
<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}"> <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
<Setter Property="Stylus.IsFlicksEnabled" Value="false" /> <Setter Property="Stylus.IsFlicksEnabled" Value="false" />
@ -158,6 +171,7 @@
<Setter Property="Foreground" Value="{LabelboxForegroundColor}"/> <Setter Property="Foreground" Value="{LabelboxForegroundColor}"/>
<Setter Property="Background" Value="{LabelBackgroundColor}"/> <Setter Property="Background" Value="{LabelBackgroundColor}"/>
</Style> </Style>
<!-- TextBlock template --> <!-- TextBlock template -->
<Style TargetType="TextBlock"> <Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{LabelboxForegroundColor}"/> <Setter Property="Foreground" Value="{LabelboxForegroundColor}"/>
@ -275,8 +289,8 @@
<Style TargetType="CheckBox"> <Style TargetType="CheckBox">
<Setter Property="Foreground" Value="{MainForegroundColor}"/> <Setter Property="Foreground" Value="{MainForegroundColor}"/>
<Setter Property="Background" Value="{MainBackgroundColor}"/> <Setter Property="Background" Value="{MainBackgroundColor}"/>
<Setter Property="FontSize" Value="14" /> <!-- <Setter Property="FontSize" Value="15" /> -->
<Setter Property="TextElement.FontFamily" Value="Arial, sans-serif"/> <!-- <Setter Property="TextElement.FontFamily" Value="Consolas, sans-serif"/> -->
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
<ControlTemplate TargetType="CheckBox"> <ControlTemplate TargetType="CheckBox">
@ -600,8 +614,16 @@
</TextBlock> </TextBlock>
</ToggleButton.Content> </ToggleButton.Content>
</ToggleButton> </ToggleButton>
<Grid> <Grid Background="{MainBackgroundColor}" ShowGridLines="False" Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
<TextBox Width="200" <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="50px"/>
<ColumnDefinition Width="50px"/>
</Grid.ColumnDefinitions>
<TextBox
Grid.Column="0"
Width="200"
FontSize="14" FontSize="14"
VerticalAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Center" HorizontalAlignment="Left"
Height="25" Margin="10,0,0,0" BorderThickness="1" Padding="22,2,2,2" Height="25" Margin="10,0,0,0" BorderThickness="1" Padding="22,2,2,2"
@ -609,19 +631,54 @@
Foreground="{MainForegroundColor}" Background="{MainBackgroundColor}" Foreground="{MainForegroundColor}" Background="{MainBackgroundColor}"
ToolTip="Press Ctrl-F and type app name to filter application list below. Press Esc to reset the filter"> ToolTip="Press Ctrl-F and type app name to filter application list below. Press Esc to reset the filter">
</TextBox> </TextBox>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" FontFamily="Segoe MDL2 Assets" <TextBlock
Grid.Column="0"
VerticalAlignment="Center" HorizontalAlignment="Left"
FontFamily="Segoe MDL2 Assets"
FontSize="14" Margin="16,0,0,0">&#xE721;</TextBlock> FontSize="14" Margin="16,0,0,0">&#xE721;</TextBlock>
<Button Grid.Column="0"
<Button Name="CheckboxFilterClear" Style="{StaticResource ClearButtonStyle}" Margin="184,0,0,0" Visibility="Collapsed"/> VerticalAlignment="Center" HorizontalAlignment="Left"
</Grid> Name="CheckboxFilterClear"
<TextBlock Text="Version: CTTVersion" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10,0,0,0"/> Style="{StaticResource ClearButtonStyle}"
<Button Content="&#xD7;" BorderThickness="0" Margin="193,0,0,0" Visibility="Collapsed"/>
<Button Name="SettingsButton"
Style="{StaticResource HoverButtonStyle}"
Grid.Column="1" BorderBrush="Transparent"
Background="{MainBackgroundColor}"
Foreground="{MainForegroundColor}"
FontSize="18"
Width="35" Height="35"
HorizontalAlignment="Right" VerticalAlignment="Top"
Margin="0,5,5,0"
FontFamily="Segoe MDL2 Assets"
Content="&#xE713;"/>
<Popup Grid.Column="1" Name="SettingsPopup"
IsOpen="False"
PlacementTarget="{Binding ElementName=SettingsButton}" Placement="Bottom"
HorizontalAlignment="Right" VerticalAlignment="Top">
<Border Background="{MainBackgroundColor}" BorderBrush="{MainForegroundColor}" BorderThickness="1" CornerRadius="0" Margin="0">
<StackPanel Background="{MainBackgroundColor}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<MenuItem Header="Import" Name="ImportMenuItem" Foreground="{MainForegroundColor}"/>
<MenuItem Header="Export" Name="ExportMenuItem" Foreground="{MainForegroundColor}"/>
<Separator/>
<MenuItem Header="About" Name="AboutMenuItem" Foreground="{MainForegroundColor}"/>
</StackPanel>
</Border>
</Popup>
<Button
Grid.Column="2"
Content="&#xD7;" BorderThickness="0"
BorderBrush="Transparent" BorderBrush="Transparent"
Background="{MainBackgroundColor}" Background="{MainBackgroundColor}"
HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,5,5,0" Width="35" Height="35"
HorizontalAlignment="Right" VerticalAlignment="Top"
Margin="0,5,5,0"
FontFamily="Arial" FontFamily="Arial"
Foreground="{MainForegroundColor}" FontSize="18" Name="WPFCloseButton" /> Foreground="{MainForegroundColor}" FontSize="18" Name="WPFCloseButton" />
</Grid>
</DockPanel> </DockPanel>
<TabControl Name="WPFTabNav" Background="Transparent" Width="Auto" Height="Auto" BorderBrush="Transparent" BorderThickness="0" Grid.Row="1" Grid.Column="0" Padding="-1"> <TabControl Name="WPFTabNav" Background="Transparent" Width="Auto" Height="Auto" BorderBrush="Transparent" BorderThickness="0" Grid.Row="1" Grid.Column="0" Padding="-1">
@ -638,10 +695,6 @@
<Button Name="WPFuninstall" Content=" Uninstall Selection" Margin="2"/> <Button Name="WPFuninstall" Content=" Uninstall Selection" Margin="2"/>
<Button Name="WPFGetInstalled" Content=" Get Installed" Margin="2"/> <Button Name="WPFGetInstalled" Content=" Get Installed" Margin="2"/>
<Button Name="WPFclearWinget" Content=" Clear Selection" Margin="2"/> <Button Name="WPFclearWinget" Content=" Clear Selection" Margin="2"/>
<Label Content="Configuration:" FontSize="15" VerticalAlignment="Center"/>
<Button Name="WPFimportWinget" Content=" Import " Margin="1"/>
<Button Name="WPFexportWinget" Content=" Export " Margin="1"/>
</StackPanel> </StackPanel>
<ScrollViewer Grid.Row="1" Grid.Column="0" Padding="-1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" <ScrollViewer Grid.Row="1" Grid.Column="0" Padding="-1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
@ -704,11 +757,6 @@
<Button Name="WPFclear" Content=" Clear " Margin="1"/> <Button Name="WPFclear" Content=" Clear " Margin="1"/>
<Button Name="WPFGetInstalledTweaks" Content=" Get Installed " Margin="1"/> <Button Name="WPFGetInstalledTweaks" Content=" Get Installed " Margin="1"/>
</StackPanel> </StackPanel>
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" HorizontalAlignment="Left" Grid.Row="0" Grid.Column="1" Margin="10">
<Label Content="Configuration File:" FontSize="14" VerticalAlignment="Center"/>
<Button Name="WPFimport" Content=" Import " Margin="1"/>
<Button Name="WPFexport" Content=" Export " Margin="1"/>
</StackPanel>
<Border Grid.ColumnSpan="2" Grid.Row="2" Grid.Column="0"> <Border Grid.ColumnSpan="2" Grid.Row="2" Grid.Column="0">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" HorizontalAlignment="Left"> <StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Padding="10"> <TextBlock Padding="10">
@ -721,51 +769,51 @@
<Border Grid.Row="1" Grid.Column="0"> <Border Grid.Row="1" Grid.Column="0">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True"> <StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label FontSize="16" Content="Essential Tweaks"/> <Label FontSize="16" Content="Essential Tweaks"/>
<CheckBox Name="WPFEssTweaksRestorePoint" Content="Create Restore Point" Margin="5,0" ToolTip="Creates a restore point at runtime in case a revert is needed from WinUtil modifications" IsChecked="True"/> <CheckBox Name="WPFTweaksRestorePoint" Content="Create Restore Point" Margin="5,0" ToolTip="Creates a restore point at runtime in case a revert is needed from WinUtil modifications" IsChecked="True"/>
<CheckBox Name="WPFEssTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/> <CheckBox Name="WPFTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
<CheckBox Name="WPFEssTweaksTele" Content="Disable Telemetry" Margin="5,0" ToolTip="Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser."/> <CheckBox Name="WPFTweaksTele" Content="Disable Telemetry" Margin="5,0" ToolTip="Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser."/>
<CheckBox Name="WPFEssTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location."/> <CheckBox Name="WPFTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location."/>
<CheckBox Name="WPFEssTweaksAH" Content="Disable Activity History" Margin="5,0" ToolTip="This erases recent docs, clipboard, and run history."/> <CheckBox Name="WPFTweaksAH" Content="Disable Activity History" Margin="5,0" ToolTip="This erases recent docs, clipboard, and run history."/>
<CheckBox Name="WPFEssTweaksDeleteTempFiles" Content="Delete Temporary Files" Margin="5,0" ToolTip="Erases TEMP Folders"/> <CheckBox Name="WPFTweaksDeleteTempFiles" Content="Delete Temporary Files" Margin="5,0" ToolTip="Erases TEMP Folders"/>
<CheckBox Name="WPFEssTweaksDiskCleanup" Content="Run Disk Cleanup" Margin="5,0" ToolTip="Runs Disk Cleanup on Drive C: and removes old Windows Updates."/> <CheckBox Name="WPFTweaksDiskCleanup" Content="Run Disk Cleanup" Margin="5,0" ToolTip="Runs Disk Cleanup on Drive C: and removes old Windows Updates."/>
<CheckBox Name="WPFEssTweaksLoc" Content="Disable Location Tracking" Margin="5,0" ToolTip="Disables Location Tracking...DUH!"/> <CheckBox Name="WPFTweaksLoc" Content="Disable Location Tracking" Margin="5,0" ToolTip="Disables Location Tracking...DUH!"/>
<CheckBox Name="WPFEssTweaksHome" Content="Disable Homegroup" Margin="5,0" ToolTip="Disables HomeGroup - Windows 11 doesn't have this, it was awful."/> <CheckBox Name="WPFTweaksHome" Content="Disable Homegroup" Margin="5,0" ToolTip="Disables HomeGroup - Windows 11 doesn't have this, it was awful."/>
<CheckBox Name="WPFEssTweaksStorage" Content="Disable Storage Sense" Margin="5,0" ToolTip="Storage Sense deletes temp files automatically."/> <CheckBox Name="WPFTweaksStorage" Content="Disable Storage Sense" Margin="5,0" ToolTip="Storage Sense deletes temp files automatically."/>
<CheckBox Name="WPFEssTweaksHiber" Content="Disable Hibernation" Margin="5,0" ToolTip="Hibernation is really meant for laptops as it saves what's in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don't be like Bob. Bob likes hibernation."/> <CheckBox Name="WPFTweaksHiber" Content="Disable Hibernation" Margin="5,0" ToolTip="Hibernation is really meant for laptops as it saves what's in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don't be like Bob. Bob likes hibernation."/>
<CheckBox Name="WPFEssTweaksDVR" Content="Disable GameDVR" Margin="5,0" ToolTip="GameDVR is a Windows App that is a dependency for some Store Games. I've never met someone that likes it, but it's there for the XBOX crowd."/> <CheckBox Name="WPFTweaksDVR" Content="Disable GameDVR" Margin="5,0" ToolTip="GameDVR is a Windows App that is a dependency for some Store Games. I've never met someone that likes it, but it's there for the XBOX crowd."/>
<CheckBox Name="WPFEssTweaksTeredo" Content="Disable Teredo" Margin="5,0" ToolTip="Teredo network tunneling is a ipv6 feature that can cause additional latancy."/> <CheckBox Name="WPFTweaksTeredo" Content="Disable Teredo" Margin="5,0" ToolTip="Teredo network tunneling is a ipv6 feature that can cause additional latancy."/>
<CheckBox Name="WPFEssTweaksServices" Content="Set Services to Manual" Margin="5,0" ToolTip="Turns a bunch of system services to manual that don't need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand."/> <CheckBox Name="WPFTweaksServices" Content="Set Services to Manual" Margin="5,0" ToolTip="Turns a bunch of system services to manual that don't need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand."/>
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True"> <StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label FontSize="16" Content="Advanced Tweaks - CAUTION"/> <Label FontSize="16" Content="Advanced Tweaks - CAUTION"/>
<CheckBox Name="WPFMiscTweaksDisplay" Content="Set Display for Performance" Margin="5,0" ToolTip="Sets the system preferences to performance. You can do this manually with sysdm.cpl as well."/> <CheckBox Name="WPFTweaksDisplay" Content="Set Display for Performance" Margin="5,0" ToolTip="Sets the system preferences to performance. You can do this manually with sysdm.cpl as well."/>
<CheckBox Name="WPFMiscTweaksUTC" Content="Set Time to UTC (Dual Boot)" Margin="5,0" ToolTip="Essential for computers that are dual booting. Fixes the time sync with Linux Systems."/> <CheckBox Name="WPFTweaksUTC" Content="Set Time to UTC (Dual Boot)" Margin="5,0" ToolTip="Essential for computers that are dual booting. Fixes the time sync with Linux Systems."/>
<CheckBox Name="WPFMiscTweaksDisableUAC" Content="Disable UAC" Margin="5,0" ToolTip="Disables User Account Control. Only recommended for Expert Users."/> <CheckBox Name="WPFTweaksDisableUAC" Content="Disable UAC" Margin="5,0" ToolTip="Disables User Account Control. Only recommended for Expert Users."/>
<CheckBox Name="WPFMiscTweaksDisableNotifications" Content="Disable Notification Tray/Calendar" Margin="5,0" ToolTip="Disables all Notifications INCLUDING Calendar"/> <CheckBox Name="WPFTweaksDisableNotifications" Content="Disable Notification Tray/Calendar" Margin="5,0" ToolTip="Disables all Notifications INCLUDING Calendar"/>
<CheckBox Name="WPFEssTweaksDeBloat" Content="Remove ALL MS Store Apps - NOT RECOMMENDED" Margin="5,0" ToolTip="USE WITH CAUTION!!!!! This will remove ALL Microsoft store apps other than the essentials to make winget work. Games installed by MS Store ARE INCLUDED!"/> <CheckBox Name="WPFTweaksDeBloat" Content="Remove ALL MS Store Apps - NOT RECOMMENDED" Margin="5,0" ToolTip="USE WITH CAUTION!!!!! This will remove ALL Microsoft store apps other than the essentials to make winget work. Games installed by MS Store ARE INCLUDED!"/>
<CheckBox Name="WPFEssTweaksRemoveEdge" Content="Remove Microsoft Edge - NOT RECOMMENDED" Margin="5,0" ToolTip="Removes MS Edge when it gets reinstalled by updates."/> <CheckBox Name="WPFTweaksRemoveEdge" Content="Remove Microsoft Edge - NOT RECOMMENDED" Margin="5,0" ToolTip="Removes MS Edge when it gets reinstalled by updates."/>
<CheckBox Name="WPFEssTweaksRemoveOnedrive" Content="Remove OneDrive" Margin="5,0" ToolTip="Copies OneDrive files to Default Home Folders and Uninstalls it."/> <CheckBox Name="WPFTweaksRemoveOnedrive" Content="Remove OneDrive" Margin="5,0" ToolTip="Copies OneDrive files to Default Home Folders and Uninstalls it."/>
<CheckBox Name="WPFMiscTweaksRightClickMenu" Content="Set Classic Right-Click Menu " Margin="5,0" ToolTip="Great Windows 11 tweak to bring back good context menus when right clicking things in explorer."/> <CheckBox Name="WPFTweaksRightClickMenu" Content="Set Classic Right-Click Menu " Margin="5,0" ToolTip="Great Windows 11 tweak to bring back good context menus when right clicking things in explorer."/>
<CheckBox Name="WPFMiscTweaksDisableipsix" Content="Disable IPv6" Margin="5,0" ToolTip="Disables IPv6."/> <CheckBox Name="WPFTweaksDisableipsix" Content="Disable IPv6" Margin="5,0" ToolTip="Disables IPv6."/>
<CheckBox Name="WPFMiscTweaksEnableipsix" Content="Enable IPv6" Margin="5,0" ToolTip="Enables IPv6."/> <CheckBox Name="WPFTweaksEnableipsix" Content="Enable IPv6" Margin="5,0" ToolTip="Enables IPv6."/>
<StackPanel Orientation="Horizontal" Margin="0,5,0,0"> <StackPanel Orientation="Horizontal" Margin="0,5,0,0">
<Label Content="DNS" HorizontalAlignment="Left" VerticalAlignment="Center"/> <Label Content="DNS" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<ComboBox Name="WPFchangedns" Height="32" Width="186" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5,5"> <ComboBox Name="WPFchangedns" Height="32" Width="186" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5,5">
<ComboBoxItem IsSelected="True" Content = "Default"/> <ComboBoxItem IsSelected="True" Content = "Default"/>
<ComboBoxItem Content = "DHCP"/> <ComboBoxItem Content="DHCP"/>
<ComboBoxItem Content = "Google"/> <ComboBoxItem Content="Google"/>
<ComboBoxItem Content = "Cloudflare"/> <ComboBoxItem Content="Cloudflare"/>
<ComboBoxItem Content = "Cloudflare_Malware"/> <ComboBoxItem Content="Cloudflare_Malware"/>
<ComboBoxItem Content = "Cloudflare_Malware_Adult"/> <ComboBoxItem Content="Cloudflare_Malware_Adult"/>
<ComboBoxItem Content = "Level3"/> <ComboBoxItem Content="Level3"/>
<ComboBoxItem Content = "Open_DNS"/> <ComboBoxItem Content="Open_DNS"/>
<ComboBoxItem Content = "Quad9"/> <ComboBoxItem Content="Quad9"/>
</ComboBox> </ComboBox>
</StackPanel> </StackPanel>
<Button Name="WPFtweaksbutton" Content="Run Tweaks" HorizontalAlignment = "Left" Width="160" Margin="0,15,0,0"/> <Button Name="WPFTweaksbutton" Content="Run Tweaks" HorizontalAlignment = "Left" Width="160" Margin="0,15,0,0"/>
<Button Name="WPFundoall" Content="Undo Selected Tweaks" HorizontalAlignment = "Left" Width="160" Margin="0,10,0,0"/> <Button Name="WPFUndoall" Content="Undo Selected Tweaks" HorizontalAlignment = "Left" Width="160" Margin="0,10,0,0"/>
</StackPanel> </StackPanel>
@ -774,43 +822,42 @@
<Border Grid.Row="1" Grid.Column="1"> <Border Grid.Row="1" Grid.Column="1">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True"> <StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
<Label FontSize="16" Content="Customize Preferences"/> <Label FontSize="16" Content="Customize Preferences"/>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0"> <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="Dark Theme" Style="{StaticResource labelfortweaks}" ToolTip="Enable/Disable Dark Mode." /> <Label Content="Dark Theme" Style="{StaticResource labelfortweaks}" ToolTip="Enable/Disable Dark Mode." />
<CheckBox Name="WPFToggleDarkMode" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/> <CheckBox Name="WPFToggleDarkMode" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0"> <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="Bing Search in Start Menu" Style="{StaticResource labelfortweaks}" ToolTip= "If enable then includes web search results from Bing in your Start Menu search." /> <Label Content="Bing Search in Start Menu" Style="{StaticResource labelfortweaks}" ToolTip= "If enable then includes web search results from Bing in your Start Menu search." />
<CheckBox Name="WPFToggleBingSearch" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/> <CheckBox Name="WPFToggleBingSearch" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0"> <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="NumLock on Startup" Style="{StaticResource labelfortweaks}" ToolTip= "Toggle the Num Lock key state when your computer starts."/> <Label Content="NumLock on Startup" Style="{StaticResource labelfortweaks}" ToolTip= "Toggle the Num Lock key state when your computer starts."/>
<CheckBox Name="WPFToggleNumLock" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/> <CheckBox Name="WPFToggleNumLock" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0"> <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="Verbose Logon Messages" Style="{StaticResource labelfortweaks}" ToolTip="Show detailed messages during the login process for troubleshooting and diagnostics."/> <Label Content="Verbose Logon Messages" Style="{StaticResource labelfortweaks}" ToolTip="Show detailed messages during the login process for troubleshooting and diagnostics."/>
<CheckBox Name="WPFToggleVerboseLogon" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/> <CheckBox Name="WPFToggleVerboseLogon" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0"> <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="Show File Extensions" Style="{StaticResource labelfortweaks}" ToolTip="If enabled then File extensions (e.g., .txt, .jpg) are visible." /> <Label Content="Show File Extensions" Style="{StaticResource labelfortweaks}" ToolTip="If enabled then File extensions (e.g., .txt, .jpg) are visible." />
<CheckBox Name="WPFToggleShowExt" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/> <CheckBox Name="WPFToggleShowExt" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0"> <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="Mouse Acceleration" Style="{StaticResource labelfortweaks}" ToolTip="If Enabled then Cursor movement is affected by the speed of your physical mouse movements."/> <Label Content="Mouse Acceleration" Style="{StaticResource labelfortweaks}" ToolTip="If Enabled then Cursor movement is affected by the speed of your physical mouse movements."/>
<CheckBox Name="WPFToggleMouseAcceleration" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/> <CheckBox Name="WPFToggleMouseAcceleration" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
</StackPanel> </StackPanel>
<Label FontSize="16" Content="Performance Plans" />
<Button Name="WPFAddUltPerf" Content="Add and Activate Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,2" Width="300"/>
<Button Name="WPFRemoveUltPerf" Content="Remove Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,2" Width="300"/>
<Label FontSize="16" Content="Shortcuts" />
<Button Name="WPFWinUtilShortcut" Content="Create WinUtil Shortcut" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
<Label FontSize="16" Content="Performance Plans" />
<Button Name="WPFAddUltPerf" Content="Add and Activate Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,2" Width="300"/>
<Button Name="WPFRemoveUltPerf" Content="Remove Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,2" Width="300"/>
<Label FontSize="16" Content="Shortcuts" />
<Button Name="WPFWinUtilShortcut" Content="Create WinUtil Shortcut" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
</StackPanel> <!-- End of Customize Preferences Section --> </StackPanel> <!-- End of Customize Preferences Section -->
</Border> </Border>
@ -831,6 +878,11 @@
<CheckBox Name="WPFFeatureshyperv" Content="HyperV Virtualization" Margin="5,0"/> <CheckBox Name="WPFFeatureshyperv" Content="HyperV Virtualization" Margin="5,0"/>
<CheckBox Name="WPFFeatureslegacymedia" Content="Legacy Media (WMP, DirectPlay)" Margin="5,0"/> <CheckBox Name="WPFFeatureslegacymedia" Content="Legacy Media (WMP, DirectPlay)" Margin="5,0"/>
<CheckBox Name="WPFFeaturenfs" Content="NFS - Network File System" Margin="5,0"/> <CheckBox Name="WPFFeaturenfs" Content="NFS - Network File System" Margin="5,0"/>
<CheckBox Name="WPFFeatureEnableSearchSuggestions" Content="Enable Search Box Web Suggestions in Registry(explorer restart)" Margin="5,0"/>
<CheckBox Name="WPFFeatureDisableSearchSuggestions" Content="Disable Search Box Web Suggestions in Registry(explorer restart)" Margin="5,0"/>
<CheckBox Name="WPFFeatureRegBackup" Content="Enable Daily Registry Backup Task 12.30am" Margin="5,0"/>
<CheckBox Name="WPFFeatureEnableLegacyRecovery" Content="Enable Legacy F8 Boot Recovery" Margin="5,0"/>
<CheckBox Name="WPFFeatureDisableLegacyRecovery" Content="Disable Legacy F8 Boot Recovery" Margin="5,0"/>
<CheckBox Name="WPFFeaturewsl" Content="Windows Subsystem for Linux" Margin="5,0"/> <CheckBox Name="WPFFeaturewsl" Content="Windows Subsystem for Linux" Margin="5,0"/>
<CheckBox Name="WPFFeaturesandbox" Content="Windows Sandbox" Margin="5,0"/> <CheckBox Name="WPFFeaturesandbox" Content="Windows Sandbox" Margin="5,0"/>
<Button Name="WPFFeatureInstall" FontSize="14" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/> <Button Name="WPFFeatureInstall" FontSize="14" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/>