From db1a0b86146461c79b8707ef614b8a7cf516bcfc Mon Sep 17 00:00:00 2001 From: Rui Lopes Date: Sat, 29 Jul 2023 12:04:08 +0100 Subject: [PATCH] set the desktop wallpaper --- provision/windows/provision-base.ps1 | 134 +++++++++++++ .../windows/sonatype-nexus-repository.png | Bin 0 -> 17955 bytes .../windows/sonatype-nexus-repository.svg | 187 ++++++++++++++++++ 3 files changed, 321 insertions(+) create mode 100644 provision/windows/sonatype-nexus-repository.png create mode 100644 provision/windows/sonatype-nexus-repository.svg diff --git a/provision/windows/provision-base.ps1 b/provision/windows/provision-base.ps1 index 2be5656..2e37739 100644 --- a/provision/windows/provision-base.ps1 +++ b/provision/windows/provision-base.ps1 @@ -17,6 +17,140 @@ Set-Culture pt-PT # show window content while dragging. Set-ItemProperty -Path 'HKCU:Control Panel\Desktop' -Name DragFullWindows -Value 1 +# set the desktop wallpaper. +Add-Type -AssemblyName System.Drawing +$backgroundColor = [System.Drawing.Color]::FromArgb(30, 30, 30) +$backgroundPath = 'C:\Windows\Web\Wallpaper\Windows\sonatype-nexus-repository.png' +$logo = [System.Drawing.Image]::FromFile((Resolve-Path 'sonatype-nexus-repository.png')) +$b = New-Object System.Drawing.Bitmap($logo.Width, $logo.Height) +$g = [System.Drawing.Graphics]::FromImage($b) +$g.Clear($backgroundColor) +$g.DrawImage($logo, 0, 0, $logo.Width, $logo.Height) +$b.Save($backgroundPath) +Set-ItemProperty -Path 'HKCU:Control Panel\Desktop' -Name Wallpaper -Value $backgroundPath +Set-ItemProperty -Path 'HKCU:Control Panel\Desktop' -Name WallpaperStyle -Value 0 +Set-ItemProperty -Path 'HKCU:Control Panel\Desktop' -Name TileWallpaper -Value 0 +Set-ItemProperty -Path 'HKCU:Control Panel\Colors' -Name Background -Value ($backgroundColor.R,$backgroundColor.G,$backgroundColor.B -join ' ') +Add-Type @' +using System; +using System.Drawing; +using System.Runtime.InteropServices; + +public static class WindowsWallpaper +{ + private const int COLOR_DESKTOP = 0x01; + + [DllImport("user32", SetLastError=true)] + private static extern bool SetSysColors(int cElements, int[] lpaElements, int[] lpaRgbValues); + + private const uint SPI_SETDESKWALLPAPER = 0x14; + private const uint SPIF_UPDATEINIFILE = 0x01; + private const uint SPIF_SENDWININICHANGE = 0x02; + + [DllImport("user32", SetLastError=true)] + private static extern bool SystemParametersInfo(uint uiAction, uint uiParam, string pvParam, uint fWinIni); + + public static void Set(Color color, string path) + { + var elements = new int[] { COLOR_DESKTOP }; + var colors = new int[] { ColorTranslator.ToWin32(color) }; + SetSysColors(elements.Length, elements, colors); + SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_SENDWININICHANGE); + } +} +'@ -ReferencedAssemblies System.Drawing +[WindowsWallpaper]::Set($backgroundColor, $backgroundPath) + +# cleanup the taskbar by removing the existing buttons and unpinning all applications; once the user logs on. +# NB the shell executes these RunOnce commands about ~10s after the user logs on. +$configureDesktopScript = @' +# unpin all applications from the taskbar. +# NB this can only be done in a logged on session. +$pinnedTaskbarPath = "$env:APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" +(New-Object -Com Shell.Application).NameSpace($pinnedTaskbarPath).Items() ` + | ForEach-Object { + $unpinVerb = $_.Verbs() | Where-Object { $_.Name -eq 'Unpin from tas&kbar' } + if ($unpinVerb) { + $unpinVerb.DoIt() + } else { + $shortcut = (New-Object -Com WScript.Shell).CreateShortcut($_.Path) + if (!$shortcut.TargetPath -and ($shortcut.IconLocation -eq '%windir%\explorer.exe,0')) { + Remove-Item -Force $_.Path + } + } + } +Get-Item HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband ` + | Set-ItemProperty -Name Favorites -Value 0xff ` + | Set-ItemProperty -Name FavoritesResolve -Value 0xff ` + | Set-ItemProperty -Name FavoritesVersion -Value 3 ` + | Set-ItemProperty -Name FavoritesChanges -Value 1 ` + | Set-ItemProperty -Name FavoritesRemovedChanges -Value 1 + +# hide the search button. +Set-ItemProperty -Path HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Search -Name SearchboxTaskbarMode -Value 0 + +# hide the task view button. +Set-ItemProperty -Path HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name ShowTaskViewButton -Value 0 + +# never combine the taskbar buttons. +# possibe values: +# 0: always combine and hide labels (default) +# 1: combine when taskbar is full +# 2: never combine +Set-ItemProperty -Path HKCU:Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name TaskbarGlomLevel -Value 2 + +# remove default or uneeded files. +@( + "$env:USERPROFILE\Desktop\desktop.ini" + "$env:USERPROFILE\Desktop\*.lnk" + "$env:USERPROFILE\Desktop\*.url" + "$env:PUBLIC\Desktop\desktop.ini" + "$env:PUBLIC\Desktop\*.lnk" + "$env:PUBLIC\Desktop\*.url" +) | Remove-Item -Force + +# add desktop shortcuts. +@( + ,('Nexus', 'https://@@NEXUS_DOMAIN@@') +) | ForEach-Object { + if ($_[1] -like 'http*') { + [IO.File]::WriteAllText("$env:USERPROFILE\Desktop\$($_[0]).url", @" +[InternetShortcut] +URL=$($_[1]) +"@) + } elseif (!(Test-Path $_[1])) { + return + } elseif ($_[1] -like '*.lnk') { + Copy-Item $_[1] "$env:USERPROFILE\Desktop\$($_[0]).lnk" + } else { + $extraArguments = @{ + IconLocation = $_[1] + } + if ($_.Length -gt 2) { + $extraArguments.Arguments = $_[2] + $extraArguments.IconLocation = $_[3] + $extraArguments.WorkingDirectory = $_[4] + } + # add into the Desktop. + Install-ChocolateyShortcut ` + -ShortcutFilePath "$env:USERPROFILE\Desktop\$($_[0]).lnk" ` + -TargetPath $_[1] ` + @extraArguments + # add into the Start Menu. + Copy-Item ` + "$env:USERPROFILE\Desktop\$($_[0]).lnk" ` + "C:\Users\All Users\Microsoft\Windows\Start Menu\Programs" + } +} + +# restart explorer to apply the changed settings. +(Get-Process explorer).Kill() +'@ -replace '@@NEXUS_DOMAIN@@',$nexusDomain +[IO.File]::WriteAllText("$env:USERPROFILE\ConfigureDesktop.ps1", $configureDesktopScript) +New-Item -Path HKCU:Software\Microsoft\Windows\CurrentVersion\RunOnce -Force ` + | New-ItemProperty -Name ConfigureDesktop -Value 'PowerShell -WindowStyle Hidden -File "%USERPROFILE%\ConfigureDesktop.ps1"' -PropertyType ExpandString ` + | Out-Null + # show hidden files. Set-ItemProperty -Path HKCU:Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced -Name Hidden -Value 1 diff --git a/provision/windows/sonatype-nexus-repository.png b/provision/windows/sonatype-nexus-repository.png new file mode 100644 index 0000000000000000000000000000000000000000..43c1239b07402eee923acc0f1017d8f9d1e7f89b GIT binary patch literal 17955 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +