winfetch: improve GPU detection and add logo variants

- Prioritize discrete GPU (NVIDIA/AMD) over integrated graphics
- Add classic Windows 7/Vista logo
- Add Windows 8/10 logo
- Add Windows 95 retro logo
- Add Windows 2025 logo with rounded corners
- Fix classic logo alignment with padding
This commit is contained in:
2026-02-04 00:03:20 +01:00
parent 0307f2b4eb
commit 687ac88c85

View File

@@ -2,7 +2,7 @@
# Windows system information display with ASCII art (inspired by fastfetch/neofetch) # Windows system information display with ASCII art (inspired by fastfetch/neofetch)
param( param(
[ValidateSet("11", "small", "classic")] [ValidateSet("11", "small", "classic", "8", "95", "2025")]
[string]$Logo = "11" [string]$Logo = "11"
) )
@@ -55,9 +55,99 @@ $logoSmall = @(
" " # Empty line with proper width (16 chars) " " # Empty line with proper width (16 chars)
) )
# Classic Windows logo (Windows 7/Vista style)
$logoClassic = @(
"$($colors.Red) ,.=:!!t3Z3z., ",
"$($colors.Red) :tt:::tt333EE3 ",
"$($colors.Red) Et:::ztt33EEEL$($colors.Green) @Ee., ..,",
"$($colors.Red) ;tt:::tt333EE7$($colors.Green) ;EEEEEEttttt33#",
"$($colors.Red) :Et:::zt333EEQ.$($colors.Green) `$EEEEEttttt33QL",
"$($colors.Red) it::::tt333EEF$($colors.Green) @EEEEEEttttt33F ",
"$($colors.Red) ;3=*^``````""*4EEV$($colors.Green) :EEEEEEttttt33@.",
"$($colors.Blue) ,.=::::!t=., $($colors.Red)``$($colors.Green) @EEEEEEtttz33QF ",
"$($colors.Blue) ;::::::::zt33)$($colors.Green) ""4EEEtttji3P* ",
"$($colors.Blue) :t::::::::tt33.$($colors.Yellow):Z3z..$($colors.Green) ````$($colors.Yellow) ,..g. ",
"$($colors.Blue) i::::::::zt33F$($colors.Yellow) AEEEtttt::::ztF ",
"$($colors.Blue) ;:::::::::t33V$($colors.Yellow) ;EEEttttt::::t3 ",
"$($colors.Blue) E::::::::zt33L$($colors.Yellow) @EEEtttt::::z3F ",
"$($colors.Blue){3=*^``````""*4E3)$($colors.Yellow) ;EEEtttt:::::tZ`` ",
"$($colors.Blue) ``$($colors.Yellow) :EEEEtttt::::z7 ",
"$($colors.Yellow) ""VEzjt:;;z>*`` "
)
# Windows 8/10 logo
$logo8 = @(
"$($colors.Cyan) ..,",
"$($colors.Cyan) ....,,:;+ccllll",
"$($colors.Blue) ...,,+:; $($colors.Cyan)cllllllllllllllllll",
"$($colors.Blue),cclllllllllll $($colors.Cyan)lllllllllllllllllll",
"$($colors.Blue)llllllllllllll $($colors.Cyan)lllllllllllllllllll",
"$($colors.Blue)llllllllllllll $($colors.Cyan)lllllllllllllllllll",
"$($colors.Blue)llllllllllllll $($colors.Cyan)lllllllllllllllllll",
"$($colors.Blue)llllllllllllll $($colors.Cyan)lllllllllllllllllll",
"$($colors.Blue)llllllllllllll $($colors.Cyan)lllllllllllllllllll",
"",
"$($colors.BrightGreen)llllllllllllll $($colors.BrightYellow)lllllllllllllllllll",
"$($colors.BrightGreen)llllllllllllll $($colors.BrightYellow)lllllllllllllllllll",
"$($colors.BrightGreen)llllllllllllll $($colors.BrightYellow)lllllllllllllllllll",
"$($colors.BrightGreen)llllllllllllll $($colors.BrightYellow)lllllllllllllllllll",
"$($colors.BrightGreen)llllllllllllll $($colors.BrightYellow)lllllllllllllllllll",
"$($colors.BrightGreen)``'ccllllllllll $($colors.BrightYellow)lllllllllllllllllll",
"$($colors.BrightGreen) ``' \*:: $($colors.BrightYellow):ccllllllllllllllll",
"$($colors.BrightYellow) ````''*::cll",
"$($colors.BrightYellow) ``"
)
# Windows 95 logo
$logo95 = @(
"$($colors.Gray) ___",
"$($colors.Gray) .--=+++++=-:.",
"$($colors.Gray). _ *%@@@@@@@@@@@@@@*",
"$($colors.Gray) *:+:.__ :+* @@@ @""$($colors.Cyan)_*&%$($colors.Gray)@@$($colors.Yellow)%&&&*$($colors.Gray)""@@@",
"$($colors.Gray) ""+.-#+ +%* "" _ $($colors.Cyan)++&&&%$($colors.Gray)@@$($colors.Yellow)%&&&&&#$($colors.Gray)@@",
"$($colors.Cyan)"" , $($colors.Gray)%@@ $($colors.Cyan)&&&&&%$($colors.Gray)@@$($colors.Yellow)%&&&&&#$($colors.Gray)@@",
"$($colors.Cyan) * oo *# $($colors.Gray)"" _ $($colors.Cyan)&&&&&%$($colors.Gray)@@$($colors.Yellow)%&&&&&#$($colors.Gray)@@",
"$($colors.Cyan)"" , $($colors.Gray)%@@ $($colors.Cyan)&&&&""$($colors.Gray)@@@@#*$($colors.Yellow)""&&&$($colors.Gray)@@",
"$($colors.Cyan). * oo *# $($colors.Gray)"" _ %@@@@@@@@@@@@@@@@",
"$($colors.Gray) *:+:.__ :=* %@@ @""$($colors.Red)**&%$($colors.Gray)@@$($colors.Green)%&&&*$($colors.Gray)""@@@",
"$($colors.Gray) ""+.-#+ +%* "" _ $($colors.Red)&&&&&%$($colors.Gray)@@$($colors.Green)%&&&&&#$($colors.Gray)@@",
"$($colors.Red)"" , $($colors.Gray)%@@ $($colors.Red)&&&&&%$($colors.Gray)@@$($colors.Green)%&&&&&#$($colors.Gray)@@",
"$($colors.Red) * oo *# $($colors.Gray)"" _ $($colors.Red)&&&&&%$($colors.Gray)@@$($colors.Green)%&&&&&#$($colors.Gray)@@",
"$($colors.Red)"" , $($colors.Gray)%@@ $($colors.Red)&&*""%$($colors.Gray)@@@@@@$($colors.Green)""*%&$($colors.Gray)@@",
"$($colors.Red). * oo *# $($colors.Gray)"" _ @@@@@@@@@@@@@@@@@",
"$($colors.Gray) *:+:.__ :+# @@@ @%#=+""""""""""+==%#@",
"$($colors.Gray) ""+.-#+ +%* %+"" "" "":@",
"$($colors.Gray) "" """
)
# Windows 2025 logo (rounded corners)
$logo2025 = @(
"$($colors.Blue) ##%%%%%%%%% $($colors.BrightCyan)%%%%%%%%%##",
"$($colors.Blue) ###%%%%%%%%%% $($colors.BrightCyan)%%%%%%%%%%###",
"$($colors.Blue) ####%%%%%%%%%%% $($colors.BrightCyan)%%%%%%%%%%%####",
"$($colors.Blue) ##%%%%%%%%%%%%%% $($colors.BrightCyan)%%%%%%%%%%%%%%##",
"$($colors.Blue)#%%%%%%%%%%%%%%%% $($colors.BrightCyan)%%%%%%%%%%%%%%%%#",
"$($colors.Blue)%%%%%%%%%%%%%%%%% $($colors.BrightCyan)%%%%%%%%%%%%%%%%%",
"$($colors.Blue)%%%%%%%%%%%%%%%%% $($colors.BrightCyan)%%%%%%%%%%%%%%%%%",
"$($colors.Blue)%%%%%%%%%%%%%%%%% $($colors.BrightCyan)#%%%%%%%%%%%%%%%%",
"",
"$($colors.BrightGreen)%%%%%%%%%%%%%%%%% $($colors.BrightYellow)#%%%%%%%%%%%%%%%%",
"$($colors.BrightGreen)%%%%%%%%%%%%%%%%% $($colors.BrightYellow)%%%%%%%%%%%%%%%%%",
"$($colors.BrightGreen)%%%%%%%%%%%%%%%%% $($colors.BrightYellow)%%%%%%%%%%%%%%%%%",
"$($colors.BrightGreen)%%%%%%%%%%%%%%%%% $($colors.BrightYellow)%%%%%%%%%%%%%%%%#",
"$($colors.BrightGreen) ###%%%%%%%%%%%%% $($colors.BrightYellow)%%%%%%%%%%%%%%%##",
"$($colors.BrightGreen) ####%%%%%%%%%%% $($colors.BrightYellow)%%%%%%%%%%%#%####",
"$($colors.BrightGreen) ##%#%%%%%%%%% $($colors.BrightYellow)%%%%%%%%%%%######",
"$($colors.BrightGreen) ##%%%%%%%%% $($colors.BrightYellow)%%%%%%%%%########"
)
# Select logo # Select logo
$asciiLogo = switch ($Logo) { $asciiLogo = switch ($Logo) {
"small" { $logoSmall } "small" { $logoSmall }
"classic" { $logoClassic }
"8" { $logo8 }
"95" { $logo95 }
"2025" { $logo2025 }
default { $logo11 } default { $logo11 }
} }
@@ -140,7 +230,14 @@ if ($Logo -eq "small") {
$maxLines = [Math]::Max($asciiLogo.Count, $info.Count) $maxLines = [Math]::Max($asciiLogo.Count, $info.Count)
# Calculate logo width dynamically # Calculate logo width dynamically
$logoWidth = if ($Logo -eq "small") { 16 } else { 38 } $logoWidth = switch ($Logo) {
"small" { 16 }
"classic" { 40 }
"8" { 36 }
"95" { 40 }
"2025" { 38 }
default { 38 }
}
for ($i = 0; $i -lt $maxLines; $i++) { for ($i = 0; $i -lt $maxLines; $i++) {
$logoLine = if ($i -lt $asciiLogo.Count) { $asciiLogo[$i] } else { "" } $logoLine = if ($i -lt $asciiLogo.Count) { $asciiLogo[$i] } else { "" }