<# LXS - Apps index (Windows) Description: Interactive menu listing the installers in windows\apps Repo: https://git.hyko.cx/hykocx/lxs #> # Load LXS common library (colors, UI helpers, spinner, loggers, guards). # Prefers the sibling ..\lib\common.ps1 (repo checkout or installed layout) and # only hits the network when this script is run standalone. $LxsRawBase = if ($env:LXS_RAW_BASE) { $env:LXS_RAW_BASE } else { 'https://git.hyko.cx/hykocx/lxs/raw/branch/main' } if (-not $env:LXS_RAW_PLATFORM_BASE) { $env:LXS_RAW_PLATFORM_BASE = "$LxsRawBase/windows" } $LxsLibPath = if ($PSScriptRoot) { Join-Path $PSScriptRoot '..\lib\common.ps1' } else { $null } if ($LxsLibPath -and (Test-Path $LxsLibPath)) { . $LxsLibPath } else { try { $LxsLibSource = Invoke-RestMethod -Uri "$env:LXS_RAW_PLATFORM_BASE/lib/common.ps1" -UseBasicParsing -ErrorAction Stop } catch { Write-Error 'Failed to fetch lib/common.ps1' exit 1 } . ([scriptblock]::Create($LxsLibSource)) } function Show-LxsAppsMenu { while ($true) { Clear-Host Show-LxsBoxTop -Title 'APPLICATIONS' -Right 'APP_REPOSITORY' Write-Host '' Show-LxsMenuItem '01' 'Dev Pack' 'git, vscode, node, python' Show-LxsMenuItem '02' 'Utilities' '7zip, powertoys, sysinternals' Show-LxsMenuItem '03' 'Browsers & Media' 'librewolf, firefox, vlc, obs' Show-LxsMenuItem '04' 'Containers & VM' 'wsl2, docker, hyper-v' Show-LxsMenuItem '05' 'Claude Code' 'anthropic cli' Show-LxsMenuItem '00' 'BACK' '' -Exit Write-Host '' Show-LxsBoxBottom Write-Host '' $choice = Read-LxsChoice $script = switch -Regex ($choice) { '^0?1$' { 'apps\dev-pack.ps1' } '^0?2$' { 'apps\utilities.ps1' } '^0?3$' { 'apps\browsers-media.ps1' } '^0?4$' { 'apps\containers.ps1' } '^0?5$' { 'apps\claude-code.ps1' } '^0?0$' { 'BACK' } default { $null } } if ($script -eq 'BACK') { return } if (-not $script) { Write-LxsErr 'Invalid protocol. Select 0-5.' Start-Sleep -Seconds 1 continue } $code = Invoke-LxsSibling -RelativePath $script -SelfDirectory $PSScriptRoot if ($code -ne 75) { Read-LxsEnter } } } Show-LxsAppsMenu exit 75