Stuff
Invoke-XApp (untested) Find-MTU (grabbed from web) Get-FreeDiskSpace (Wmi based) WinCreds package Generate-FancyZones for FancyZones PowerToy
This commit is contained in:
parent
c2675e2346
commit
1c4e9feb1f
8 changed files with 371 additions and 0 deletions
155
base.win/Generate-FancyZones.ps1
Normal file
155
base.win/Generate-FancyZones.ps1
Normal file
|
@ -0,0 +1,155 @@
|
|||
<#
|
||||
Generate-FancyZones 'Sz 4K' $(
|
||||
# Generate-FancyZones 'Playground' $(
|
||||
[ordered]@{
|
||||
Q =@(01,01),@(01,13),@(13,01),@(13,13);
|
||||
NT=@(01,01),@(10,01),@(13,01),@(16,01);
|
||||
X1=@(10,01);
|
||||
N1=@(16,01),@(10,01),@(01,01);
|
||||
W1=@(10,01),@(13,01);
|
||||
S1=@(10,01),@(22,01);
|
||||
N3=@(01,11),@(16,01);
|
||||
X3=@(01,11),(10,11);
|
||||
XL=@(01,14),(7,14);
|
||||
XX=@(01,11),(7,11);
|
||||
F3=@(01,11);
|
||||
}) -Verbose -WhatIf
|
||||
|
||||
Generate-FancyZones 'Sz 1920x1080' $(
|
||||
# Generate-FancyZones 'Playground' $(
|
||||
[ordered]@{
|
||||
BNT=@(01,01);
|
||||
BW1=@(11,01);
|
||||
BW2=@(11,12);
|
||||
BSQ=@(11,01),@(11,12),@(15,01),@(15,12)
|
||||
}) -Verbose -WhatIf
|
||||
|
||||
#>
|
||||
|
||||
<#
|
||||
#>
|
||||
[CmdletBinding()]param(
|
||||
|
||||
[ArgumentCompleter({ param (
|
||||
$commandName,
|
||||
$parameterName,
|
||||
$wordToComplete,
|
||||
$commandAst,
|
||||
$fakeBoundParameters
|
||||
)
|
||||
$local:ptDataPath = Join-Path $env:LOCALAPPDATA "Microsoft\PowerToys"
|
||||
$local:fzJsonPath = Join-Path $ptDataPath "FancyZones\zones-settings.json"
|
||||
Get-Content $fzJsonPath | ConvertFrom-Json |
|
||||
Select-Object -ExpandProperty 'custom-zone-sets' |
|
||||
Where-Object 'type' -eq 'canvas' |
|
||||
Select-Object -ExpandProperty name |
|
||||
ForEach-Object {
|
||||
"'$_'"
|
||||
}
|
||||
})]
|
||||
[Parameter(Mandatory,Position=0)]
|
||||
[string]$FancyZoneName,
|
||||
[int]$RatioW=24,[int]$RatioH=24,
|
||||
[ValidateNotNullOrEmpty()]
|
||||
$presetSizes=[ordered]@{
|
||||
N1 = @(9,10)
|
||||
W1 = @(12,10)
|
||||
X1 = @(15,10)
|
||||
F1 = @(24,10)
|
||||
N2 = @(9,12)
|
||||
X2 = @(15,12)
|
||||
F2 = @(24,12)
|
||||
N3 = @(9,14)
|
||||
W3 = @(12,14)
|
||||
X3 = @(15,14)
|
||||
XL = @(18,11)
|
||||
XX = @(18,14)
|
||||
F3 = @(24,14)
|
||||
NT = @(9,24)
|
||||
WT = @(12,24)
|
||||
XT = @(15,24)
|
||||
S1 = @(3,10)
|
||||
Q = @(12,12)
|
||||
|
||||
BNT = @(10,24)
|
||||
BW1 = @(14,11)
|
||||
BW2 = @(14,13)
|
||||
BSQ = @(10,13)
|
||||
},
|
||||
[Parameter(ParameterSetName="AutoSections",
|
||||
Mandatory,Position=1)]
|
||||
$AutoSections,
|
||||
[Parameter(ParameterSetName="Sections",
|
||||
Mandatory,ValueFromRemainingArguments)]
|
||||
[int[][]]$Sections,
|
||||
[switch]$WhatIf
|
||||
)
|
||||
|
||||
$local:ptDataPath = Join-Path $env:LOCALAPPDATA "Microsoft\PowerToys"
|
||||
$local:fzJsonPath = Join-Path $ptDataPath "FancyZones\zones-settings.json"
|
||||
$fzJson = Get-Content $fzJsonPath | ConvertFrom-Json
|
||||
|
||||
$local:fancyZone = $fzJson.'custom-zone-sets' |
|
||||
Where-Object 'type' -eq 'canvas' |
|
||||
Where-Object 'name' -eq $FancyZoneName
|
||||
|
||||
if( -not $fancyZone ) {
|
||||
Write-Error "`nFancy Zone $FancyZoneName not matched to a valid zone`n`n"
|
||||
return
|
||||
}
|
||||
|
||||
$local:TotalWidth = $fancyZone.info.'ref-width'
|
||||
$local:TotalHeight = $fancyZone.info.'ref-height'
|
||||
|
||||
$local:wFactor = $TotalWidth / $RatioW
|
||||
$local:hFactor = $TotalHeight / $RatioH
|
||||
|
||||
Write-Verbose "$(
|
||||
)$($fancyZone.uuid) - $($fancyZone.name)`n$(" "*10
|
||||
)W = $TotalWidth / $RatioW = $([Math]::Round($wFactor,3)); $(
|
||||
)H = $TotalHeight / $RatioH = $([Math]::Round($hFactor,3));"
|
||||
|
||||
$fancyZone.info.zones = @()
|
||||
if( $AutoSections ) {
|
||||
foreach( $local:p in $AutoSections.Keys ) {
|
||||
$local:psW = [Math]::Round(($presetSizes."$p")[0] * $wFactor,0)
|
||||
$local:psH = [Math]::Round(($presetSizes."$p")[1] * $hFactor,0)
|
||||
$local:pairs = $AutoSections[$p]
|
||||
if( $pairs[0] -is [int] ) {
|
||||
$pairs = , $pairs
|
||||
}
|
||||
foreach( $local:s in $pairs ) {
|
||||
Write-Verbose "$p : $($s | Join-String ", ")"
|
||||
$fancyZone.info.zones += [ordered]@{
|
||||
X = [Math]::Round(($s[0] - 1) * $wFactor,0)
|
||||
Y = [Math]::Round(($s[1] - 1) * $hFactor,0)
|
||||
width = $psW
|
||||
height = $psH
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ( $local:s in $Sections ) {
|
||||
$fancyZone.info.zones += [ordered]@{
|
||||
X = [Math]::Round($s[0] * $wFactor,0)
|
||||
Y = [Math]::Round($s[1] * $hFactor,0)
|
||||
width = [Math]::Round($s[2] * $wFactor,0)
|
||||
height = [Math]::Round($s[3] * $hFactor,0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$fzJson.'custom-zone-sets' |
|
||||
Where-Object name -eq $FancyZoneName |
|
||||
ForEach-Object {
|
||||
$_.info.zones = $fancyZone.info.zones
|
||||
}
|
||||
|
||||
if( -not $WhatIf -and -not $WhatIfPreference ) {
|
||||
if( -not (Test-Path "$fzJsonPath.bak") ) {
|
||||
Copy-Item $fzJsonPath "$fzJsonPath.bak"
|
||||
}
|
||||
$fzJson | ConvertTo-Json -Depth 5 | Out-File $fzJsonPath
|
||||
} else {
|
||||
$fancyZone | ConvertTo-Json -Depth 5
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue