├── .github ├── ISSUE_TEMPLATE │ ├── WSL_error.md │ ├── bug_report.md │ └── feature_request.md └── workflows │ └── manual.yml ├── .gitignore ├── .gitmodules ├── ARM64 ├── pengwin.json └── put install.tar.gz here ├── BUILDING.md ├── CHANGELOG.md ├── CODEOFCONDUCT.md ├── CONTRIBUTING.md ├── DistroLauncher.sln ├── DistroLauncher ├── DistributionInfo.cpp ├── DistributionInfo.h ├── DistroLauncher.cpp ├── DistroLauncher.rc ├── DistroLauncher.vcxproj ├── DistroLauncher.vcxproj.filters ├── Helpers.cpp ├── Helpers.h ├── RCa09240 ├── WslApiLoader.cpp ├── WslApiLoader.h ├── images │ ├── icon.ico │ ├── icon.png │ └── logo.png ├── messages.mc ├── packages.config ├── resource.h ├── stdafx.cpp ├── stdafx.h └── targetver.h ├── LICENSE.md ├── LauncherTests ├── LauncherTests.vcxproj ├── packages.config ├── pch.cpp ├── pch.h └── test.cpp ├── PRIVACY.md ├── Pengwin ├── Assets │ ├── background1.png │ ├── background2.png │ └── pengwin.png ├── Images │ ├── BadgeLogo.scale-100.png │ ├── BadgeLogo.scale-125.png │ ├── BadgeLogo.scale-150.png │ ├── BadgeLogo.scale-200.png │ ├── BadgeLogo.scale-400.png │ ├── LargeTile.scale-100.png │ ├── LargeTile.scale-125.png │ ├── LargeTile.scale-150.png │ ├── LargeTile.scale-200.png │ ├── LargeTile.scale-400.png │ ├── SmallTile.scale-100.png │ ├── SmallTile.scale-125.png │ ├── SmallTile.scale-150.png │ ├── SmallTile.scale-200.png │ ├── SmallTile.scale-400.png │ ├── SplashScreen.scale-100.png │ ├── SplashScreen.scale-125.png │ ├── SplashScreen.scale-150.png │ ├── SplashScreen.scale-200.png │ ├── SplashScreen.scale-400.png │ ├── Square150x150Logo.scale-100.png │ ├── Square150x150Logo.scale-125.png │ ├── Square150x150Logo.scale-150.png │ ├── Square150x150Logo.scale-200.png │ ├── Square150x150Logo.scale-400.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ ├── Square44x44Logo.scale-100.png │ ├── Square44x44Logo.scale-125.png │ ├── Square44x44Logo.scale-150.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.scale-400.png │ ├── Square44x44Logo.targetsize-16.png │ ├── Square44x44Logo.targetsize-24.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── Square44x44Logo.targetsize-256.png │ ├── Square44x44Logo.targetsize-32.png │ ├── Square44x44Logo.targetsize-48.png │ ├── StoreLogo.scale-100.png │ ├── StoreLogo.scale-125.png │ ├── StoreLogo.scale-150.png │ ├── StoreLogo.scale-200.png │ ├── StoreLogo.scale-400.png │ ├── Wide310x150Logo.scale-100.png │ ├── Wide310x150Logo.scale-125.png │ ├── Wide310x150Logo.scale-150.png │ ├── Wide310x150Logo.scale-200.png │ └── Wide310x150Logo.scale-400.png ├── Package.appxmanifest └── Pengwin.wapproj ├── PengwinUI ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── LockScreenLogo.scale-200.png │ ├── SplashScreen.scale-200.png │ ├── Square150x150Logo.scale-200.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── StoreLogo.png │ └── Wide310x150Logo.scale-200.png ├── MainPage.xaml ├── MainPage.xaml.cs ├── Package.appxmanifest ├── PengwinUI.csproj └── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml ├── PengwinW ├── PengwinW.cpp ├── PengwinW.h ├── PengwinW.ico ├── PengwinW.rc ├── PengwinW.vcxproj ├── PengwinW.vcxproj.filters ├── Resource.h ├── framework.h └── targetver.h ├── README.ja.md ├── README.md ├── README.zh-hans.md ├── README.zh-hant.md ├── ROADMAP.md ├── RPrivacy.md ├── appMetadata └── en-us │ └── baseListing │ ├── description.txt │ ├── features.txt │ ├── images │ ├── Icon │ │ └── Box Art Store Listing.scale-300.png │ ├── PromotionalArt16x9 │ │ └── Slide01.scale-1920.png │ ├── Screenshot │ │ ├── Slide02.png │ │ ├── Slide04.png │ │ ├── Slide05.png │ │ ├── Slide06.png │ │ ├── Slide07.png │ │ ├── Slide08.png │ │ ├── Slide09.png │ │ ├── Slide10.png │ │ ├── Slide11.png │ │ ├── Slide12.png │ │ ├── description.Slide02.txt │ │ ├── description.Slide04.txt │ │ ├── description.Slide05.txt │ │ ├── description.Slide06.txt │ │ ├── description.Slide07.txt │ │ ├── description.Slide08.txt │ │ ├── description.Slide09.txt │ │ ├── description.Slide10.txt │ │ ├── description.Slide11.txt │ │ └── description.Slide12.txt │ ├── StoreLogo9x16 │ │ └── Poster Art.png │ └── StoreLogoSquare │ │ └── Box Art.png │ ├── keywords.txt │ └── releaseNotes.txt ├── azure-pipelines.yml ├── build.bat ├── docs ├── README.md ├── _config.yml └── images │ ├── 1057abb5-bb6d-4d01-830f-b6a72338d233[1].png │ ├── 6c9c5ca3-329a-4f31-ad70-fa59e091bf62.png │ ├── c7cdb4c4-25ff-4025-91e0-c5ffb9eabd98.png │ ├── cc0ea3bd-76b5-44e3-ac80-6724240668c1.png │ └── dummy.txt ├── licenses ├── Affero.md ├── Apache2.md ├── Artistic2.md ├── GFDL1.3.md ├── GPL2.md ├── GPL3.md ├── IBM.md ├── LGPL2.1.md ├── LGPL3.md ├── LaTeX.md ├── OpenSSL.md ├── PHP.md ├── Python.md └── Ruby.md └── x64 ├── pengwin.json └── put install.tar.gz here /.github/ISSUE_TEMPLATE/WSL_error.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: WSL Error on Launch 3 | about: Report errors like 0x800320306 on launch. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Note** 11 | 12 | These WSL error messages occur from time to time and can tricky to troubleshoot short of reinstalling WSL. 13 | 14 | They are usually not an issue with Pengwin itself but a glitch with the underlying Windows Subsystem for Linux in Windows 10. 15 | 16 | You can help us help you and Microsoft improve WSL and address these if you can provide us some debugging information. 17 | 18 | [ ] I have read the above statement. 19 | 20 | **Basic Troubleshooting** 21 | 22 | Please check: 23 | 24 | [ ] I have confirmed WSL is enabled: https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#confirm-wsl-is-enabled. 25 | [ ] I have searched Google for the error message. 26 | [ ] I have searched the official Microsoft WSL issues page: https://github.com/Microsoft/WSL/issues. 27 | [ ] I have searched the Pengwin issues page: https://github.com/WhitewaterFoundry/Pengwin/issues. 28 | [ ] I have reset Pengwin: Settings->Apps->Apps & features->Pengwin->Advanced Options->Reset. 29 | [ ] I have disabled and re-enabled WSL in Windows Features. 30 | [ ] I have run Windows 10 updates and restarted. 31 | 32 | What other troubleshooting have you attempted to date? 33 | 34 | **Error Code** 35 | 36 | Insert here: 37 | 38 | Please check: 39 | 40 | [ ] This error code is not one listed below. 41 | 42 | Known Error Codes 43 | 0x80040306 Fix: https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#error-0x80040306-on-installation 44 | 0x80040154 Fix: https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#error-0x80040154-after-windows-update 45 | 46 | **Version** 47 | 48 | Find: Settings->Apps->Apps & features->Pengwin->Advanced Options->Version. 49 | 50 | Insert here: 51 | 52 | **Screenshot** 53 | 54 | Insert here: 55 | 56 | **Windows Build** 57 | 58 | Run 'systeminfo | findstr /C:"OS"' in Command Prompt and insert here: 59 | 60 | For help on retrieving: https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#check-your-build-number 61 | 62 | **WSL Debug Data** 63 | 64 | Please collect and attach .etl files by following this guide: https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#starting-bash-gives-an-error-code 65 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: Bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Additional context** 27 | Add any other context about the problem here. 28 | 29 | **Basic Troubleshooting Checklist** 30 | 31 | [ ] I have searched Google for the error message. 32 | [ ] I have checked official WSL troubleshooting documentation: https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#confirm-wsl-is-enabled. 33 | [ ] I have searched the official Microsoft WSL issues page: https://github.com/Microsoft/WSL/issues. 34 | [ ] I have searched the Pengwin issues page: https://github.com/WhitewaterFoundry/Pengwin/issues. 35 | [ ] I have run Windows 10 updates and restarted. 36 | [ ] I have restarted WSL service: `wsl.exe --terminate WLinux` `wsl.exe --shutdown`. 37 | 38 | What other troubleshooting have you attempted? 39 | 40 | Insert here: 41 | 42 | **Pengwin Version** 43 | 44 | Run `grep "PENGWIN_VERSION" /etc/os-release` in Pengwin. 45 | 46 | Insert here: 47 | 48 | **WSL general info** 49 | 50 | Run `wslsys` in Pengwin. 51 | 52 | Insert here: 53 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/manual.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow that is manually triggered 2 | 3 | name: Update How to from wiki 4 | 5 | # Controls when the action will run. Workflow runs when manually triggered using the UI 6 | # or API. 7 | on: 8 | workflow_dispatch: 9 | # Inputs the workflow accepts. 10 | 11 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 12 | jobs: 13 | # This workflow contains a single job called "greet" 14 | update: 15 | # The type of runner that the job will run on 16 | runs-on: ubuntu-latest 17 | 18 | # Steps represent a sequence of tasks that will be executed as part of the job 19 | steps: 20 | # Runs a single command using the runners shell 21 | - uses: actions/checkout@v2 22 | - name: Update wiki submodule 23 | run: | 24 | set -x 25 | cd docs/wiki 26 | git submodule update --init --recursive 27 | cd ../.. 28 | git submodule update --remote --merge 29 | #git add docs 30 | git config --global user.email "crramirez@gmail.com" 31 | git config --global user.name "Carlos Rafael Ramirez" 32 | git commit -am "Update how-to page" 33 | git push 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | #x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # MSTest test Results 33 | [Tt]est[Rr]esult*/ 34 | [Bb]uild[Ll]og.* 35 | 36 | # NUNIT 37 | *.VisualState.xml 38 | TestResult.xml 39 | 40 | # Build Results of an ATL Project 41 | [Dd]ebugPS/ 42 | [Rr]eleasePS/ 43 | dlldata.c 44 | 45 | # .NET Core 46 | project.lock.json 47 | project.fragment.lock.json 48 | artifacts/ 49 | **/Properties/launchSettings.json 50 | 51 | *_i.c 52 | *_p.c 53 | *_i.h 54 | *.ilk 55 | *.meta 56 | *.obj 57 | *.pch 58 | *.pdb 59 | *.pgc 60 | *.pgd 61 | *.rsp 62 | *.sbr 63 | *.tlb 64 | *.tli 65 | *.tlh 66 | *.tmp 67 | *.tmp_proj 68 | *.log 69 | *.vspscc 70 | *.vssscc 71 | .builds 72 | *.pidb 73 | *.svclog 74 | *.scc 75 | 76 | # Chutzpah Test files 77 | _Chutzpah* 78 | 79 | # Visual C++ cache files 80 | ipch/ 81 | *.aps 82 | *.ncb 83 | *.opendb 84 | *.opensdf 85 | *.sdf 86 | *.cachefile 87 | *.VC.db 88 | *.VC.VC.opendb 89 | 90 | # Visual Studio profiler 91 | *.psess 92 | *.vsp 93 | *.vspx 94 | *.sap 95 | 96 | # TFS 2012 Local Workspace 97 | $tf/ 98 | 99 | # Guidance Automation Toolkit 100 | *.gpState 101 | 102 | # ReSharper is a .NET coding add-in 103 | _ReSharper*/ 104 | *.[Rr]e[Ss]harper 105 | *.DotSettings.user 106 | 107 | # JustCode is a .NET coding add-in 108 | .JustCode 109 | 110 | # TeamCity is a build add-in 111 | _TeamCity* 112 | 113 | # DotCover is a Code Coverage Tool 114 | *.dotCover 115 | 116 | # Visual Studio code coverage results 117 | *.coverage 118 | *.coveragexml 119 | 120 | # NCrunch 121 | _NCrunch_* 122 | .*crunch*.local.xml 123 | nCrunchTemp_* 124 | 125 | # MightyMoose 126 | *.mm.* 127 | AutoTest.Net/ 128 | 129 | # Web workbench (sass) 130 | .sass-cache/ 131 | 132 | # Installshield output folder 133 | [Ee]xpress/ 134 | 135 | # DocProject is a documentation generator add-in 136 | DocProject/buildhelp/ 137 | DocProject/Help/*.HxT 138 | DocProject/Help/*.HxC 139 | DocProject/Help/*.hhc 140 | DocProject/Help/*.hhk 141 | DocProject/Help/*.hhp 142 | DocProject/Help/Html2 143 | DocProject/Help/html 144 | 145 | # Click-Once directory 146 | publish/ 147 | 148 | # Publish Web Output 149 | *.[Pp]ublish.xml 150 | *.azurePubxml 151 | # TODO: Comment the next line if you want to checkin your web deploy settings 152 | # but database connection strings (with potential passwords) will be unencrypted 153 | *.pubxml 154 | *.publishproj 155 | 156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 157 | # checkin your Azure Web App publish settings, but sensitive information contained 158 | # in these scripts will be unencrypted 159 | PublishScripts/ 160 | 161 | # NuGet Packages 162 | *.nupkg 163 | # The packages folder can be ignored because of Package Restore 164 | **/packages/* 165 | # except build/, which is used as an MSBuild target. 166 | !**/packages/build/ 167 | # Uncomment if necessary however generally it will be regenerated when needed 168 | #!**/packages/repositories.config 169 | # NuGet v3's project.json files produces more ignorable files 170 | *.nuget.props 171 | *.nuget.targets 172 | 173 | # Microsoft Azure Build Output 174 | csx/ 175 | *.build.csdef 176 | 177 | # Microsoft Azure Emulator 178 | ecf/ 179 | rcf/ 180 | 181 | # Windows Store app package directories and files 182 | AppPackages/ 183 | BundleArtifacts/ 184 | Package.StoreAssociation.xml 185 | _pkginfo.txt 186 | 187 | # Visual Studio cache files 188 | # files ending in .cache can be ignored 189 | *.[Cc]ache 190 | # but keep track of directories ending in .cache 191 | !*.[Cc]ache/ 192 | 193 | # Others 194 | ClientBin/ 195 | ~$* 196 | *~ 197 | *.dbmdl 198 | *.dbproj.schemaview 199 | *.jfm 200 | *.pfx 201 | *.publishsettings 202 | orleans.codegen.cs 203 | 204 | # Since there are multiple workflows, uncomment next line to ignore bower_components 205 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 206 | #bower_components/ 207 | 208 | # RIA/Silverlight projects 209 | Generated_Code/ 210 | 211 | # Backup & report files from converting an old project file 212 | # to a newer Visual Studio version. Backup files are not needed, 213 | # because we have git ;-) 214 | _UpgradeReport_Files/ 215 | Backup*/ 216 | UpgradeLog*.XML 217 | UpgradeLog*.htm 218 | 219 | # SQL Server files 220 | *.mdf 221 | *.ldf 222 | *.ndf 223 | 224 | # Business Intelligence projects 225 | *.rdl.data 226 | *.bim.layout 227 | *.bim_*.settings 228 | 229 | # Microsoft Fakes 230 | FakesAssemblies/ 231 | 232 | # GhostDoc plugin setting file 233 | *.GhostDoc.xml 234 | 235 | # Node.js Tools for Visual Studio 236 | .ntvs_analysis.dat 237 | node_modules/ 238 | 239 | # Typescript v1 declaration files 240 | typings/ 241 | 242 | # Visual Studio 6 build log 243 | *.plg 244 | 245 | # Visual Studio 6 workspace options file 246 | *.opt 247 | 248 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 249 | *.vbw 250 | 251 | # Visual Studio LightSwitch build output 252 | **/*.HTMLClient/GeneratedArtifacts 253 | **/*.DesktopClient/GeneratedArtifacts 254 | **/*.DesktopClient/ModelManifest.xml 255 | **/*.Server/GeneratedArtifacts 256 | **/*.Server/ModelManifest.xml 257 | _Pvt_Extensions 258 | 259 | # Paket dependency manager 260 | .paket/paket.exe 261 | paket-files/ 262 | 263 | # FAKE - F# Make 264 | .fake/ 265 | 266 | # JetBrains Rider 267 | .idea/ 268 | *.sln.iml 269 | 270 | # CodeRush 271 | .cr/ 272 | 273 | # Python Tools for Visual Studio (PTVS) 274 | __pycache__/ 275 | *.pyc 276 | 277 | # Cake - Uncomment if you are using it 278 | # tools/** 279 | # !tools/packages.config 280 | 281 | # Telerik's JustMock configuration file 282 | *.jmconfig 283 | 284 | # BizTalk build output 285 | *.btp.cs 286 | *.btm.cs 287 | *.odx.cs 288 | *.xsd.cs 289 | 290 | 291 | 292 | DistroLauncher/MSG*.bin 293 | DistroLauncher/messages.rc 294 | DistroLauncher/messages.h 295 | *.lib 296 | *.dll 297 | *.exe 298 | *.tar.gz 299 | /ARM64/install.tar - Copy.gz 300 | /x64/install.tar - Copy.gz 301 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "docs/wiki"] 2 | path = docs/wiki 3 | url = https://github.com/WhitewaterFoundry/Pengwin.wiki.git 4 | -------------------------------------------------------------------------------- /ARM64/pengwin.json: -------------------------------------------------------------------------------- 1 | { 2 | "copied from x64": 1 3 | } 4 | -------------------------------------------------------------------------------- /ARM64/put install.tar.gz here: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/ARM64/put install.tar.gz here -------------------------------------------------------------------------------- /BUILDING.md: -------------------------------------------------------------------------------- 1 | ## Pengwin Components 2 | 3 | - Launcher project - Builds the actual executable that is run when a user launches the app. 4 | - DistroLauncher-Appx project - Builds the distro package with all the assets and other dependencies. 5 | 6 | Read more about the components from the upstream template by Microsoft [here](https://github.com/Microsoft/WSL-DistroLauncher). 7 | 8 | ## Building Requirements 9 | 1. [Visual Studio Community 2019](https://visualstudio.microsoft.com/vs/community/). (Free) 10 | - The "Universal Windows Platform development" Workload is required, along with the following Individual components: 11 | - `C++ (v142) Universal Windows Platform tools` 12 | - Recommended Version - `Windows 10 SDK (10.0.17763.0) for UWP: C#, VB, JS` 13 | - Minimum Version - `Windows 10 SDK (10.0.17134.0) for UWP: C#, VB, JS` 14 | 1. Developer Mode 15 | - Windows 10 must be in Developer mode, which can be enabled in Start -> Settings -> Update & Security -> For developers. 16 | 1. Enable WSL 17 | - Enable by: 18 | - Pressing Windows+R, type `C:\Windows\System32\OptionalFeatures.exe`, click OK, find and check Windows Subsystem for Linux, click OK, and restart as required, or 19 | - Open PowerShell as Administrator, type `Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux`, and restart as required. 20 | 21 | ## Build Process 22 | 1. Open DistroLauncher.sln in Visual Studio Community 2019. 23 | 2. Generate a test certificate: 24 | 25 | As of Visual Studio 2019, the original feature to create Test Certificates have been removed in order to, "promote better security practices". A [bug report](https://developercommunity.visualstudio.com/content/problem/612872/create-test-certificate-option-missing-from-uwp-sd.html) has been filed, but it does not seem that this feature will be coming back soon. To address that bug report, [Chris Paterson](https://developercommunity.visualstudio.com/users/179609/0a25123f-a73b-680f-8ba0-adf2e9b32c8e.html) created a script which has this same feature. 26 | 27 | Open Powershell and copy and paste this script into the prompt, it creates the test certificate for you: 28 | ``` 29 | $Subject = "CN=Your-appxmanifest-publisher" 30 | $Store = "Cert:\CurrentUser\My" 31 | 32 | # Delete old certificate 33 | Get-ChildItem $Store | Where-Object { $_.Subject -match $Subject } | Remove-Item 34 | 35 | # Create new certificate 36 | New-SelfSignedCertificate -Type Custom -Subject $Subject -KeyUsage DigitalSignature -FriendlyName "Pengwin Test Certificate" -CertStoreLocation $Store -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") 37 | ``` 38 | **You will need the thumbprint later so be sure to copy it** 39 | 1. Get or build install.tar.gz 40 | 1. Get the most [recent install.tar.gz files](https://github.com/whitewaterfoundry/pengwin-rootfs-builds/releases), and place in x64 or ARM64, or 41 | 1. Build the install.tar.gz on an existing Debian or Pengwin system using the [legacy build script](https://github.com/WhitewaterFoundry/legacy-rootfs-build-scripts). 42 | 1. Updating the thumbprint 43 | 1. Open the file `DistroLauncher-Appx\DistroLauncher-Appx.vcxproj` 44 | 1. Search for the line that starts with `` 45 | 1. Replace the string in the middle with the thumbprint that you copied earlier and save the file. 46 | 1. Build the solution to make sure you have everything you need. Fix any build dependencies you are missing. 47 | 1. Build the Windows UWP package: 48 | The package can be built in Visual Studio or via command line 49 | - For a UI guided build 50 | 1. Open `DistroLauncher.sln` in Visual Studio Community 2019. 51 | 1. Follow the instructions [here](https://docs.microsoft.com/en-us/windows/uwp/packaging/packaging-uwp-apps#create-an-app-package-upload-file) 52 | - To build from the command line 53 | 1. Open a `Developer Command Prompt for VS 2019` as an administrator and change directory to your build directory. 54 | 1. Run `build.bat` 55 | - By default, this generates the debug appxbundle targeting both x64 and ARM64 56 | - To only target Debug|x64, run `build.bat x64` 57 | - To only target Debug|ARM64 run `build.bat ARM64` 58 | - To build Releases instead of Debug appxbundles, include the `rel` option (e.g. `build.bat rel`, `build.bat rel x64`) 59 | - For a clean build, include the `clean` option (e.g. `build.bat clean`, `build.bat clean rel ARM64`) 60 | 61 | 1. If everything has gone correctly, you should find your app package in a subfolder under the `AppPackages\DistroLauncher-Appx` folder. 62 | 1. First, install the certificate: 63 | 1. Double-click on the security certificate file. 64 | 1. Click the "Install Certificate" button. 65 | 1. Select "Local Machine" for the store location. 66 | 1. Select "Automatically select the certificate store based on the type of certificate", then click Next. (If you have any certificate issues, try specifying the Root Certificate Authority Trust here.) 67 | 1. Proceed through the rest of the wizard, clicking Next, Finish, OK, and then OK. 68 | 1. Once that's done, you should be able to double-click on the .appxbundle package file and install it. 69 | 70 | ## Command Line Usage 71 | The launcher app provides the following functionality: 72 | 73 | * `pengwin.exe` 74 | - Launches the user's default shell in the user's home directory. 75 | 76 | * `pengwin.exe install [--root]` 77 | - Install the distribution and do not launch the shell when complete. 78 | - `--root`: Do not create a user account and leave the default user set to root. 79 | 80 | * `pengwin.exe run ` 81 | - Run the provided command line in the current working directory. If no command line is provided, the default shell is launched. 82 | - Everything after `run` is passed to WslLaunchInteractive. 83 | 84 | * `pengwin.exe config [setting [value]]` 85 | - Configure settings for this distribution. 86 | - Settings: 87 | - `--default-user `: Sets the default user to . This must be an existing user. 88 | 89 | * `pengwin.exe help` 90 | - Print usage information. 91 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Existing users can update immediately by running $ pengwin-setup update 2 | 3 | 25.06.0: 4 | * Upgraded Terraform to 1.12.1 5 | * Upgraded Node.js versions to 24 and 22 lts 6 | * Upgraded to Debian 12.11 7 | * Upgraded to Mesa 25.0.4 and the D3D12 driver includes: 8 | * OpenGL 4.6 support completed 9 | * Expanded video encode/decode support (HEVC 4:2:2/4:4:4, H.264 Baseline) 10 | * Added VP9 and AV1 codecs in GPU Video Acceleration 11 | * Changed the TUI engine of pengwin-setup from newt to ncurses, with the following improvements: 12 | * Mouse support, you can now click options and buttons 13 | * Accelerator keys are shown in the options for rapid selection 14 | * The big dialogs like the uninstaller are now resizable 15 | * Updated the version of VCXsrv to 21.1.13 16 | * Updated python to 3.13 17 | * Fixed a regression in pengwin-setup that prevented returning to the previous menu 18 | * Fix GPU Video Acceleration access in WSL 2.5.x 19 | * Fixed an error in the icon generation in the desktop environment installer 20 | * Added udev package due to it is necessary for the video acceleration 21 | 22 | 24.08.2: 23 | * Added a --help option to pengwin-setup and will show you some usability and automation options 24 | * Upgraded Terraform to 1.9.5 25 | * Fixed a regression that caused that the GUI menu didn't load 26 | 27 | 24.08.1: 28 | * Improved the navigation in the pengwin-setup menus allowing selecting the options with fewer keystrokes. 29 | * The backports are active and working, so you'll receive the latest version of many packages like curl, cmake, golang, systemd, emacs, meson, xrdp among others. 30 | * Upgraded Terraform to 1.9.4 31 | * Included by default the command-not-found package to help users to find the correct package to install when a command is not found. 32 | * Fixed and improved the Kubernetes installer. 33 | * Fixed an error when spt is trying to upgrade systemd package on WSL1. 34 | * Fix XFCE installation with newer versions of WSL, if you are facing the issue run the installer again, from pengwin-setup. 35 | * Be sure that dbus is only started once, regardless how many times you start Pengwin. 36 | * Added a Message Of The Day Setting, to pengwin-setup to configure it. 37 | 38 | 24.02.3: 39 | * Upgraded to Debian 12.4 40 | * Improved N (Node.js) version manager installer 41 | * Improved the Node.js installer 42 | * Updated Node.js LTS that pengwin-setup installs to 20 43 | * Improved ibus and fcitx installation 44 | * apt-utils now is installed by default 45 | * Improved the navigation of the Programming menu in pengwin-setup 46 | * Removed the testing repo to avoid accidental installations of testing packages 47 | * Avoid closing Windows Terminal after pegwin-setup finishes 48 | 49 | 23.07.1: 50 | * Updated the NodeJS installer with new versions and the latest version of yarn. 51 | 52 | 23.07.0: 53 | * Upgraded the baseline to Debian 12 bookworm with every new version that comes with it. 54 | * To correctly upgrade to this version you'll need to execute 'pengwin-setup update' twice and then 'sudo apt dist-upgrade -y' to complete the upgrade process 55 | * Upgraded to Mesa 22.3.6, bringing OpenGL 4 and GPU Video Acceleration via VAAPI. It works out of the box, you only need to enable SystemD via pengwin-setup. 56 | * Improve Windows interop when SystemD is active. 57 | 58 | 23.03.0: 59 | * Prepare everything for a smooth transition to bookworm 60 | * Upgrade Go to 1.19.4 61 | * Improve docker compatibility with WSL1 62 | * Added new MariaDB versions to installer 63 | * Added nano to the default installation 64 | 65 | 22.11.3: 66 | * Support for SystemD Windows 10 / 11 67 | * Added an option in pengwin-setup to enable / disable SystemD 68 | * Now you can install the Xfce desktop environment from pengwin-setup 69 | * Enabled the backports so, you'll have a more recent version of 7zip, cmake, git, golang, npm among others 70 | * Improved the DISPLAY variable management for non WSLg users or who still want to use Xservers 71 | * Now Pengwin can start with Windows logon without showing a terminal window 72 | * Customized the XRDP login screen with a Pengwin theme 73 | * Customized the default wallpaper for Xfce with a Pengwin theme 74 | * Updated .NET version to 7.0 75 | * Include by default the software-properties-common to ease the installation of packages from PPAs 76 | * Allow to disable WSLg from pengwin-setup only for Pengwin 77 | * Fixed autocompletion for helm and kubectl 78 | * Bump pyenv python to 3.10.4 79 | * Upgraded MariaDB installer 80 | * Upgraded terraform to 1.2.8 81 | * Improved the integration with Rancher Desktop and Docker Desktop 82 | * Improved the IBus installer in pengwin-setup 83 | * Added support for installing JetBrains Toolbox inside Pengwin 84 | * Added wslsystemctl command for starting services in WSL1 85 | 86 | 22.2.1: 87 | * Fix name for Windows Terminal menu 88 | 89 | 22.2.0: 90 | * Fix a launch error with Windows Terminal 1.12 91 | 92 | 22.1.6: 93 | * Use cmd-exe instead of cmd.exe to avoid executing cmd.exe in the Linux home path. 94 | 95 | 22.1.5: 96 | * Fix an error message shown at launch in WSL 1 about xdpyinfo when vcxsrv is installed. 97 | * Switch Azure CLI installer to bullseye repos. 98 | * Switch Powershell installer to bullseye repos. 99 | * Improve the performance in the pengwin.exe config --default-user . 100 | * Finally fixed the problem that Pengwin didn't launch in Windows Terminal on specific configurations. 101 | * If you have Windows 11, Windows Terminal 1.12, and have Windows Terminal as your default console, now when you open Pengwin from the Start Menu, it will show the correct profile on Windows Terminal. 102 | 103 | 22.1.0: 104 | * Show a better message in WSL2 when the Virtual Machine Platform Windows feature is not enabled 105 | * Keep the previous Debian repo for compatibility with packages expecting buster 106 | * Skip some steps in 00-pengwin.fish for non-interactive sessions 107 | * Add testing repo with a low priority 108 | * Change which by command -v in the scripts, due to which is deprecated and slower 109 | * Change command -v by command -q in fish scripts 110 | * Add an alias to the wsl command so that you can type wsl --version instead of wsl.exe --version inside Pengwin 111 | * Remove the version restriction in iproute, due to the latest kernel support the ss -a command without issues in WSL2 112 | * Improve start menu shortcut generation (short the generated path) 113 | * dotnet package use the new repo for bullseye 114 | * Bump Python to 3.10.1 also updated all installation types 115 | * Fix gopath in go installer 116 | * Fix MariaDB 10.6 install and improve the overall LAMP installer 117 | * Show progress ring in profile tab and taskbar in Windows Terminal when updating pengwin-setup and generating start menu shortcuts 118 | * Install x11-utils as part of VcXsrv installation 119 | * Fix a bug that breaks XRDP upon SDKMan installation 120 | * Upgrade .NET installer to 6.0 121 | * Switch to the newer poetry install script 122 | * Make the SDKMan install the latest Java by default when using the Java installer in pengwin-setup 123 | * Upgrade VcXsrv to 1.20.14.0 124 | 125 | 21.8.0: 126 | * Improved Start menu icons for Pengwin 127 | * Fixed HiDPI with GTK in WSLg 128 | * Upgraded docker version 129 | * Fixed the cloud cli installer 130 | * Upgraded Terraform to 1.0.5 131 | 132 | 21.7.1: 133 | * Now Pengwin is compatible with XRDP. Installing xrdp and xorgxrdp should work now. 134 | * Improved high-dpi support in the embedded VcXsrv 135 | * Fixed the NodeJS NVM (no longer installs N instead) 136 | * Fixed the MariaDB installer in LAMP. Also, the support for ARM64 was improved. 137 | * Improved Python PyEnv configs and bump Python version to 3.9.6 138 | * Upgraded helm and fixed Kubernetes installer 139 | * Fixed the docker support uninstaller 140 | 141 | 21.5.5: 142 | * Enables put notifications so you will receive a message everytime a new Pengwin version is released 143 | 144 | 21.5.4: 145 | * Automatically creates an entry with logo in Windows Terminal 146 | * Add default background and colors to Windows Terminal (you can change them in Settings) 147 | * In App Settings, it is possible to set Pengwin launch at startup 148 | * If display scale factor is 200% or more now the mouse cursor will be 64px wide 149 | 150 | 21.4.1: 151 | * Updated CMake to version 3.19.1 152 | * Updated pyenv python to version 3.9.4 153 | * Fixed a hang with fish and dbus 154 | * Improved Poetry installer 155 | * Added Prezto support ZSH installer 156 | * Do not override DISPLAY variable if it is already defined 157 | 158 | 21.3.1: 159 | * Include the latest packages in the image. 160 | -------------------------------------------------------------------------------- /CODEOFCONDUCT.md: -------------------------------------------------------------------------------- 1 | GNU Kind Communications Guidelines 2 | by Richard Stallman 3 | Source: https://www.gnu.org/philosophy/kind-communication.en.html 4 | 5 | The GNU Project encourages contributions from anyone who wishes to advance the development of the GNU system, regardless of gender, race, religion, cultural background, and any other demographic characteristics, as well as personal political views. 6 | 7 | People are sometimes discouraged from participating in GNU development because of certain patterns of communication that strike them as unfriendly, unwelcoming, rejecting, or harsh. This discouragement particularly affects members of disprivileged demographics, but it is not limited to them. Therefore, we ask all contributors to make a conscious effort, in GNU Project discussions, to communicate in ways that avoid that outcome—to avoid practices that will predictably and unnecessarily risk putting some contributors off. 8 | 9 | These guidelines suggest specific ways to accomplish that goal. 10 | 11 | Please assume other participants are posting in good faith, even if you disagree with what they say. When people present code or text as their own work, please accept it as their work. Please do not criticize people for wrongs that you only speculate they may have done; stick to what they actually say and actually do. 12 | 13 | Please think about how to treat other participants with respect, especially when you disagree with them. For instance, call them by the names they use, and honor their preferences about their gender identity[1]. 14 | 15 | Please do not take a harsh tone towards other participants, and especially don't make personal attacks against them. Go out of your way to show that you are criticizing a statement, not a person. 16 | 17 | Please recognize that criticism of your statements is not a personal attack on you. If you feel that someone has attacked you, or offended your personal dignity, please don't “hit back” with another personal attack. That tends to start a vicious circle of escalating verbal aggression. A private response, politely stating your feelings as feelings, and asking for peace, may calm things down. Write it, set it aside for hours or a day, revise it to remove the anger, and only then send it. 18 | 19 | Please avoid statements about the presumed typical desires, capabilities or actions of some demographic group. They can offend people in that group, and they are always off-topic in GNU Project discussions. 20 | 21 | Please be especially kind to other contributors when saying they made a mistake. Programming means making lots of mistakes, and we all do so—this is why regression tests are useful. Conscientious programmers make mistakes, and then fix them. It is helpful to show contributors that being imperfect is normal, so we don't hold it against them, and that we appreciate their imperfect contributions though we hope they follow through by fixing any problems in them. 22 | 23 | Likewise, be kind when pointing out to other contributors that they should stop using certain nonfree software. For their own sake, they ought to free themselves, but we welcome their contributions to our software packages even if they don't do that. So these reminders should be gentle and not too frequent—don't nag. 24 | 25 | By contrast, to suggest that others use nonfree software opposes the basic principles of GNU, so it is not allowed in GNU Project discussions. 26 | 27 | Please respond to what people actually said, not to exaggerations of their views. Your criticism will not be constructive if it is aimed at a target other than their real views. 28 | 29 | If in a discussion someone brings up a tangent to the topic at hand, please keep the discussion on track by focusing on the current topic rather than the tangent. This is not to say that the tangent is bad, or not interesting to discuss—only that it shouldn't interfere with discussion of the issue at hand. In most cases, it is also off-topic, so those interested ought to discuss it somewhere else. 30 | 31 | If you think the tangent is an important and pertinent issue, please bring it up as a separate discussion, with a Subject field to fit, and consider waiting for the end of the current discussion. 32 | 33 | Rather than trying to have the last word, look for the times when there is no need to reply, perhaps because you already made the relevant point clear enough. If you know something about the game of Go, this analogy might clarify that: when the other player's move is not strong enough to require a direct response, it is advantageous to give it none and instead move elsewhere. 34 | 35 | Please don't argue unceasingly for your preferred course of action when a decision for some other course has already been made. That tends to block the activity's progress. 36 | 37 | If other participants complain about the way you express your ideas, please make an effort to cater to them. You can find ways to express the same points while making others more comfortable. You are more likely to persuade others if you don't arouse ire about secondary things. 38 | 39 | Please don't raise unrelated political issues in GNU Project discussions, because they are off-topic. The only political positions that the GNU Project endorses are (1) that users should have control of their own computing (for instance, through free software) and (2) supporting basic human rights in computing. We don't require you as a contributor to agree with these two points, but you do need to accept that our decisions will be based on them. 40 | 41 | By making an effort to follow these guidelines, we will encourage more contribution to our projects, and our discussions will be friendlier and reach conclusions more easily. 42 | 43 | Footnote 44 | 45 | [1] Honoring people's preferences about gender identity includes not referring to them in ways that conflict with that identity. For instance, not to use pronouns for them that conflict with it. There are several ways to avoid that; one way is to use gender-neutral pronouns, since they don't conflict with any possible gender identity. One such pronoun is singular use of “they.” Another is “ person.” 46 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Bug Reports 2 | 3 | Bug reports are welcomed. 4 | 5 | Please use the [available templates](https://github.com/WhitewaterFoundry/Pengwin/issues/new/choose) and complete the applicable sections before submitting. 6 | 7 | ## Pull Requests 8 | 9 | Pull requests are highly encouraged. 10 | 11 | ## Grants/Bounties 12 | 13 | If you have an idea for a new feature you would like to see implemented in Pengwin and can implement it yourself given the funding, we are now accepting grant/bounty proposals. Grants are currently available for $50-$500 USD based on complexity. 14 | 15 | You are invited to submit a grant proposal including the following to hayden@whitewaterfoundry.com: 16 | 17 | ``` 18 | Name: 19 | 20 | Email: 21 | 22 | PayPal email address, if different: 23 | 24 | Proposed feature: 25 | 26 | Outline of how you plan to implement: 27 | 28 | Estimated delivery date of proof of concept: 29 | 30 | Estimated delivery date of final tested code: 31 | 32 | Link to sample(s) of your work: 33 | ``` 34 | 35 | Your proposal will be promptly evaluated for complexity, reasonableness, and whether it fits within scope of Pengwin and WSL. You may see possible proposals [here](https://github.com/WhitewaterFoundry/Pengwin/labels/Possible%20Bounty). Your work sample and GitHub history will be evaluated to determine if you have the technical competancy to implement the proposed change and deliver timely. An ideal work sample would be an intermediate bash script performing some custom configuration on Linux. 36 | 37 | If approved, you will recieve a simple agreement covering the scope of the work you will be doing which you must acknowledge and return and then you may commence work. Unfortunately not all proposals will be accepted. Pengwin and Whitewater Foundry will not pay for feature additions or pull requests that have not first been approved and subject to the terms of an agreement. 38 | 39 | ## Licensing 40 | 41 | Pengwin is licensed under the [MIT license](https://github.com/WhitewaterFoundry/Pengwin/blob/master/LICENSE.md). All contributions to Pengwin must comply with the MIT license and similarly be licensed under the MIT license. 42 | -------------------------------------------------------------------------------- /DistroLauncher.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.1.32210.238 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Launcher", "DistroLauncher\DistroLauncher.vcxproj", "{BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}" 7 | EndProject 8 | Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Pengwin", "Pengwin\Pengwin.wapproj", "{4175DAA1-10E2-45BF-88BD-6577AF555B1B}" 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LauncherTests", "LauncherTests\LauncherTests.vcxproj", "{3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PengwinUI", "PengwinUI\PengwinUI.csproj", "{4F3B346B-175D-46BC-B233-92D0B25D5576}" 13 | EndProject 14 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PengwinW", "PengwinW\PengwinW.vcxproj", "{D666189E-1DDB-4059-B362-213824968E68}" 15 | EndProject 16 | Global 17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 18 | Debug|Any CPU = Debug|Any CPU 19 | Debug|ARM64 = Debug|ARM64 20 | Debug|x64 = Debug|x64 21 | Release|Any CPU = Release|Any CPU 22 | Release|ARM64 = Release|ARM64 23 | Release|x64 = Release|x64 24 | EndGlobalSection 25 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 26 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Debug|Any CPU.ActiveCfg = Debug|x64 27 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Debug|ARM64.ActiveCfg = Debug|ARM64 28 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Debug|ARM64.Build.0 = Debug|ARM64 29 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Debug|x64.ActiveCfg = Debug|x64 30 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Debug|x64.Build.0 = Debug|x64 31 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Release|Any CPU.ActiveCfg = Release|x64 32 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Release|ARM64.ActiveCfg = Release|ARM64 33 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Release|ARM64.Build.0 = Release|ARM64 34 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Release|x64.ActiveCfg = Release|x64 35 | {BA627106-E5F7-46EE-B8D7-2D5A760F2FB2}.Release|x64.Build.0 = Release|x64 36 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 37 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Debug|ARM64.ActiveCfg = Debug|ARM64 38 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Debug|ARM64.Build.0 = Debug|ARM64 39 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Debug|ARM64.Deploy.0 = Debug|ARM64 40 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Debug|x64.ActiveCfg = Debug|x64 41 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Debug|x64.Build.0 = Debug|x64 42 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Debug|x64.Deploy.0 = Debug|x64 43 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Release|Any CPU.ActiveCfg = Release|Any CPU 44 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Release|ARM64.ActiveCfg = Release|ARM64 45 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Release|ARM64.Build.0 = Release|ARM64 46 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Release|ARM64.Deploy.0 = Release|ARM64 47 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Release|x64.ActiveCfg = Release|x64 48 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Release|x64.Build.0 = Release|x64 49 | {4175DAA1-10E2-45BF-88BD-6577AF555B1B}.Release|x64.Deploy.0 = Release|x64 50 | {3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}.Debug|Any CPU.ActiveCfg = Debug|x64 51 | {3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}.Debug|ARM64.ActiveCfg = Debug|x64 52 | {3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}.Debug|x64.ActiveCfg = Debug|x64 53 | {3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}.Debug|x64.Build.0 = Debug|x64 54 | {3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}.Release|Any CPU.ActiveCfg = Release|x64 55 | {3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}.Release|ARM64.ActiveCfg = Release|x64 56 | {3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}.Release|x64.ActiveCfg = Release|x64 57 | {3FBA1AEE-63DF-4490-82AE-74AAAB1BFD80}.Release|x64.Build.0 = Release|x64 58 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Debug|Any CPU.ActiveCfg = Debug|x64 59 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Debug|ARM64.ActiveCfg = Debug|ARM64 60 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Debug|ARM64.Build.0 = Debug|ARM64 61 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Debug|x64.ActiveCfg = Debug|x64 62 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Debug|x64.Build.0 = Debug|x64 63 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Release|Any CPU.ActiveCfg = Release|x64 64 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Release|ARM64.ActiveCfg = Release|ARM64 65 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Release|ARM64.Build.0 = Release|ARM64 66 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Release|x64.ActiveCfg = Release|x64 67 | {4F3B346B-175D-46BC-B233-92D0B25D5576}.Release|x64.Build.0 = Release|x64 68 | {D666189E-1DDB-4059-B362-213824968E68}.Debug|Any CPU.ActiveCfg = Debug|x64 69 | {D666189E-1DDB-4059-B362-213824968E68}.Debug|ARM64.ActiveCfg = Debug|ARM64 70 | {D666189E-1DDB-4059-B362-213824968E68}.Debug|ARM64.Build.0 = Debug|ARM64 71 | {D666189E-1DDB-4059-B362-213824968E68}.Debug|x64.ActiveCfg = Debug|x64 72 | {D666189E-1DDB-4059-B362-213824968E68}.Debug|x64.Build.0 = Debug|x64 73 | {D666189E-1DDB-4059-B362-213824968E68}.Release|Any CPU.ActiveCfg = Release|x64 74 | {D666189E-1DDB-4059-B362-213824968E68}.Release|Any CPU.Build.0 = Release|x64 75 | {D666189E-1DDB-4059-B362-213824968E68}.Release|ARM64.ActiveCfg = Release|ARM64 76 | {D666189E-1DDB-4059-B362-213824968E68}.Release|ARM64.Build.0 = Release|ARM64 77 | {D666189E-1DDB-4059-B362-213824968E68}.Release|x64.ActiveCfg = Release|x64 78 | {D666189E-1DDB-4059-B362-213824968E68}.Release|x64.Build.0 = Release|x64 79 | EndGlobalSection 80 | GlobalSection(SolutionProperties) = preSolution 81 | HideSolutionNode = FALSE 82 | EndGlobalSection 83 | GlobalSection(ExtensibilityGlobals) = postSolution 84 | SolutionGuid = {1CBEEAE2-D963-465A-A538-A30F8D615037} 85 | EndGlobalSection 86 | EndGlobal 87 | -------------------------------------------------------------------------------- /DistroLauncher/DistributionInfo.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Microsoft. All rights reserved. 3 | // Licensed under the terms described in the LICENSE file in the root of this project. 4 | // 5 | 6 | #include "stdafx.h" 7 | 8 | HRESULT DistributionInfo::ChangeDefaultUserInWslConf(const std::wstring_view userName) 9 | { 10 | DWORD exitCode = 0; 11 | 12 | wchar_t commandLine[255]; 13 | _swprintf_p(commandLine, _countof(commandLine), 14 | L"if [ $(grep -c \"\\[user\\]\" /etc/wsl.conf) -eq \"0\" ]; then echo -e \"\\n[user]\\ndefault=%1$s\">>/etc/wsl.conf; else sed -i \"s/\\(default=\\)\\(.*\\)/\\1%1$s/\" /etc/wsl.conf ; fi", 15 | std::wstring(userName).c_str()); 16 | 17 | if (const auto hr = g_wslApi.WslLaunchInteractive(commandLine, true, &exitCode); FAILED(hr) || exitCode != 0) 18 | { 19 | return hr; 20 | } 21 | 22 | return 0; 23 | } 24 | 25 | bool DistributionInfo::CreateUser(std::wstring_view userName) 26 | { 27 | // Create the user account. 28 | DWORD exitCode; 29 | std::wstring commandLine = L"/usr/sbin/adduser --quiet --gecos '' "; 30 | commandLine += userName; 31 | auto hr = g_wslApi.WslLaunchInteractive(commandLine.c_str(), true, &exitCode); 32 | if (FAILED(hr) || exitCode != 0) 33 | { 34 | return false; 35 | } 36 | 37 | // Add the user account to any relevant groups. 38 | commandLine = L"/usr/sbin/usermod -aG adm,cdrom,sudo,dip,plugdev,video,irc "; 39 | commandLine += userName; 40 | hr = g_wslApi.WslLaunchInteractive(commandLine.c_str(), true, &exitCode); 41 | if (FAILED(hr) || exitCode != 0) 42 | { 43 | // Delete the user if the group add command failed. 44 | commandLine = L"/usr/sbin/deluser "; 45 | commandLine += userName; 46 | g_wslApi.WslLaunchInteractive(commandLine.c_str(), true, &exitCode); 47 | return false; 48 | } 49 | 50 | return true; 51 | } 52 | 53 | ULONG DistributionInfo::QueryUid(std::wstring_view userName) 54 | { 55 | // Create a pipe to read the output of the launched process. 56 | HANDLE readPipe; 57 | HANDLE writePipe; 58 | SECURITY_ATTRIBUTES sa{sizeof sa, nullptr, true}; 59 | auto uid = UID_INVALID; 60 | if (CreatePipe(&readPipe, &writePipe, &sa, 0)) 61 | { 62 | // Query the UID of the supplied username. 63 | std::wstring command = L"/usr/bin/id -u "; 64 | command += userName; 65 | 66 | HANDLE child; 67 | // ReSharper disable once CppTooWideScope 68 | // ReSharper disable once CppTooWideScopeInitStatement 69 | auto hr = g_wslApi.WslLaunch(command.c_str(), true, GetStdHandle(STD_INPUT_HANDLE), writePipe, 70 | GetStdHandle(STD_ERROR_HANDLE), &child); 71 | if (SUCCEEDED(hr)) 72 | { 73 | // Wait for the child to exit and ensure process exited successfully. 74 | WaitForSingleObject(child, INFINITE); 75 | DWORD exitCode; 76 | if (GetExitCodeProcess(child, &exitCode) == false || exitCode != 0) 77 | { 78 | hr = E_INVALIDARG; 79 | } 80 | 81 | CloseHandle(child); 82 | if (SUCCEEDED(hr)) 83 | { 84 | // ReSharper disable once CppTooWideScope 85 | char buffer[64]{}; 86 | DWORD bytesRead; 87 | 88 | // Read the output of the command from the pipe and convert to a UID. 89 | if (ReadFile(readPipe, buffer, sizeof buffer - 1, &bytesRead, nullptr)) 90 | { 91 | buffer[bytesRead] = ANSI_NULL; 92 | try 93 | { 94 | uid = std::stoul(buffer, nullptr, 10); 95 | } 96 | catch (...) 97 | { 98 | } 99 | } 100 | } 101 | } 102 | 103 | CloseHandle(readPipe); 104 | CloseHandle(writePipe); 105 | } 106 | 107 | return uid; 108 | } 109 | -------------------------------------------------------------------------------- /DistroLauncher/DistributionInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Microsoft. All rights reserved. 3 | // Licensed under the terms described in the LICENSE file in the root of this project. 4 | // 5 | 6 | #pragma once 7 | 8 | namespace DistributionInfo 9 | { 10 | // The name of the distribution. This will be displayed to the user via 11 | // wslconfig.exe and in other places. It must conform to the following 12 | // regular expression: ^[a-zA-Z0-9._-]+$ 13 | // 14 | // WARNING: This value must not change between versions of your app, 15 | // otherwise users upgrading from older versions will see launch failures. 16 | const std::wstring NAME = L"WLinux"; 17 | 18 | // The title bar for the console window while the distribution is installing. 19 | const std::wstring WINDOW_TITLE = L"Pengwin"; 20 | 21 | // Create and configure a user account. 22 | bool CreateUser(std::wstring_view userName); 23 | 24 | // Query the UID of the user account. 25 | ULONG QueryUid(std::wstring_view userName); 26 | 27 | // Changes the default user in /etc/wsl.conf 28 | HRESULT ChangeDefaultUserInWslConf(std::wstring_view userName); 29 | } 30 | -------------------------------------------------------------------------------- /DistroLauncher/DistroLauncher.rc: -------------------------------------------------------------------------------- 1 | // Microsoft Visual C++ generated resource script. 2 | // 3 | #include "resource.h" 4 | 5 | #define APSTUDIO_READONLY_SYMBOLS 6 | ///////////////////////////////////////////////////////////////////////////// 7 | // 8 | // Generated from the TEXTINCLUDE 2 resource. 9 | // 10 | #include "winres.h" 11 | 12 | ///////////////////////////////////////////////////////////////////////////// 13 | #undef APSTUDIO_READONLY_SYMBOLS 14 | 15 | ///////////////////////////////////////////////////////////////////////////// 16 | // English (United States) resources 17 | 18 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 19 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 20 | 21 | #ifdef APSTUDIO_INVOKED 22 | ///////////////////////////////////////////////////////////////////////////// 23 | // 24 | // TEXTINCLUDE 25 | // 26 | 27 | 1 TEXTINCLUDE 28 | BEGIN 29 | "resource.h\0" 30 | END 31 | 32 | 2 TEXTINCLUDE 33 | BEGIN 34 | "#include ""winres.h""\r\n" 35 | "\0" 36 | END 37 | 38 | 3 TEXTINCLUDE 39 | BEGIN 40 | "\r\n" 41 | "\0" 42 | END 43 | 44 | #endif // APSTUDIO_INVOKED 45 | 46 | 47 | ///////////////////////////////////////////////////////////////////////////// 48 | // 49 | // Icon 50 | // 51 | 52 | // Icon with lowest ID value placed first to ensure application icon 53 | // remains consistent on all systems. 54 | IDI_ICON1 ICON ".\images\icon.ico" 55 | 56 | #endif // English (United States) resources 57 | ///////////////////////////////////////////////////////////////////////////// 58 | 59 | 60 | 61 | #ifndef APSTUDIO_INVOKED 62 | ///////////////////////////////////////////////////////////////////////////// 63 | // 64 | // Generated from the TEXTINCLUDE 3 resource. 65 | // 66 | 67 | 68 | ///////////////////////////////////////////////////////////////////////////// 69 | #endif // not APSTUDIO_INVOKED 70 | 71 | #include "messages.rc" 72 | 73 | -------------------------------------------------------------------------------- /DistroLauncher/DistroLauncher.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Header Files 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | Header Files 29 | 30 | 31 | Header Files 32 | 33 | 34 | Header Files 35 | 36 | 37 | 38 | 39 | Source Files 40 | 41 | 42 | Source Files 43 | 44 | 45 | Source Files 46 | 47 | 48 | Source Files 49 | 50 | 51 | Source Files 52 | 53 | 54 | 55 | 56 | Resource Files 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Resource Files 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /DistroLauncher/Helpers.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Microsoft. All rights reserved. 3 | // Licensed under the terms described in the LICENSE file in the root of this project. 4 | // 5 | 6 | #include "stdafx.h" 7 | 8 | namespace 9 | { 10 | HRESULT FormatMessageHelperVa(DWORD messageId, va_list vaList, std::wstring* message); 11 | HRESULT PrintMessageVa(DWORD messageId, va_list vaList); 12 | } 13 | 14 | std::wstring Helpers::GetUserInput(DWORD promptMsg, DWORD maxCharacters) 15 | { 16 | PrintMessage(promptMsg); 17 | const size_t bufferSize = maxCharacters + 1; 18 | const std::unique_ptr inputBuffer(new wchar_t[bufferSize]); 19 | std::wstring input; 20 | if (wscanf_s(L"%s", inputBuffer.get(), static_cast(bufferSize)) == 1) 21 | { 22 | input = inputBuffer.get(); 23 | } 24 | 25 | // Throw away any additional chracters that did not fit in the buffer. 26 | wchar_t wch; 27 | do 28 | { 29 | wch = getwchar(); 30 | } 31 | while ((wch != L'\n') && (wch != WEOF)); 32 | 33 | return input; 34 | } 35 | 36 | void Helpers::PrintErrorMessage(HRESULT error) 37 | { 38 | PWSTR buffer = nullptr; 39 | FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, 40 | nullptr, 41 | error, 42 | 0, 43 | (PWSTR)&buffer, 44 | 0, 45 | nullptr); 46 | 47 | PrintMessage(MSG_ERROR_CODE, error, buffer); 48 | if (buffer != nullptr) 49 | { 50 | HeapFree(GetProcessHeap(), 0, buffer); 51 | } 52 | } 53 | 54 | HRESULT Helpers::PrintMessage(DWORD messageId, ...) 55 | { 56 | va_list argList; 57 | va_start(argList, messageId); 58 | const auto hr = PrintMessageVa(messageId, argList); 59 | va_end(argList); 60 | return hr; 61 | } 62 | 63 | void Helpers::PromptForInput() 64 | { 65 | PrintMessage(MSG_PRESS_A_KEY); 66 | _getwch(); 67 | } 68 | 69 | namespace 70 | { 71 | HRESULT FormatMessageHelperVa(DWORD messageId, va_list vaList, std::wstring* message) 72 | { 73 | PWSTR buffer = nullptr; 74 | const auto written = FormatMessageW(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER, 75 | nullptr, 76 | messageId, 77 | 0, 78 | (PWSTR)&buffer, 79 | 10, 80 | &vaList); 81 | *message = buffer; 82 | if (buffer != nullptr) 83 | { 84 | HeapFree(GetProcessHeap(), 0, buffer); 85 | } 86 | 87 | return (written > 0) ? S_OK : HRESULT_FROM_WIN32(GetLastError()); 88 | } 89 | 90 | HRESULT PrintMessageVa(DWORD messageId, va_list vaList) 91 | { 92 | std::wstring message; 93 | const auto hr = FormatMessageHelperVa(messageId, vaList, &message); 94 | if (SUCCEEDED(hr)) 95 | { 96 | wprintf(L"%ls", message.c_str()); 97 | } 98 | 99 | return hr; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /DistroLauncher/Helpers.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Microsoft. All rights reserved. 3 | // Licensed under the terms described in the LICENSE file in the root of this project. 4 | // 5 | 6 | #pragma once 7 | 8 | #define UID_INVALID ((ULONG)-1) 9 | 10 | namespace Helpers 11 | { 12 | std::wstring GetUserInput(DWORD promptMsg, DWORD maxCharacters); 13 | void PrintErrorMessage(HRESULT hr); 14 | HRESULT PrintMessage(DWORD messageId, ...); 15 | void PromptForInput(); 16 | } 17 | -------------------------------------------------------------------------------- /DistroLauncher/RCa09240: -------------------------------------------------------------------------------- 1 | #line 1"C:\\Users\\Hayden\\OneDrive\\Documents\\GitHub\\Pengwin\\DistroLauncher\\DistroLauncher.rc" 2 | #line 1 3 | // Microsoft Visual C++ generated resource script. 4 | // 5 | #include "resource.h" 6 | #line 5 7 | #define APSTUDIO_READONLY_SYMBOLS 8 | ///////////////////////////////////////////////////////////////////////////// 9 | // 10 | // Generated from the TEXTINCLUDE 2 resource. 11 | // 12 | #include "winres.h" 13 | #line 12 14 | ///////////////////////////////////////////////////////////////////////////// 15 | #undef APSTUDIO_READONLY_SYMBOLS 16 | #line 15 17 | ///////////////////////////////////////////////////////////////////////////// 18 | // English (United States) resources 19 | #line 18 20 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 21 | LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 22 | #line 21 23 | #ifdef APSTUDIO_INVOKED 24 | ///////////////////////////////////////////////////////////////////////////// 25 | // 26 | // TEXTINCLUDE 27 | // 28 | #line 27 29 | 1 TEXTINCLUDE 30 | BEGIN 31 | "resource.h\0" 32 | END 33 | #line 32 34 | 2 TEXTINCLUDE 35 | BEGIN 36 | "#include ""winres.h""\r\n" 37 | "\0" 38 | END 39 | #line 38 40 | 3 TEXTINCLUDE 41 | BEGIN 42 | "\r\n" 43 | "\0" 44 | END 45 | #line 44 46 | #endif // APSTUDIO_INVOKED 47 | #line 47 48 | ///////////////////////////////////////////////////////////////////////////// 49 | // 50 | // Icon 51 | // 52 | #line 52 53 | // Icon with lowest ID value placed first to ensure application icon 54 | // remains consistent on all systems. 55 | IDI_ICON1 ICON ".\images\icon.ico" 56 | #line 56 57 | #endif // English (United States) resources 58 | ///////////////////////////////////////////////////////////////////////////// 59 | #line 61 60 | #ifndef APSTUDIO_INVOKED 61 | ///////////////////////////////////////////////////////////////////////////// 62 | // 63 | // Generated from the TEXTINCLUDE 3 resource. 64 | // 65 | #line 68 66 | ///////////////////////////////////////////////////////////////////////////// 67 | #endif // not APSTUDIO_INVOKED 68 | #line 71 69 | #include "messages.rc" 70 | -------------------------------------------------------------------------------- /DistroLauncher/WslApiLoader.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Microsoft. All rights reserved. 3 | // Licensed under the terms described in the LICENSE file in the root of this project. 4 | // 5 | 6 | #include "stdafx.h" 7 | #include "WslApiLoader.h" 8 | 9 | WslApiLoader::WslApiLoader(const std::wstring& distributionName) : 10 | _distributionName(distributionName) 11 | { 12 | _wslApiDll = LoadLibraryEx(L"wslapi.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32); 13 | if (_wslApiDll != nullptr) 14 | { 15 | _isDistributionRegistered = (WSL_IS_DISTRIBUTION_REGISTERED)GetProcAddress( 16 | _wslApiDll, "WslIsDistributionRegistered"); 17 | _registerDistribution = (WSL_REGISTER_DISTRIBUTION)GetProcAddress(_wslApiDll, "WslRegisterDistribution"); 18 | _configureDistribution = (WSL_CONFIGURE_DISTRIBUTION)GetProcAddress(_wslApiDll, "WslConfigureDistribution"); 19 | _launchInteractive = (WSL_LAUNCH_INTERACTIVE)GetProcAddress(_wslApiDll, "WslLaunchInteractive"); 20 | _launch = (WSL_LAUNCH)GetProcAddress(_wslApiDll, "WslLaunch"); 21 | _unRegisterDistribution = (WSL_UN_REGISTER_DISTRIBUTION)GetProcAddress(_wslApiDll, "WslUnregisterDistribution"); 22 | } 23 | } 24 | 25 | WslApiLoader::~WslApiLoader() 26 | { 27 | if (_wslApiDll != nullptr) 28 | { 29 | FreeLibrary(_wslApiDll); 30 | } 31 | } 32 | 33 | BOOL WslApiLoader::WslIsOptionalComponentInstalled() const 34 | { 35 | return _wslApiDll != nullptr && 36 | _isDistributionRegistered != nullptr && 37 | _registerDistribution != nullptr && 38 | _configureDistribution != nullptr && 39 | _launchInteractive != nullptr && 40 | _launch != nullptr; 41 | } 42 | 43 | BOOL WslApiLoader::WslIsDistributionRegistered() const 44 | { 45 | return _isDistributionRegistered(_distributionName.c_str()); 46 | } 47 | 48 | HRESULT WslApiLoader::WslRegisterDistribution() const 49 | { 50 | const auto hr = _registerDistribution(_distributionName.c_str(), L"install.tar.gz"); 51 | if (FAILED(hr)) 52 | { 53 | Helpers::PrintMessage(MSG_WSL_REGISTER_DISTRIBUTION_FAILED, hr); 54 | } 55 | 56 | return hr; 57 | } 58 | 59 | HRESULT WslApiLoader::WslUnregisterDistribution() const 60 | { 61 | const auto hr = _unRegisterDistribution(_distributionName.c_str()); 62 | if (FAILED(hr)) 63 | { 64 | wprintf(L"failed"); 65 | Helpers::PrintMessage(MSG_WSL_UN_REGISTER_DISTRIBUTION_FAILED, hr); 66 | } 67 | 68 | return hr; 69 | } 70 | 71 | HRESULT WslApiLoader::WslConfigureDistribution(ULONG defaultUID, WSL_DISTRIBUTION_FLAGS wslDistributionFlags) const 72 | { 73 | const auto hr = _configureDistribution(_distributionName.c_str(), defaultUID, wslDistributionFlags); 74 | if (FAILED(hr)) 75 | { 76 | Helpers::PrintMessage(MSG_WSL_CONFIGURE_DISTRIBUTION_FAILED, hr); 77 | } 78 | 79 | return hr; 80 | } 81 | 82 | HRESULT WslApiLoader::WslLaunchInteractive(PCWSTR command, BOOL useCurrentWorkingDirectory, DWORD* exitCode) const 83 | { 84 | const auto hr = _launchInteractive(_distributionName.c_str(), command, useCurrentWorkingDirectory, exitCode); 85 | if (FAILED(hr)) 86 | { 87 | Helpers::PrintMessage(MSG_WSL_LAUNCH_INTERACTIVE_FAILED, command, hr); 88 | } 89 | 90 | return hr; 91 | } 92 | 93 | HRESULT WslApiLoader::WslLaunch(PCWSTR command, BOOL useCurrentWorkingDirectory, HANDLE stdIn, HANDLE stdOut, 94 | HANDLE stdErr, HANDLE* process) const 95 | { 96 | const auto hr = _launch(_distributionName.c_str(), command, useCurrentWorkingDirectory, stdIn, stdOut, stdErr, 97 | process); 98 | if (FAILED(hr)) 99 | { 100 | Helpers::PrintMessage(MSG_WSL_LAUNCH_FAILED, command, hr); 101 | } 102 | 103 | return hr; 104 | } 105 | 106 | void WslApiLoader::SetDistributionName(const std::wstring_view& distributionName) 107 | { 108 | _distributionName = std::wstring(distributionName); 109 | } 110 | -------------------------------------------------------------------------------- /DistroLauncher/WslApiLoader.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Microsoft. All rights reserved. 3 | // Licensed under the terms described in the LICENSE file in the root of this project. 4 | // 5 | 6 | #pragma once 7 | #include 8 | 9 | // This error definition is present in the Spring Creators Update SDK. 10 | #ifndef ERROR_LINUX_SUBSYSTEM_NOT_PRESENT 11 | #define ERROR_LINUX_SUBSYSTEM_NOT_PRESENT 414L 12 | #endif // !ERROR_LINUX_SUBSYSTEM_NOT_PRESENT 13 | 14 | using WSL_IS_DISTRIBUTION_REGISTERED = BOOL(STDAPICALLTYPE*)(PCWSTR); 15 | using WSL_REGISTER_DISTRIBUTION = HRESULT(STDAPICALLTYPE*)(PCWSTR, PCWSTR); 16 | using WSL_UN_REGISTER_DISTRIBUTION = HRESULT(STDAPICALLTYPE*)(PCWSTR); 17 | using WSL_CONFIGURE_DISTRIBUTION = HRESULT(STDAPICALLTYPE*)(PCWSTR, ULONG, WSL_DISTRIBUTION_FLAGS); 18 | using WSL_GET_DISTRIBUTION_CONFIGURATION = HRESULT(STDAPICALLTYPE*)(PCWSTR, ULONG*, ULONG*, WSL_DISTRIBUTION_FLAGS*, 19 | PSTR**, ULONG*); 20 | using WSL_LAUNCH_INTERACTIVE = HRESULT(STDAPICALLTYPE*)(PCWSTR, PCWSTR, BOOL, DWORD*); 21 | using WSL_LAUNCH = HRESULT(STDAPICALLTYPE*)(PCWSTR, PCWSTR, BOOL, HANDLE, HANDLE, HANDLE, HANDLE*); 22 | 23 | class WslApiLoader 24 | { 25 | public: 26 | WslApiLoader(const std::wstring& distributionName); 27 | ~WslApiLoader(); 28 | 29 | BOOL WslIsOptionalComponentInstalled() const; 30 | 31 | BOOL WslIsDistributionRegistered() const; 32 | 33 | HRESULT WslRegisterDistribution() const; 34 | 35 | HRESULT WslUnregisterDistribution() const; 36 | 37 | HRESULT WslConfigureDistribution(ULONG defaultUID, 38 | WSL_DISTRIBUTION_FLAGS wslDistributionFlags) const; 39 | 40 | HRESULT WslLaunchInteractive(PCWSTR command, 41 | BOOL useCurrentWorkingDirectory, 42 | DWORD* exitCode) const; 43 | 44 | HRESULT WslLaunch(PCWSTR command, 45 | BOOL useCurrentWorkingDirectory, 46 | HANDLE stdIn, 47 | HANDLE stdOut, 48 | HANDLE stdErr, 49 | HANDLE* process) const; 50 | 51 | void SetDistributionName(const std::wstring_view& distributionName); 52 | 53 | private: 54 | std::wstring _distributionName; 55 | HMODULE _wslApiDll; 56 | WSL_IS_DISTRIBUTION_REGISTERED _isDistributionRegistered; 57 | WSL_REGISTER_DISTRIBUTION _registerDistribution; 58 | WSL_UN_REGISTER_DISTRIBUTION _unRegisterDistribution; 59 | WSL_CONFIGURE_DISTRIBUTION _configureDistribution; 60 | WSL_LAUNCH_INTERACTIVE _launchInteractive; 61 | WSL_LAUNCH _launch; 62 | }; 63 | 64 | extern WslApiLoader g_wslApi; 65 | -------------------------------------------------------------------------------- /DistroLauncher/images/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/DistroLauncher/images/icon.ico -------------------------------------------------------------------------------- /DistroLauncher/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/DistroLauncher/images/icon.png -------------------------------------------------------------------------------- /DistroLauncher/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/DistroLauncher/images/logo.png -------------------------------------------------------------------------------- /DistroLauncher/messages.mc: -------------------------------------------------------------------------------- 1 | LanguageNames = (English=0x409:MSG00409) 2 | 3 | MessageId=1001 SymbolicName=MSG_WSL_REGISTER_DISTRIBUTION_FAILED 4 | Language=English 5 | WslRegisterDistribution failed with error: 0x%1!x! 6 | . 7 | 8 | MessageId=1002 SymbolicName=MSG_WSL_CONFIGURE_DISTRIBUTION_FAILED 9 | Language=English 10 | WslGetDistributionConfiguration failed with error: 0x%1!x! 11 | . 12 | 13 | MessageId=1003 SymbolicName=MSG_WSL_LAUNCH_INTERACTIVE_FAILED 14 | Language=English 15 | WslLaunchInteractive %1 failed with error: 0x%2!x! 16 | . 17 | 18 | MessageId=1004 SymbolicName=MSG_WSL_LAUNCH_FAILED 19 | Language=English 20 | WslLaunch %1 failed with error: 0x%2!x! 21 | . 22 | 23 | MessageId=1005 SymbolicName=MSG_USAGE 24 | Language=English 25 | Launches or configures Pengwin Linux distribution. 26 | 27 | Usage: 28 | 29 | Launches the user's default shell in the user's home directory. 30 | 31 | --distribution, -d 32 | Launches the user's default shell in the user's home directory in the specified distribution. Suitable when you have more than one %1 installation. 33 | 34 | install [--root] 35 | Install the distribution and do not launch the shell when complete. 36 | --root 37 | Do not create a user account and leave the default user set to root. 38 | 39 | run, -c 40 | Run the provided command line in the current working directory. If no 41 | command line is provided, the default shell is launched. 42 | 43 | config [setting [value]] 44 | Configure settings for this distribution. 45 | Settings: 46 | --default-user 47 | Sets the default user to . This must be an existing user. 48 | unregister 49 | Unregisters the distribution and deletes the root filesystem. 50 | 51 | help 52 | Print usage information. 53 | . 54 | 55 | MessageId=1006 SymbolicName=MSG_STATUS_INSTALLING 56 | Language=English 57 | Unpacking Pengwin, this may take a few minutes... 58 | . 59 | 60 | MessageId=1007 SymbolicName=MSG_INSTALL_SUCCESS 61 | Language=English 62 | Installation successful! 63 | . 64 | 65 | MessageId=1008 SymbolicName=MSG_ERROR_CODE 66 | Language=English 67 | Error: 0x%1!x! %2 68 | . 69 | 70 | MessageId=1009 SymbolicName=MSG_ENTER_USERNAME 71 | Language=English 72 | Enter new UNIX username: %0 73 | . 74 | 75 | MessageId=1010 SymbolicName=MSG_CREATE_USER_PROMPT 76 | Language=English 77 | Please create a default Linux user account. The username does not need to match your Windows username. 78 | For more information, visit https://aka.ms/wslusers. 79 | . 80 | 81 | MessageId=1011 SymbolicName=MSG_PRESS_A_KEY 82 | Language=English 83 | Press any key to continue... 84 | . 85 | 86 | MessageId=1012 SymbolicName=MSG_MISSING_OPTIONAL_COMPONENT 87 | Language=English 88 | The Windows Subsystem for Linux optional component is not enabled. Please enable it and try again. 89 | See https://aka.ms/wslinstall for details. 90 | . 91 | 92 | MessageId=1013 SymbolicName=MSG_INSTALL_ALREADY_EXISTS 93 | Language=English 94 | The distribution installation has become corrupted. 95 | Please select Reset from App Settings or uninstall and reinstall the app. 96 | . 97 | 98 | MessageId=1014 SymbolicName=MSG_ENABLE_VIRTUALIZATION 99 | Language=English 100 | Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS. 101 | For information, please visit https://aka.ms/enablevirtualization. 102 | . 103 | 104 | MessageId=1015 SymbolicName=MSG_WSL_UN_REGISTER_DISTRIBUTION_FAILED 105 | Language=English 106 | WslUnRegisterDistribution failed with error: 0x%1!x! 107 | . 108 | 109 | -------------------------------------------------------------------------------- /DistroLauncher/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /DistroLauncher/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by DistroInstaller.rc 4 | // 5 | #define IDI_ICON1 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 103 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /DistroLauncher/stdafx.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Microsoft. All rights reserved. 3 | // Licensed under the terms described in the LICENSE file in the root of this project. 4 | // 5 | // stdafx.cpp : source file that includes just the standard includes 6 | // DistroInstaller.pch will be the pre-compiled header 7 | // stdafx.obj will contain the pre-compiled type information 8 | // 9 | 10 | #include "stdafx.h" 11 | 12 | // Reference any additional headers you need in stdafx.h and not in this file. 13 | -------------------------------------------------------------------------------- /DistroLauncher/stdafx.h: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright (C) Microsoft. All rights reserved. 3 | // Licensed under the terms described in the LICENSE file in the root of this project. 4 | // 5 | // stdafx.h : include file for standard system include files, 6 | // or project specific include files that are used frequently, but 7 | // are changed infrequently 8 | // 9 | 10 | #pragma once 11 | 12 | #include "targetver.h" 13 | 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include "DistributionInfo.h" 29 | #include "Helpers.h" 30 | #include "WslApiLoader.h" 31 | 32 | // Message strings compiled from .MC file. 33 | #include "messages.h" 34 | -------------------------------------------------------------------------------- /DistroLauncher/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // Including SDKDDKVer.h defines the highest available Windows platform. 4 | 5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 7 | 8 | #include 9 | -------------------------------------------------------------------------------- /LauncherTests/LauncherTests.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Debug 7 | x64 8 | 9 | 10 | Release 11 | x64 12 | 13 | 14 | 15 | {3fba1aee-63df-4490-82ae-74aaab1bfd80} 16 | Win32Proj 17 | 10.0 18 | Application 19 | v143 20 | Unicode 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | Create 35 | Create 36 | 37 | 38 | 39 | 40 | {ba627106-e5f7-46ee-b8d7-2d5a760f2fb2} 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Use 55 | pch.h 56 | Disabled 57 | X64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) 58 | EnableFastChecks 59 | MultiThreadedDebugDLL 60 | Level3 61 | 62 | 63 | true 64 | Console 65 | 66 | 67 | 68 | 69 | Use 70 | pch.h 71 | X64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 72 | MultiThreadedDLL 73 | Level3 74 | ProgramDatabase 75 | 76 | 77 | true 78 | Console 79 | true 80 | true 81 | 82 | 83 | 84 | 85 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /LauncherTests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /LauncherTests/pch.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // pch.cpp 3 | // Include the standard header and generate the precompiled header. 4 | // 5 | 6 | #include "pch.h" 7 | -------------------------------------------------------------------------------- /LauncherTests/pch.h: -------------------------------------------------------------------------------- 1 | // 2 | // pch.h 3 | // Header for standard system include files. 4 | // 5 | 6 | #pragma once 7 | 8 | #include "gtest/gtest.h" 9 | -------------------------------------------------------------------------------- /LauncherTests/test.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | void RunProcess(LPSTR cmdline) 12 | { 13 | // additional information 14 | STARTUPINFOA si; 15 | PROCESS_INFORMATION pi; 16 | 17 | // set the size of the structures 18 | ZeroMemory(&si, sizeof(si)); 19 | si.cb = sizeof(si); 20 | ZeroMemory(&pi, sizeof(pi)); 21 | 22 | // start the program up 23 | CreateProcessA 24 | ( 25 | nullptr, // the path 26 | cmdline, // Command line 27 | nullptr, // Process handle not inheritable 28 | nullptr, // Thread handle not inheritable 29 | FALSE, // Set handle inheritance to FALSE 30 | 0, // Opens file in a separate console 31 | nullptr, // Use parent's environment block 32 | nullptr, // Use parent's starting directory 33 | &si, // Pointer to STARTUPINFO structure 34 | &pi // Pointer to PROCESS_INFORMATION structure 35 | ); 36 | 37 | // Wait until child process exits. 38 | WaitForSingleObject(pi.hProcess, INFINITE); 39 | 40 | // Close process and thread handles. 41 | CloseHandle(pi.hProcess); 42 | CloseHandle(pi.hThread); 43 | } 44 | 45 | TEST(TestCaseName, TestName) 46 | { 47 | DWORD exitCode; 48 | char buff[255]; 49 | _sprintf_p(buff, _countof(buff), 50 | "wsl.exe -d WLinux -u root -- if [ $(grep -c \"\\[user\\]\" /etc/wsl.conf) -eq \"0\" ]; then echo -e \"\\n[user]\\ndefault=%1$s\">>/etc/wsl.conf; else sed -i \"s/\\(default=\\)\\(.*\\)/\\1%1$s/\" /etc/wsl.conf ; fi", 51 | "userName"); 52 | 53 | printf(buff); 54 | 55 | RunProcess(buff); 56 | 57 | EXPECT_EQ(1, 1); 58 | EXPECT_TRUE(true); 59 | } 60 | -------------------------------------------------------------------------------- /PRIVACY.md: -------------------------------------------------------------------------------- 1 | Neither Pengwin or Whitewater Foundtry, Ltd. Co. collects any personal or machine-identifying information with the exception of the following: 2 | 3 | - If you submit logs or errors to GitHub they may contain personal or machine-identifying information. Please check and remove any personal or machine-identifying information you do not wish to be shared publicly before submitting to GitHub. See a link to the GitHub Privacy Policy below. 4 | 5 | - Whitewater Foundtry, Ltd. Co. sees very general country-of-purchase statistics, age, and gender demographics supplied by the Microsoft Store on the Microsoft Partner Dashboard. Whitewater Foundry, Ltd. Co. may use this information to improve international support, target advertising, and for other promotional purposes. 6 | 7 | - Whitewater Foundtry, Ltd. Co. sees Pengwin crash data from the Pengwin launcher, including a stack trace, memory dump, version/build information, device name and type, running processes, and other potentially personally-identifying and machine-identifying information, but only when Windows is configured to provide Full diagnostic data. We investigate these crashes and forward to Microsoft InfoSec Ops Center and the WSL team at Microsoft for further analysis. You may disable Full diagnostic data collection by following the instructions here: https://privacy.microsoft.com/en-us/windows-10-feedback-diagnostics-and-privacy, via Group Policy, or with a third-party tool such as: https://www.oo-software.com/en/shutup10. 8 | 9 | - Whitewater Foundtry, Ltd. Co. does not see crash data from Linux applications or applications running inside the Pengwin environment, unless they happen to be running when the Pengwin launcher crashes (see above). 10 | 11 | - We log our apt repository data usage in the abstract. Machine-identifying information may be temporarily cached but is not written to disk. 12 | 13 | - We log and write suspected security breaches to disk. 14 | 15 | - We also use web services and they collect information. You may see their privacy policies here: 16 | 17 | GitHub Privacy Policy 18 | https://help.github.com/articles/github-privacy-statement/ 19 | 20 | Microsoft Privacy Policy 21 | https://privacy.microsoft.com/en-us/privacystatement 22 | 23 | Debian Privacy Policy 24 | https://www.debian.org/legal/privacy 25 | 26 | Vultr Privacy Policy 27 | https://www.vultr.com/legal/privacy/ 28 | 29 | CloudFlare Privacy Policy 30 | https://www.cloudflare.com/privacypolicy/ 31 | 32 | wslutilities 33 | https://github.com/wslutilities/wslu/ 34 | -------------------------------------------------------------------------------- /Pengwin/Assets/background1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Assets/background1.png -------------------------------------------------------------------------------- /Pengwin/Assets/background2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Assets/background2.png -------------------------------------------------------------------------------- /Pengwin/Assets/pengwin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Assets/pengwin.png -------------------------------------------------------------------------------- /Pengwin/Images/BadgeLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/BadgeLogo.scale-100.png -------------------------------------------------------------------------------- /Pengwin/Images/BadgeLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/BadgeLogo.scale-125.png -------------------------------------------------------------------------------- /Pengwin/Images/BadgeLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/BadgeLogo.scale-150.png -------------------------------------------------------------------------------- /Pengwin/Images/BadgeLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/BadgeLogo.scale-200.png -------------------------------------------------------------------------------- /Pengwin/Images/BadgeLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/BadgeLogo.scale-400.png -------------------------------------------------------------------------------- /Pengwin/Images/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/LargeTile.scale-100.png -------------------------------------------------------------------------------- /Pengwin/Images/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/LargeTile.scale-125.png -------------------------------------------------------------------------------- /Pengwin/Images/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/LargeTile.scale-150.png -------------------------------------------------------------------------------- /Pengwin/Images/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/LargeTile.scale-200.png -------------------------------------------------------------------------------- /Pengwin/Images/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/LargeTile.scale-400.png -------------------------------------------------------------------------------- /Pengwin/Images/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SmallTile.scale-100.png -------------------------------------------------------------------------------- /Pengwin/Images/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SmallTile.scale-125.png -------------------------------------------------------------------------------- /Pengwin/Images/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SmallTile.scale-150.png -------------------------------------------------------------------------------- /Pengwin/Images/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SmallTile.scale-200.png -------------------------------------------------------------------------------- /Pengwin/Images/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SmallTile.scale-400.png -------------------------------------------------------------------------------- /Pengwin/Images/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /Pengwin/Images/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /Pengwin/Images/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /Pengwin/Images/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Pengwin/Images/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /Pengwin/Images/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /Pengwin/Images/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /Pengwin/Images/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /Pengwin/Images/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Pengwin/Images/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /Pengwin/Images/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /Pengwin/Images/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /Pengwin/Images/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /Pengwin/Images/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /Pengwin/Images/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /Pengwin/Images/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /Pengwin/Images/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /Pengwin/Images/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /Pengwin/Images/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /Pengwin/Images/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Pengwin/Images/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/Pengwin/Images/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /Pengwin/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 10 | 11 | 15 | 16 | 17 | Pengwin 18 | Whitewater Foundry 19 | Images\StoreLogo.png 20 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 36 | 42 | 45 | 46 | 47 | 48 | 49 | 50 | 52 | 53 | 54 | 55 | 56 | 57 | 61 | 62 | 63 | 67 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 81 | 87 | 90 | 91 | 92 | 93 | 94 | 95 | 97 | 98 | 99 | 100 | 101 | 105 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /Pengwin/Pengwin.wapproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15.0 5 | 6 | 7 | 8 | Debug 9 | x64 10 | 11 | 12 | Release 13 | x64 14 | 15 | 16 | Debug 17 | ARM64 18 | 19 | 20 | Release 21 | ARM64 22 | 23 | 24 | Debug 25 | AnyCPU 26 | 27 | 28 | Release 29 | AnyCPU 30 | 31 | 32 | 33 | $(MSBuildExtensionsPath)\Microsoft\DesktopBridge\ 34 | 35 | 36 | 37 | 4175daa1-10e2-45bf-88bd-6577af555b1b 38 | 10.0.22000.0 39 | 10.0.17763.0 40 | en-US 41 | True 42 | ..\DistroLauncher\DistroLauncher.vcxproj 43 | False 44 | SHA256 45 | False 46 | True 47 | x64|arm64 48 | 0 49 | http://timestamp.sectigo.com/ 50 | StoreAndSideload 51 | F7D10FD57CCCB9868CFA8576D3E169369A922660 52 | 53 | 54 | Always 55 | 56 | 57 | Always 58 | 59 | 60 | Always 61 | 62 | 63 | Always 64 | 65 | 66 | Always 67 | 68 | 69 | Always 70 | 71 | 72 | 73 | Designer 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | true 145 | install.tar.gz 146 | 147 | 148 | true 149 | Public\Fragments\pengwin.json 150 | 151 | 152 | 153 | 154 | true 155 | install.tar.gz 156 | 157 | 158 | true 159 | Public\Fragments\pengwin.json 160 | 161 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /PengwinUI/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | -------------------------------------------------------------------------------- /PengwinUI/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | using Windows.ApplicationModel.Activation; 4 | using Windows.UI.Notifications; 5 | using Windows.UI.Xaml; 6 | using Microsoft.Services.Store.Engagement; 7 | 8 | namespace PengwinUI 9 | { 10 | /// 11 | /// Provides application-specific behavior to supplement the default Application class. 12 | /// 13 | sealed partial class App : Application 14 | { 15 | /// 16 | /// Initializes the singleton application object. This is the first line of authored code 17 | /// executed, and as such is the logical equivalent of main() or WinMain(). 18 | /// 19 | public App() 20 | { 21 | InitializeComponent(); 22 | } 23 | 24 | protected override async void OnActivated(IActivatedEventArgs args) 25 | { 26 | base.OnActivated(args); 27 | 28 | if (args.Kind == ActivationKind.Protocol) 29 | { 30 | await SetupPushNotifications(); 31 | Exit(); 32 | } 33 | } 34 | 35 | private static async Task SetupPushNotifications() 36 | { 37 | var engagementManager = StoreServicesEngagementManager.GetDefault(); 38 | if (engagementManager != null) 39 | { 40 | await engagementManager.RegisterNotificationChannelAsync(); 41 | } 42 | } 43 | 44 | protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args) 45 | { 46 | base.OnBackgroundActivated(args); 47 | 48 | // ReSharper disable once ConvertIfStatementToSwitchStatement 49 | if (args.TaskInstance.TriggerDetails is ToastNotificationActionTriggerDetail toastActivationArgs) 50 | { 51 | var engagementManager = StoreServicesEngagementManager.GetDefault(); 52 | var originalArgs = engagementManager?.ParseArgumentsAndTrackAppLaunch( 53 | toastActivationArgs.Argument); 54 | 55 | // Use the originalArgs variable to access the original arguments 56 | // that were passed to the app. 57 | } 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /PengwinUI/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinUI/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /PengwinUI/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinUI/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /PengwinUI/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinUI/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /PengwinUI/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinUI/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /PengwinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /PengwinUI/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinUI/Assets/StoreLogo.png -------------------------------------------------------------------------------- /PengwinUI/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinUI/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /PengwinUI/MainPage.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /PengwinUI/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices.WindowsRuntime; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | using Windows.UI.Xaml.Controls.Primitives; 11 | using Windows.UI.Xaml.Data; 12 | using Windows.UI.Xaml.Input; 13 | using Windows.UI.Xaml.Media; 14 | using Windows.UI.Xaml.Navigation; 15 | 16 | // The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 17 | 18 | namespace PengwinUI 19 | { 20 | /// 21 | /// An empty page that can be used on its own or navigated to within a Frame. 22 | /// 23 | public sealed partial class MainPage : Page 24 | { 25 | public MainPage() 26 | { 27 | this.InitializeComponent(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /PengwinUI/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | PengwinUI 18 | hcram 19 | Assets\StoreLogo.png 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /PengwinUI/PengwinUI.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | x86 7 | {4F3B346B-175D-46BC-B233-92D0B25D5576} 8 | AppContainerExe 9 | Properties 10 | PengwinUI 11 | PengwinUI 12 | en-US 13 | UAP 14 | 10.0.19041.0 15 | 10.0.17763.0 16 | 14 17 | 512 18 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 19 | true 20 | false 21 | 22 | 23 | true 24 | bin\ARM64\Debug\ 25 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 26 | ;2008 27 | full 28 | ARM64 29 | false 30 | prompt 31 | true 32 | true 33 | 34 | 35 | bin\ARM64\Release\ 36 | TRACE;NETFX_CORE;WINDOWS_UWP 37 | true 38 | ;2008 39 | pdbonly 40 | ARM64 41 | false 42 | prompt 43 | true 44 | true 45 | 46 | 47 | true 48 | bin\x64\Debug\ 49 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 50 | ;2008 51 | full 52 | x64 53 | false 54 | prompt 55 | true 56 | 57 | 58 | bin\x64\Release\ 59 | TRACE;NETFX_CORE;WINDOWS_UWP 60 | true 61 | ;2008 62 | pdbonly 63 | x64 64 | false 65 | prompt 66 | true 67 | true 68 | 69 | 70 | PackageReference 71 | 72 | 73 | 74 | App.xaml 75 | 76 | 77 | MainPage.xaml 78 | 79 | 80 | 81 | 82 | 83 | Designer 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | MSBuild:Compile 99 | Designer 100 | 101 | 102 | MSBuild:Compile 103 | Designer 104 | 105 | 106 | 107 | 108 | 6.2.14 109 | 110 | 111 | 10.2307.3001 112 | 113 | 114 | 115 | 116 | Microsoft Engagement Framework 117 | 118 | 119 | Visual C++ 2015-2019 Runtime for Universal Windows Platform Apps 120 | 121 | 122 | 123 | 14.0 124 | 125 | 126 | 133 | -------------------------------------------------------------------------------- /PengwinUI/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("PengwinUI")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("PengwinUI")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /PengwinUI/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /PengwinW/PengwinW.cpp: -------------------------------------------------------------------------------- 1 | // PengwinW.cpp : Defines the entry point for the application. 2 | // 3 | 4 | #include "framework.h" 5 | #include "PengwinW.h" 6 | #include 7 | #include 8 | 9 | using namespace std; 10 | 11 | void RunProcess(LPWSTR cmdline) 12 | { 13 | // additional information 14 | STARTUPINFOW si; 15 | PROCESS_INFORMATION pi; 16 | 17 | // set the size of the structures 18 | ZeroMemory(&si, sizeof si); 19 | si.cb = sizeof si; 20 | ZeroMemory(&pi, sizeof pi); 21 | 22 | si.dwFlags = STARTF_USESHOWWINDOW; 23 | si.wShowWindow = SW_HIDE; 24 | 25 | // start the program up 26 | CreateProcessW 27 | ( 28 | nullptr, // the path 29 | cmdline, // Command line 30 | nullptr, // Process handle not inheritable 31 | nullptr, // Thread handle not inheritable 32 | FALSE, // Set handle inheritance to FALSE 33 | 0, // Opens file in a separate console 34 | nullptr, // Use parent's environment block 35 | nullptr, // Use parent's starting directory 36 | &si, // Pointer to STARTUPINFO structure 37 | &pi // Pointer to PROCESS_INFORMATION structure 38 | ); 39 | 40 | // Wait until child process exits. 41 | //WaitForSingleObject(pi.hProcess, INFINITE); 42 | 43 | // Close process and thread handles. 44 | CloseHandle(pi.hProcess); 45 | CloseHandle(pi.hThread); 46 | } 47 | 48 | int APIENTRY wWinMain(_In_ HINSTANCE hInstance, 49 | _In_opt_ HINSTANCE hPrevInstance, 50 | _In_ LPWSTR lpCmdLine, 51 | _In_ int nCmdShow) 52 | { 53 | wchar_t buff[1024]; 54 | 55 | GetModuleFileNameW(nullptr, 56 | buff, _countof(buff)); 57 | 58 | PathCchRemoveFileSpec(buff, _countof(buff)); 59 | PathCchRemoveFileSpec(buff, _countof(buff)); 60 | PathCchAppendEx(buff, _countof(buff), L"DistroLauncher", PATHCCH_ALLOW_LONG_PATHS); 61 | PathCchAppendEx(buff, _countof(buff), L"pengwin.exe", PATHCCH_ALLOW_LONG_PATHS); 62 | 63 | wcscat_s(buff, _countof(buff), L" "); 64 | wcscat_s(buff, _countof(buff), lpCmdLine); 65 | 66 | RunProcess(buff); 67 | 68 | return 0; 69 | } 70 | -------------------------------------------------------------------------------- /PengwinW/PengwinW.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "resource.h" 4 | -------------------------------------------------------------------------------- /PengwinW/PengwinW.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinW/PengwinW.ico -------------------------------------------------------------------------------- /PengwinW/PengwinW.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/PengwinW/PengwinW.rc -------------------------------------------------------------------------------- /PengwinW/PengwinW.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | ARM64 7 | 8 | 9 | Release 10 | ARM64 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 16.0 23 | Win32Proj 24 | {d666189e-1ddb-4059-b362-213824968e68} 25 | PengwinW 26 | 10.0 27 | 28 | 29 | 30 | Application 31 | true 32 | v143 33 | Unicode 34 | 35 | 36 | Application 37 | true 38 | v143 39 | Unicode 40 | 41 | 42 | Application 43 | false 44 | v143 45 | true 46 | Unicode 47 | 48 | 49 | Application 50 | false 51 | v143 52 | true 53 | Unicode 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | true 75 | 76 | 77 | true 78 | 79 | 80 | false 81 | 82 | 83 | false 84 | 85 | 86 | 87 | Level3 88 | true 89 | _DEBUG;_WINDOWS;%(PreprocessorDefinitions) 90 | true 91 | 92 | 93 | Windows 94 | true 95 | pathcch.lib;Shlwapi.lib;%(AdditionalDependencies) 96 | 97 | 98 | 99 | 100 | Level3 101 | true 102 | _DEBUG;_WINDOWS;%(PreprocessorDefinitions) 103 | true 104 | 105 | 106 | Windows 107 | true 108 | pathcch.lib;Shlwapi.lib;%(AdditionalDependencies) 109 | 110 | 111 | 112 | 113 | Level3 114 | true 115 | true 116 | true 117 | NDEBUG;_WINDOWS;%(PreprocessorDefinitions) 118 | true 119 | Speed 120 | 121 | 122 | Windows 123 | true 124 | true 125 | true 126 | pathcch.lib;Shlwapi.lib;%(AdditionalDependencies) 127 | 128 | 129 | 130 | 131 | Level3 132 | true 133 | true 134 | true 135 | NDEBUG;_WINDOWS;%(PreprocessorDefinitions) 136 | true 137 | Speed 138 | 139 | 140 | Windows 141 | true 142 | true 143 | true 144 | pathcch.lib;Shlwapi.lib;%(AdditionalDependencies) 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | -------------------------------------------------------------------------------- /PengwinW/PengwinW.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Header Files 20 | 21 | 22 | Header Files 23 | 24 | 25 | Header Files 26 | 27 | 28 | Header Files 29 | 30 | 31 | 32 | 33 | Source Files 34 | 35 | 36 | 37 | 38 | Resource Files 39 | 40 | 41 | 42 | 43 | Resource Files 44 | 45 | 46 | -------------------------------------------------------------------------------- /PengwinW/Resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by PengwinW.rc 4 | // 5 | #define IDC_MYICON 2 6 | #define IDD_PENGWINW_DIALOG 102 7 | #define IDS_APP_TITLE 103 8 | #define IDI_PENGWINW 107 9 | #define IDI_SMALL 108 10 | #define IDC_PENGWINW 109 11 | #define IDR_MAINFRAME 128 12 | #define IDC_STATIC -1 13 | 14 | // Next default values for new objects 15 | // 16 | #ifdef APSTUDIO_INVOKED 17 | #ifndef APSTUDIO_READONLY_SYMBOLS 18 | #define _APS_NO_MFC 1 19 | #define _APS_NEXT_RESOURCE_VALUE 129 20 | #define _APS_NEXT_COMMAND_VALUE 32771 21 | #define _APS_NEXT_CONTROL_VALUE 1000 22 | #define _APS_NEXT_SYMED_VALUE 110 23 | #endif 24 | #endif 25 | -------------------------------------------------------------------------------- /PengwinW/framework.h: -------------------------------------------------------------------------------- 1 | // header.h : include file for standard system include files, 2 | // or project specific include files 3 | // 4 | 5 | #pragma once 6 | 7 | #include "targetver.h" 8 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 9 | // Windows Header Files 10 | #include 11 | // C RunTime Header Files 12 | #include 13 | #include 14 | #include 15 | #include 16 | -------------------------------------------------------------------------------- /PengwinW/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // // Including SDKDDKVer.h defines the highest available Windows platform. 4 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and 5 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. 6 | #include 7 | -------------------------------------------------------------------------------- /README.ja.md: -------------------------------------------------------------------------------- 1 | ### 備考 2 | Pengwin の README.md を翻訳したものです。 3 | 現在の翻訳は、d98d300b6ee79c909747dee26be432032e5031ef を元に作成されています。新しい翻訳に追従や翻訳の修正に関する Pull Request をお待ちしています。 4 | 5 | # Pengwin 6 | Pengwin は最初の WSL 用に最適化された Debian® ベースの Linux® ディストリビューションで、オープンソースソフトウェアスタートアップ [Whitewater Foundry](https://whitewaterfoundry.com) で誕生しました。 7 | 8 | (企業ユーザーの方は、 [Pengwin Enterprise](https://github.com/WhitewaterFoundry/WLE) もご覧ください。) 9 | 10 | 11 | 12 | 13 | Store badge 14 | 15 | - [English](README.md) 16 | - [简体中文](README.zh-hans.md) 17 | - [繁體中文](README.zh-hant.md) 18 | 19 | [![Twitter Follow](https://img.shields.io/twitter/follow/espadrine.svg?label=Follow&style=social)](https://twitter.com/PengwinApp) 20 | [![VK Follow](https://img.shields.io/badge/VK-Pengwin-4c75a3.svg)](https://vk.com/Pengwin) 21 | [![LINE Follow](https://img.shields.io/badge/LINE-Pengwin-00c300.svg)](https://line.me/R/ti/p/%40yck9322o) 22 | [![Telegram](https://img.shields.io/badge/Telegram-wslinux-0088cc.svg)](https://t.me/wslinux) 23 | 24 | 25 | ## 機能 26 | 27 | - Pengwin は Microsoft Research によって考案されたオープンソーステクノロジーと、Debian プロジェクトによって収集された Linux エコシステム上に構築された Windows10 向けの Linux 環境です。 28 | - また、Pengwin は、Microsoft が Windows 10 及び Windows Server 2019 上で提供する機能である [Windows® Subsystem for Linux](https://github.com/sirredbeard/Awesome-WSL) 向けに、事前構成と最適化が行われた最初の Linux ディストリビューションです。 29 | - Pengwin には WSL と Windows 10 間の対話のためのオープンソースユーティリティ集である [wslu](https://github.com/wslutilities/wslu) が含まれています。 30 | - `$ Pengwin-setup` からアクセスできる Pengwin-setup ツールを利用して、ユーザーは下記の設定を行えます。 31 | - 言語及びキーボードの設定 32 | - シェルの追加: csh、 zsh ( [oh-my-zsh](https://ohmyz.sh/) を含む )、 および [fish](https://fishshell.com/) ( [oh-my-fish](https://github.com/oh-my-fish/oh-my-fish) を含む ) 33 | - テキストエディタの選択: [emacs](https://www.gnu.org/software/emacs/)、 [neovim](https://neovim.io/)、および [Visual Studio Code](https://code.visualstudio.com/) 34 | - 開発環境の展開: [NodeJS](https://nodejs.org/) ( n 、 npm 、 yarn を含む )、 Python 3.7 ( pip を含む )、 [Ruby](http://www.ruby-lang.org/) ( rbenv を含む )、 [Rust](https://www.rust-lang.org/) ( rustup インストーラ経由 )、および [Go](https://golang.org/) 35 | - [PowerShell](https://github.com/PowerShell/PowerShell) および Azureのコマンドラインツールである [azure-cli](https://github.com/Azure/azure-cli) による Microsoft Windows と Azure の管理 36 | - Windows Explorer のシェル拡張の有効化/無効化 37 | - 実験的な GUI の設定: Linux アプリケーション向けの [Windows 10 theme](https://github.com/B00merang-Project/Windows-10) や HiDPI サポート、および CJK 言語の入力 38 | - Windows 上で動作する Docker へのセキュアなアクセスの作成 39 | - Pengwin では [多くの一般的な Linux のグラフィカルアプリケーション](https://github.com/ethanhs/WSL-Programs) について、ディスプレイの設定と libGL の設定が不要です。 ( グラフィカルアプリケーションの動作には Windows 上で動作する [X410](http://afflnk.microsoft.com/c/1291904/459838/7593?prodsku=9NLP712ZMN9Q&u=https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fstore%2Fp%2Fx410%2F9NLP712ZMN9Q) 等の X クライアントが必要です。) 40 | - apt パッケージマネージシステムを用いて、[拡張 Debian リポジトリ](https://packages.debian.org/testing/) および Debian 向けのサードパーティリポジトリから、27,790以上のオープンソースパッケージをインストール可能です。 41 | - Pengwin は WSL で利用可能な他の主要 Linux ディストリビューション よりも早く、 WSL 依存のバグに対するパッチが提供されます。 42 | - Systemd 等、いくつかの不要なパッケージは、イメージサイズの縮小と安定性の向上のため、ベースのイメージからは削除されています。 43 | - 今後も、コミュニティからのフィードバックに基づいて新しい機能を開発していきます。それらの詳細は [開発中の機能 (英語)](https://github.com/WhitewaterFoundry/Pengwin/pulls) や、 [コミュニティの投稿 (英語)](https://github.com/WhitewaterFoundry/Pengwin/issues) をご確認ください。また、Pengwin では開発の奨励金制度を用意しております。詳細については [earn paid grants (英語)](CONTRIBUTING.md) をご確認ください。 44 | 45 | 注:上記の機能は、現在 Microsoft Store でリリースされている version 1.1.28 に基づいていおります。ご自身で、 Pengwin のビルドを行い、最新の機能のテストやデバッグに貢献することも可能です。 46 | 47 | ## サポートについて 48 | 49 | Microsoft Store での Pengwin の売り上げは、新機能の追加・テスト・リリースや WSL に関するセキュリティの検証、ユーザーサポートに充てられます。 50 | ユーザーサポートはベストエフォート形式で行われます。問題が発生した場合は、次の手順を試みてください。 51 | 52 | - まず、[Pengwin Issues page (英語)](https://github.com/whitewaterfoundry/Pengwin/issues) をご確認ください。 53 | - 次に、[General WSL Issues page (英語)](https://github.com/Microsoft/WSL/issues) をご確認ください。 54 | - さらに、 Microsoft が公式で提供する [Troubleshooting Windows Subsystem for Linux (英語)](https://docs.microsoft.com/en-us/windows/wsl/troubleshooting) をご確認ください。 55 | - 上記の手順で問題の解決が見られない場合は、[bug report](https://github.com/WhitewaterFoundry/Pengwin/issues/new?template=bug_report.md) に投稿してください。我々が最善を尽くして問題の解決にあたります。我々は多くの問題について、おおむね数時間で返信しております。お手数をおかけしますが、ご了承のほどよろしくお願いいたします。 56 | 57 | 58 | ## 他の Pengwin に関する資料 59 | 60 | - [LICENSE.md](LICENSE.md) 61 | - [BUILDING.md](BUILDING.md) 62 | - [PRIVACY.md](PRIVACY.md) 63 | - [ROADMAP.md](ROADMAP.md) 64 | - [CONTRIBUTING.md](CONTRIBUTING.md) 65 | 66 | ## 関係資料 67 | 68 | - [Awesome Windows Subsystem for Linux](https://github.com/sirredbeard/Awesome-WSL) 69 | - [Awesome UNIX](https://github.com/sirredbeard/Awesome-UNIX) 70 | - [wslu](https://github.com/wslutilities/wslu) 71 | 72 | ## メンバー 73 | 74 | ### 主要メンバー 75 | 76 | - [Hayden Barnes](https://github.com/sirredbeard) 77 | - [Patrick Wu](https://github.com/patrick330602) 78 | - [Carlos Rafael Ramirez](https://github.com/crramirez) 79 | - [Kim Bradley](https://github.com/grufwub) 80 | 81 | ### コントリビュータ 82 | 83 | - [Andrew Fehr](https://github.com/ThatWeirdAndrew) 84 | 85 | ### テストおよびサポート 86 | 87 | - [Jack Mangano](https://thechipcollective.com/) 88 | - [Nuno do Carmo](http://wslcorsair.blogspot.com/) 89 | 90 | Store badge 91 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pengwin 2 | 3 | The first Linux® distribution optimized for [WSL](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux). Based on Debian®. From open-source software startup [Whitewater Foundry](https://whitewaterfoundry.com). Formerly WLinux. 4 | 5 | 6 | 7 | Store badge 8 | 9 | - [日本語](README.ja.md) 10 | - [简体中文](README.zh-hans.md) 11 | - [繁體中文](README.zh-hant.md) 12 | 13 | See the [Pengwin blog](https://www.pengwin.dev/blog) and [@PengwinLinux](https://twitter.com/PengwinLinux) for up-to-date news about Pengwin. 14 | 15 | [![Twitter Follow](https://img.shields.io/twitter/follow/espadrine.svg?label=Follow&style=social)](https://twitter.com/PengwinLinux) 16 | 17 | If you are a commercial, government, or educational institution, you may like to check out our enterprise-focused distribution, [Pengwin Enterprise](https://github.com/WhitewaterFoundry/Pengwin-Enterprise). 18 | 19 | ## Features 20 | 21 | - Pengwin is a Linux environment for Windows 10 built on open-source technology conceived by Microsoft Research and the Linux ecosystem curated by the Debian project. 22 | - Pengwin is also the first Linux distribution pre-configured and optimized to run specifically on [Windows® Subsystem for Linux](https://github.com/sirredbeard/Awesome-WSL), a Microsoft-supported feature of Windows 10 and Windows Server 2019. 23 | - Pengwin includes [wslu](https://github.com/wslutilities/wslu), a set of useful open-source utilities for interacting between WSL and Windows 10. 24 | - A custom Pengwin-setup tool, accessible via `$ pengwin-setup` allows new Pengwin users to get started on Linux immediately: 25 | - Change language and keyboard settings. 26 | - Select optional shells: csh, zsh (with [oh-my-zsh](https://ohmyz.sh/)), and [fish](https://fishshell.com/) (with [oh-my-fish](https://github.com/oh-my-fish/oh-my-fish)). 27 | - Choose text editors: [emacs](https://www.gnu.org/software/emacs/), [neovim](https://neovim.io/), and [Visual Studio Code](https://code.visualstudio.com/). 28 | - Unpack your favorite development environment [NodeJS](https://nodejs.org/) (with n, npm, and/or yarn), Python 3.7 (with pip), [Ruby](http://www.ruby-lang.org/) (via rbenv), [Rust](https://www.rust-lang.org/) (via rustup installer) and [Go](https://golang.org/). 29 | - Manage your Microsoft Windows and Azure deployments with [PowerShell](https://github.com/PowerShell/PowerShell) and [azure-cli](https://github.com/Azure/azure-cli), command line tools for Azure. 30 | - Enable/disable Windows Explorer shell integration. 31 | - Configure experimental GUI settings, including a [Windows 10 theme](https://github.com/B00merang-Project/Windows-10) for your Linux applications, HiDPI support and international input methods. 32 | - Create a secure bridge to Docker running on Windows. 33 | - Support for [many Linux graphical applications](https://github.com/ethanhs/WSL-Programs) with no need to configure display or libGL in Pengwin. (Requires a Windows-based X server, such as [X410](http://afflnk.microsoft.com/c/1291904/459838/7593?prodsku=9NLP712ZMN9Q&u=https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fstore%2Fp%2Fx410%2F9NLP712ZMN9Q).) 34 | - Install over 27,790 open source packages via the apt package management system from the [expansive Debian repositories](https://packages.debian.org/testing/) and any third-party Debian-compatible repositories from outside projects. 35 | - Pengwin provides faster patching for WSL-specific bugs than any upstream Linux distro available on WSL. 36 | - New features are [actively developed](https://github.com/WhitewaterFoundry/Pengwin/pulls) based on [community input](https://github.com/WhitewaterFoundry/Pengwin/issues). Learn how you can [earn paid grants](CONTRIBUTING.md) improving Pengwin. 37 | 38 | ## Requirements 39 | 40 | - Windows 10 41 | - Minimum 1709/16299 42 | - Recommended 1809/17763 43 | - Windows Subsystem for Linux Enabled 44 | - To enable Windows Subsystem for Linux open PowerShell as Administrator and run: 45 | ``` 46 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 47 | ``` 48 | 49 | ## Updates 50 | 51 | To check for updates, use the apt package management system. 52 | 53 | 1. Check for the latest updates: `$ sudo apt-get update` 54 | 2. Apply the latest updates: `$ sudo apt-get upgrade` 55 | 56 | ## Versioning 57 | 58 | Pengwin is rolling release. Debian packages, pengwin-base, and pengwin-setup receive ongoing updates. Version numbers are used to track long-term progress on bugs and features, e.g. 1.2, and new versions are released every 2-3 months. New builds are regularly built and uploaded to the Store. The third build uploaded during 1.2.x window will be marked 1.2.3. 59 | 60 | To check your version of pengwin-setup: `$ apt-cache policy pengwin-setup` 61 | 62 | To check your verison of pengwin-base: `$ apt-cache policy pengwin-base` 63 | 64 | ## Obtaining Support 65 | 66 | Purchases of Pengwin in the Microsoft Store pay for a team of open source indie developers to add new features, test and release builds, evaluate WSL-related CVEs, and provide user support. User support is provided on a best effort basis. Most issues can be resolved by following the steps below. 67 | 68 | - First, search for your issue on the Pengwin Issues page [here](https://github.com/whitewaterfoundry/Pengwin/issues). 69 | - Next, search for your issue on the general WSL Issues page [here](https://github.com/Microsoft/WSL/issues). 70 | - Then consult the official [Troubleshooting Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/troubleshooting) documentation from Microsoft. 71 | - Finally, if you are still unable to resolve your issue, please submit a bug report [here](https://github.com/WhitewaterFoundry/Pengwin/issues/new?template=bug_report.md) and we will do our best to help you. We usually respond to most Issues within a few hours. Thank you for your patience. 72 | 73 | ## Additional Pengwin Documentation 74 | 75 | - [LICENSE.md](LICENSE.md) 76 | - [BUILDING.md](BUILDING.md) 77 | - [PRIVACY.md](PRIVACY.md) 78 | - [ROADMAP.md](ROADMAP.md) 79 | - [CONTRIBUTING.md](CONTRIBUTING.md) 80 | 81 | ## Related Pages 82 | 83 | - [Awesome Windows Subsystem for Linux](https://github.com/sirredbeard/Awesome-WSL) 84 | - [Awesome UNIX](https://github.com/sirredbeard/Awesome-UNIX) 85 | - [wslu](https://github.com/wslutilities/wslu) 86 | 87 | ## Credits 88 | 89 | ### Core Team 90 | 91 | - [Carlos Rafael Ramirez](https://github.com/crramirez) 92 | - [Javier David Santos](https://github.com/javiersantossanchez) 93 | - [José Alejandro Carrizo](https://github.com/carrizo) 94 | 95 | ### Contributors 96 | 97 | - [Andrew Fehr](https://github.com/ThatWeirdAndrew) 98 | - [Kim Bradley](https://github.com/grufwub) 99 | - [B. Branchard](https://github.com/branchard) 100 | - [haodeon](https://github.com/haodeon) 101 | - [Nick Clarke](https://github.com/nickolasclarke) 102 | - [laventillelion](https://github.com/laventillelion) 103 | - [Patrick Wu](https://github.com/patrick330602) 104 | 105 | ### Founder 106 | 107 | - [Hayden Barnes](https://github.com/sirredbeard) 108 | 109 | ### Testing/QA 110 | 111 | - [Jack Mangano](https://thechipcollective.com/) 112 | - [Nuno do Carmo](http://wslcorsair.blogspot.com/) 113 | - [Jeremy Sinclair](https://twitter.com/sinclairinat0r) 114 | - [Ricardo Echavarria](https://twitter.com/r_icarus) 115 | 116 | Store badge 117 | 118 | -------------------------------------------------------------------------------- /README.zh-hans.md: -------------------------------------------------------------------------------- 1 | # Pengwin 2 | 3 | 专门为 Windows 10 Linux® 子系统调整的 Linux® 发行版,基于 Debian®,由 [Whitewater Foundry](https://whitewaterfoundry.com) 出品。 4 | 5 | 6 | 7 | 8 | 9 | Chinese badge 10 | 11 | - [English](EADME.md) 12 | - [繁體中文](README.zh-hant.md) 13 | - [日本語](README.ja.md) 14 | 15 | 如要获取 Pengwin 最新动向,可以访问我们的[博客](https://www.pengwin.dev/blog)以及我们的推特账号 [@PengwinLinux](https://twitter.com/PengwinLinux)。 16 | 17 | [![Twitter Follow](https://img.shields.io/twitter/follow/espadrine.svg?label=Follow&style=social)](https://twitter.com/pengwinlinux) 18 | 19 | 如果你是企业用户,你也许会对我们专门针对企业用户开发的 [Pengwin 企业版](https://github.com/WhitewaterFoundry/WLE)感兴趣。 20 | 21 | ## 功能 22 | 23 | - Pengwin 是一款使用 Microsoft Research 开源技术基于 Debian 发行版的 Windows 10 Linux 子系统发行版。 24 | - Pengwin 同时也是第一款专门为开发者和资深用户设计的在 [Windows 10 Linux 子系统](https://github.com/sirredbeard/Awesome-WSL)(WSL) 上运行的 Linux 开发环境。 25 | - 预装 [wslu](https://github.com/wslutilities/wslu), 一款专门为 WSL 而设计的工具组。 26 | - `$ pengwin-setup` 协助你配置你的 Linux 到你最喜欢的样子: 27 | - 修改你的 Pengwin 语言设置。 28 | - 可选的 terminal shells: csh, zsh (带 [oh-my-zsh](https://ohmyz.sh/))或者 [fish](https://fishshell.com/) (带 [oh-my-fish](https://github.com/oh-my-fish/oh-my-fish))。 29 | - 可选的文字编辑器: [emacs](https://www.gnu.org/software/emacs/), [neovim](https://neovim.io/) 或者 [Visual Studio Code](https://code.visualstudio.com/)。 30 | - 安装你最喜爱的开发环境: [NodeJS](https://nodejs.org/) (n,npm和/或yarn), Python 3.7 (带pip), [Ruby](http://www.ruby-lang.org/) (通过rbenv )与 [Go](https://golang.org/)。 31 | - 用这些工具来管理你的 Windows 和 Azure: [PowerShell](https://github.com/PowerShell/PowerShell) 和 [azure-cli](https://github.com/Azure/azure-cli)。 32 | - 开启/关闭 Windows 文件管理器右键菜单支持。 33 | - 配置 WSL 的 GUI 设置,包括一款针对 Linux 设计的 [Windows 10 主题](https://github.com/B00merang-Project/Windows-10),高分辨率支持和 CJK 输入法支持。 34 | - 支持 Docker 桥的创建。 35 | - 支持大部分的 [GUI 应用](https://github.com/ethanhs/WSL-Programs)! 注:需要安装 Windows 下的X服务器,如 [X410](http://afflnk.microsoft.com/c/1291904/459838/7593?prodsku=9NLP712ZMN9Q&u=https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fstore%2Fp%2Fx410%2F9NLP712ZMN9Q)。 36 | - Pengwin 提供与其他 WSL 支持的发行版相比更快的 Bug 修复。 37 | - 我们会基于[社区反馈](https://github.com/WhitewaterFoundry/Pengwin/issues)不断的开发[新功能](https://github.com/WhitewaterFoundry/Pengwin/pulls)。还有,不要错过我们的 [Pengwin 赏金计划](CONTRIBUTING.md)。 38 | 39 | ## 安装需求 40 | 41 | - Windows 10 42 | - 最低 1709/16299 43 | - 推荐 1809/17763 44 | - 确保 Windows 10 Linux 子系统已启用 45 | - 你可用使用以下命令在有管理员权限的 PowerShell 来启用 Windows 10 Linux 子系统: 46 | ``` 47 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 48 | ``` 49 | 50 | ## 更新 51 | 52 | 你可以使用 apt 包管理系统检查更新。 53 | 54 | 1. 检查最新更新: `$ sudo apt-get update` 55 | 2. 安装最新更新: `$ sudo apt-get upgrade` 56 | 57 | ## 版本 58 | 59 | Pengwin 是一款使用滚动发行的发行版。 Debian 程序包、pengwin-base 以及 pengwin-setup 会受到持续而不间断的更新。 Pengwin 的版本号(如1.2)是用来进行长期的功能及 Bug 记录使用的,会在2-3个月发布一个新的版本。每一个新版本都会进行编译并上传到微软商店。例如说,第三个1.2编译版本在商店里会被标注为 1.2.3。 60 | 61 | 查看 `pengwin-setup` 的版本: `$ apt-cache policy pengwin-setup` 62 | 63 | 查看 `pengwin-base` 的版本: `$ apt-cache policy pengwin-base` 64 | 65 | ## 支持 66 | 67 | Pengwin 在商店的购买可以是独立的开源开发者们能够持续的开发,测试和调整 Pengwin。我们尝试为您提供最好的用户服务。大部分问题可以通过以下方法解决。 68 | 69 | - 请先[在此](https://github.com/sirredbeard/Pengwin/issues)搜索你的问题。 70 | - 如果找不到,请在[ WSL 反馈页](https://github.com/Microsoft/WSL/issues)搜索你的问题。 71 | - 你也可以查看微软官方的[ WSL 故障排除](https://docs.microsoft.com/en-us/windows/wsl/troubleshooting)档案。 72 | - 如果你无法找到你的问题,请[开一个新的 issue](https://github.com/WhitewaterFoundry/Pengwin/issues/new?template=bug_report.md). 我们通常会在几个小时内回复你,请您耐心等待。 73 | 74 | ## 其他文档 75 | 76 | - [LICENSE.md](LICENSE.md) 77 | - [BUILDING.md](BUILDING.md) 78 | - [PRIVACY.md](PRIVACY.md) 79 | - [ROADMAP.md](ROADMAP.md) 80 | - [CONTRIBUTING.md](CONTRIBUTING.md) 81 | 82 | ## 相关链接 83 | 84 | - [Awesome Windows Subsystem for Linux](https://github.com/sirredbeard/Awesome-WSL) 85 | - [Awesome UNIX](https://github.com/sirredbeard/Awesome-UNIX) 86 | - [wslu](https://github.com/wslutilities/wslu) 87 | 88 | ## 开发团体 89 | 90 | ### 核心团队 91 | 92 | - [Hayden Barnes](https://github.com/sirredbeard) 93 | - [Patrick Wu](https://github.com/patrick330602) 94 | - [Carlos Rafael Ramirez](https://github.com/crramirez) 95 | - [Kim Bradley](https://github.com/grufwub) 96 | 97 | ### 贡献者 98 | 99 | - [Andrew Fehr](https://github.com/ThatWeirdAndrew) 100 | 101 | ### 测试/QA 102 | 103 | - [Jack Mangano](https://thechipcollective.com/) 104 | - [Nuno do Carmo](http://wslcorsair.blogspot.com/) 105 | 106 | Chinese badge -------------------------------------------------------------------------------- /README.zh-hant.md: -------------------------------------------------------------------------------- 1 | # Pengwin 2 | 3 | 專門為 Windows 10 Linux® 子系統調整的 Linux® 發行版,基於 Debian®,由 [Whitewater Foundry](https://whitewaterfoundry.com) 出品。 4 | 5 | 6 | 7 | Chinese Traditional badge 8 | 9 | - [English](EADME.md) 10 | - [简体中文](README.zh-hans.md) 11 | - [日本語](README.ja.md) 12 | 13 | 如要獲取 Pengwin 最新動向,可以訪問我們的[部落格](https://www.pengwin.dev/blog)以及我們的推特賬號 [@PengwinLinux](https://twitter.com/PengwinLinux)。 14 | 15 | [![Twitter Follow](https://img.shields.io/twitter/follow/espadrine.svg?label=Follow&style=social)](https://twitter.com/pengwinlinux) 16 | 17 | 如果你是企業使用者,你也許會對我們專門針對企業使用者開發的 [Pengwin 企業版](https://github.com/WhitewaterFoundry/WLE)感興趣。 18 | 19 | ## 功能 20 | 21 | - Pengwin 是一款使用 Microsoft Research 開源技術基於 Debian 發行版的 Windows 10 Linux 子系統發行版。 22 | - Pengwin 同時也是第一款專門為開發者和資深使用者設計的在 [Windows 10 Linux 子系統](https://github.com/sirredbeard/Awesome-WSL)(WSL) 上執行的 Linux 開發環境。 23 | - 預裝 [wslu](https://github.com/wslutilities/wslu), 一款專門為 WSL 而設計的工具組。 24 | - `$ pengwin-setup` 協助你配置你的 Linux 到你最喜歡的樣子: 25 | - 修改你的 Pengwin 語言設定。 26 | - 可選的 terminal shells: csh, zsh (帶 [oh-my-zsh](https://ohmyz.sh/))或者 [fish](https://fishshell.com/) (帶 [oh-my-fish](https://github.com/oh-my-fish/oh-my-fish))。 27 | - 可選的文字編輯器: [emacs](https://www.gnu.org/software/emacs/), [neovim](https://neovim.io/) 或者 [Visual Studio Code](https://code.visualstudio.com/)。 28 | - 安裝你最喜愛的開發環境: [NodeJS](https://nodejs.org/) (n,npm和/或yarn), Python 3.7 (帶pip), [Ruby](http://www.ruby-lang.org/) (通過rbenv )與 [Go](https://golang.org/)。 29 | - 用這些工具來管理你的 Windows 和 Azure: [PowerShell](https://github.com/PowerShell/PowerShell) 和 [azure-cli](https://github.com/Azure/azure-cli)。 30 | - 開啟/關閉 Windows 檔案管理器右鍵選單支援。 31 | - 配置 WSL 的 GUI 設定,包括一款針對 Linux 設計的 [Windows 10 主題](https://github.com/B00merang-Project/Windows-10),高解析度支援和 CJK 輸入法支援。 32 | - 支援 Docker 橋的建立。 33 | - 支援大部分的 [GUI 應用](https://github.com/ethanhs/WSL-Programs)! 注:需要安裝 Windows 下的X伺服器,如 [X410](http://afflnk.microsoft.com/c/1291904/459838/7593?prodsku=9NLP712ZMN9Q&u=https%3A%2F%2Fwww.microsoft.com%2Fen-us%2Fstore%2Fp%2Fx410%2F9NLP712ZMN9Q)。 34 | - Pengwin 提供與其他 WSL 支援的發行版相比更快的 Bug 修復。 35 | - 我們會基於[社羣反饋](https://github.com/WhitewaterFoundry/Pengwin/issues)不斷的開發[新功能](https://github.com/WhitewaterFoundry/Pengwin/pulls)。還有,不要錯過我們的 [Pengwin 賞金計劃](CONTRIBUTING.md)。 36 | 37 | ## 安裝需求 38 | 39 | - Windows 10 40 | - 最低 1709/16299 41 | - 推薦 1809/17763 42 | - 確保 Windows 10 Linux 子系統已啟用 43 | - 你可用使用以下命令在有管理員許可權的 PowerShell 來啟用 Windows 10 Linux 子系統: 44 | ``` 45 | Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 46 | ``` 47 | 48 | ## 更新 49 | 50 | 你可以使用 apt 包管理系統檢查更新。 51 | 52 | 1. 檢查最新更新: `$ sudo apt-get update` 53 | 2. 安裝最新更新: `$ sudo apt-get upgrade` 54 | 55 | ## 版本 56 | 57 | Pengwin 是一款使用滾動發行的發行版。 Debian 程式包、pengwin-base 以及 pengwin-setup 會受到持續而不間斷的更新。 Pengwin 的版本號(如1.2)是用來進行長期的功能及 Bug 記錄使用的,會在2-3個月釋出一個新的版本。每一個新版本都會進行編譯並上傳到微軟商店。例如說,第三個1.2編譯版本在商店裡會被標註為 1.2.3。 58 | 59 | 檢視 `pengwin-setup` 的版本: `$ apt-cache policy pengwin-setup` 60 | 61 | 檢視 `pengwin-base` 的版本: `$ apt-cache policy pengwin-base` 62 | 63 | ## 支援 64 | 65 | Pengwin 在商店的購買可以是獨立的開源開發者們能夠持續的開發,測試和調整 Pengwin。我們嘗試為您提供最好的使用者服務。大部分問題可以通過以下方法解決。 66 | 67 | - 請先[在此](https://github.com/sirredbeard/Pengwin/issues)搜尋你的問題。 68 | - 如果找不到,請在[ WSL 反饋頁](https://github.com/Microsoft/WSL/issues)搜尋你的問題。 69 | - 你也可以檢視微軟官方的[ WSL 故障排除](https://docs.microsoft.com/en-us/windows/wsl/troubleshooting)檔案。 70 | - 如果你無法找到你的問題,請[開一個新的 issue](https://github.com/WhitewaterFoundry/Pengwin/issues/new?template=bug_report.md). 我們通常會在幾個小時內回覆你,請您耐心等待。 71 | 72 | ## 其他文档 73 | 74 | - [LICENSE.md](LICENSE.md) 75 | - [BUILDING.md](BUILDING.md) 76 | - [PRIVACY.md](PRIVACY.md) 77 | - [ROADMAP.md](ROADMAP.md) 78 | - [CONTRIBUTING.md](CONTRIBUTING.md) 79 | 80 | ## 相關連結 81 | 82 | - [Awesome Windows Subsystem for Linux](https://github.com/sirredbeard/Awesome-WSL) 83 | - [Awesome UNIX](https://github.com/sirredbeard/Awesome-UNIX) 84 | - [wslu](https://github.com/wslutilities/wslu) 85 | 86 | ## 開發團體 87 | 88 | ### 核心團隊 89 | 90 | - [Hayden Barnes](https://github.com/sirredbeard) 91 | - [Patrick Wu](https://github.com/patrick330602) 92 | - [Carlos Rafael Ramirez](https://github.com/crramirez) 93 | - [Kim Bradley](https://github.com/grufwub) 94 | 95 | ### 貢獻者 96 | 97 | - [Andrew Fehr](https://github.com/ThatWeirdAndrew) 98 | 99 | ### 測試/QA 100 | 101 | - [Jack Mangano](https://thechipcollective.com/) 102 | - [Nuno do Carmo](http://wslcorsair.blogspot.com/) 103 | 104 | Chinese Traditional badge -------------------------------------------------------------------------------- /ROADMAP.md: -------------------------------------------------------------------------------- 1 | ## Pengwin Roadmap 2 | 3 | See https://github.com/WhitewaterFoundry/Pengwin/milestones/ 4 | 5 | See https://github.com/WhitewaterFoundry/Pengwin/pulls for features under testing/active developmment. 6 | 7 | See https://github.com/WhitewaterFoundry/Pengwin/issues to suggest new features. 8 | -------------------------------------------------------------------------------- /RPrivacy.md: -------------------------------------------------------------------------------- 1 | Neither Raft or Whitewater Foundtry, Ltd. Co. collects any personal or machine-identifying information with the exception of the following: 2 | 3 | - If you submit logs or errors to GitHub they may contain personal or machine-identifying information. Please check and remove any personal or machine-identifying information you do not wish to be shared publicly before submitting to GitHub. See a link to the GitHub Privacy Policy below. 4 | 5 | - Whitewater Foundtry, Ltd. Co. sees very general country-of-purchase statistics, age, and gender demographics supplied by the Microsoft Store on the Microsoft Partner Dashboard. Whitewater Foundry, Ltd. Co. may use this information to improve international support, target advertising, and for other promotional purposes. 6 | 7 | - Whitewater Foundtry, Ltd. Co. sees Raft crash data, including a stack trace, memory dump, version/build information, device name and type, running processes, and other potentially personally-identifying and machine-identifying information, but only when Windows is configured to provide Full diagnostic data. We investigate these crashes and forward to Microsoft InfoSec Ops Center and the WSL team at Microsoft for further analysis. You may disable Full diagnostic data collection by following the instructions here: https://privacy.microsoft.com/en-us/windows-10-feedback-diagnostics-and-privacy, via Group Policy, or with a third-party tool such as: https://www.oo-software.com/en/shutup10. 8 | 9 | - We also use web services and they collect information. You may see their privacy policies here: 10 | 11 | GitHub Privacy Policy 12 | https://help.github.com/articles/github-privacy-statement/ 13 | 14 | Microsoft Privacy Policy 15 | https://privacy.microsoft.com/en-us/privacystatement 16 | 17 | Vultr Privacy Policy 18 | https://www.vultr.com/legal/privacy/ 19 | 20 | CloudFlare Privacy Policy 21 | https://www.cloudflare.com/privacypolicy/ 22 | 23 | -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/description.txt: -------------------------------------------------------------------------------- 1 | Pengwin is a Linux distribution based on Debian, explicitly designed for use on Windows Subsystem for Linux (WSL). Whitewater Foundry develops it and provides a custom environment for running Linux command-line tools and graphical applications within the Windows operating system. Pengwin includes a variety of pre-installed software packages and supports many programming languages and development tools. It also offers a streamlined installation process and integration with the Windows file system, allowing users to access and manipulate Windows files from the Linux environment easily. 2 | 3 | Pengwin is the Linux distribution explicitly created for WSL. It was created by WSL users who recognized the potential of the platform. The project is open-source, and community input is highly encouraged. 4 | 5 | Leverage the power of the Linux terminal on Windows. Get started in open-source programming with git. Manage remote servers with OpenSSH or Azure CLI—Automate tasks with Python, PowerShell, or Bash. Run a local LAMP stack for testing your interactive website. Build with the latest open-source libraries and tools, including NodeJS and Ruby Gems. Run many essential graphical Linux apps, like Jetbrains IntelliJ and Linux terminals. Quickly deploy and interact with Docker. 予測非ラテン文字入力を設定します。 6 | 7 | Enable genuine HighDPI support, install your favorite Linux terminal like Terminator or Konsole, and create Start Menu shortcuts in Windows for all your Linux GUI apps. Fully compatible with WSLg and Windows 11. 8 | 9 | In WSL 1, use pengwin-setup to install VcXsrv or set up X410 to start at pengwin launch. Even start services with the wslsystemctl command. 10 | 11 | Pengwin installs itself as a menu entry in Windows Terminal. We crafted the background and the color palette for the best looking and usability in Windows Terminal. 12 | 13 | Access your C:\ drive at /mnt/c automatically. Copy and paste from Visual Studio into Emacs. Open Word from zsh. Pipe ipconfig.exe output into a Python script. It is a hybrid world. Pengwin bridges the gap between Windows and Linux. Pengwin also includes wslutilities to make working in the hybrid world easier. 14 | 15 | Pengwin is based on Debian, which looks like Ubuntu, but it is different, and installation recipes or tutorials for Ubuntu may not work in Pengwin. Always look for Debian instructions instead. 16 | 17 | DISCLAIMER: Windows Insider Preview Builds are not production-ready and can contain incompatibilities or bugs that affect the performance of Pengwin. We support insider versions on a best-effort basis. 18 | -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/features.txt: -------------------------------------------------------------------------------- 1 | Based on Debian: Pengwin is built on top of Debian, a stable and widespread Linux distribution with a large user base and extensive software library. 2 | Pengwin includes wslu, a set of useful open-source utilities for interacting between WSL and Windows. (wslusc, wslsys, wslfetch, wslvar, wslview, wslact, wslclip, wslgsu) 3 | A custom pengwin-setup tool, accessible via $ pengwin-setup, allows new Pengwin users to get started on Linux immediately. 4 | Compatible with Windows 11/10 with the latest version of WSL and WSLg. 5 | Turn systemd on/off via pengwin-setup. Supports SystemD even without the Store version of WSL. 6 | Support for many Linux graphical applications with no need to configure DISPLAY in Pengwin, even on WSL 1. 7 | Built-in support for GPU acceleration and GPU video acceleration without custom repos, environment variables, or user groups. 8 | Install via pengwin-setup a complete desktop environment based on Xfce, accessible directly from the Windows start menu. 9 | For WSL 1, pengwin-setup will automatically install and configure VcXsrv or can configure X410 for GUI applications. 10 | With full high dpi compatibility, pengwin-setup will adjust the environment for you. 11 | Create Windows Start Menu items from Linux desktop apps, even on WSL 1. 12 | Install your favorite Linux terminal: Konsole, Terminator, Tilix, etc. 13 | You can access your Windows home directly from your Linux one via the winhome symbolic link. 14 | Deploy a one-click LAMP stack. 15 | We have handcrafted a Windows Terminal profile for a pleasant experience. 16 | Install the most popular development environments (python, node, ruby, java, .Net, etc.) with version managers like (pyenv, n, rbenv, sdkman, etc) with pengwin-setup. 17 | Be ready for the cloud, installing Kubertenes, Terraform, Azure CLI, AWS CLI, etc. via pengwin-setup 18 | You can set up Pengwin to start at Windows logon without showing a Window, check the App Settings of Pengwin in the Settings Windows app. 19 | Regular updates: Pengwin is actively developed and updated, with regular releases that include bug fixes, security updates, and new features. 20 | Support: Pengwin has a strong community of users and developers who provide support and resources for troubleshooting issues and getting the most out of the distribution. 21 | -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Icon/Box Art Store Listing.scale-300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Icon/Box Art Store Listing.scale-300.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/PromotionalArt16x9/Slide01.scale-1920.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/PromotionalArt16x9/Slide01.scale-1920.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide02.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide04.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide05.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide06.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide07.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide08.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide09.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide10.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide11.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/Slide12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/Screenshot/Slide12.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide02.txt: -------------------------------------------------------------------------------- 1 | the Linux distro made for Windows -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide04.txt: -------------------------------------------------------------------------------- 1 | get up and going with pengwin-setup. (exclusive to Pengwin) -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide05.txt: -------------------------------------------------------------------------------- 1 | ready for the Cloud -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide06.txt: -------------------------------------------------------------------------------- 1 | run your favorite Linux GUI app integrated with Windows WSL 1|2 -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide07.txt: -------------------------------------------------------------------------------- 1 | Windows Terminal seamless integration -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide08.txt: -------------------------------------------------------------------------------- 1 | real Linux terminals on Windows -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide09.txt: -------------------------------------------------------------------------------- 1 | full integration with Windows -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide10.txt: -------------------------------------------------------------------------------- 1 | what users say -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide11.txt: -------------------------------------------------------------------------------- 1 | Pengwin comes with a very good support -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/Screenshot/description.Slide12.txt: -------------------------------------------------------------------------------- 1 | Full refund via PayPal -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/StoreLogo9x16/Poster Art.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/StoreLogo9x16/Poster Art.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/images/StoreLogoSquare/Box Art.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/appMetadata/en-us/baseListing/images/StoreLogoSquare/Box Art.png -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/keywords.txt: -------------------------------------------------------------------------------- 1 | linux 2 | windows subsystem for linux 3 | wsl 4 | ubuntu 5 | debian 6 | terminal 7 | windows terminal 8 | -------------------------------------------------------------------------------- /appMetadata/en-us/baseListing/releaseNotes.txt: -------------------------------------------------------------------------------- 1 | Existing users can update immediately by running $ pengwin-setup update 2 | 3 | 25.06.0: 4 | * Upgraded Terraform to 1.12.1 5 | * Upgraded Node.js versions to 24 and 22 lts 6 | * Upgraded to Debian 12.11 7 | * Upgraded to Mesa 25.0.4 and the D3D12 driver includes: 8 | * OpenGL 4.6 support completed 9 | * Expanded video encode/decode support (HEVC 4:2:2/4:4:4, H.264 Baseline) 10 | * Added VP9 and AV1 codecs in GPU Video Acceleration 11 | * Changed the TUI engine of pengwin-setup from newt to ncurses, with the following improvements: 12 | * Mouse support, you can now click options and buttons 13 | * Accelerator keys are shown in the options for rapid selection 14 | * The big dialogs like the uninstaller are now resizable 15 | * Updated the version of VCXsrv to 21.1.13 16 | * Updated python to 3.13 17 | * Fixed a regression in pengwin-setup that prevented returning to the previous menu 18 | * Fix GPU Video Acceleration access in WSL 2.5.x 19 | * Fixed an error in the icon generation in the desktop environment installer 20 | * Added udev package due to it is necessary for the video acceleration 21 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # Universal Windows Platform 2 | 3 | # Build a Universal Windows Platform project using Visual Studio. 4 | # Add steps that test and distribute an app, save build artifacts, and more: 5 | # https://aka.ms/yaml 6 | 7 | trigger: 8 | batch: true 9 | branches: 10 | include: [ master ] 11 | 12 | pool: 13 | vmImage: 'windows-2022' 14 | 15 | variables: 16 | solution: '**/*.sln' 17 | buildPlatform: 'x64|ARM64' 18 | buildConfiguration: 'Release' 19 | appxPackageDir: '$(System.DefaultWorkingDirectory)\AppxPackages' 20 | 21 | steps: 22 | - task: DownloadSecureFile@1 23 | name: circleToken 24 | inputs: 25 | secureFile: 'circle-token.txt' 26 | 27 | - task: Bash@3 28 | displayName: Download and move 64 bit ARM image 29 | inputs: 30 | targetType: 'inline' 31 | script: | 32 | # Tried with secure variable without success (bug?) so I am using secureFiles 33 | CIRCLE_TOKEN="$(cat "${CIRCLE_TOKEN_FILE}")" 34 | url=$(curl -H "Circle-Token: ${CIRCLE_TOKEN}" https://circleci.com/api/v1.1/project/github/WhitewaterFoundry/pengwin-rootfs-builds/latest/artifacts | grep -o 'https://[^"]*') 35 | mkdir -p ARM64 36 | curl -L -H "Circle-Token: ${CIRCLE_TOKEN}" "${url}" --output ARM64/install.tar.gz 37 | env: 38 | CIRCLE_TOKEN_FILE: $(circleToken.secureFilePath) 39 | 40 | - task: DownloadBuildArtifacts@0 41 | displayName: Download 64 bit image 42 | inputs: 43 | buildType: 'specific' 44 | project: '84ac49ca-47e0-4979-b8ee-cd1cf8fe4e74' 45 | pipeline: '1' 46 | specificBuildWithTriggering: true 47 | buildVersionToDownload: 'latest' 48 | downloadType: 'single' 49 | artifactName: 'drop' 50 | downloadPath: '$(System.ArtifactsDirectory)' 51 | 52 | - task: CmdLine@2 53 | displayName: Move 64 bit image 54 | inputs: 55 | script: | 56 | move $(System.ArtifactsDirectory)\drop\install_amd64_rootfs.tar.gz x64\install.tar.gz 57 | 58 | - task: NuGetToolInstaller@1 59 | 60 | - task: NuGetCommand@2 61 | inputs: 62 | restoreSolution: '$(solution)' 63 | 64 | - task: DownloadSecureFile@1 65 | name: signingCert 66 | inputs: 67 | secureFile: 'store.pfx' 68 | 69 | - task: Bash@3 70 | inputs: 71 | targetType: 'inline' 72 | script: | 73 | version=$(sed -n -E '/^ +Version=/s/^ +Version="([0-9\.]*)(.*)/\1/p' Pengwin/Package.appxmanifest) 74 | sed -E -i "s/(^.*commandline.*16571368D6CFF_)([0-9\.]+)(_x64)(_.*$)/\1${version}_x64\4/" x64/pengwin.json 75 | sed -E -i "s/(^.*icon.*16571368D6CFF_)([0-9\.]+)(_x64)(_.*$)/\1${version}_x64\4/" x64/pengwin.json 76 | sed -E -i "s/(^.*backgroundImage.*16571368D6CFF_)([0-9\.]+)(_x64)(_.*$)/\1${version}_x64\4/" x64/pengwin.json 77 | 78 | cp x64/pengwin.json ARM64/pengwin.json 79 | sed -E -i "s/_x64_/_arm64_/g" ARM64/pengwin.json 80 | 81 | - task: VSBuild@1 82 | inputs: 83 | solution: '$(solution)' 84 | msbuildArgs: '/t:Pengwin /m /p:AppxBundlePlatforms="$(buildPlatform)" /p:AppxPackageDir="$(appxPackageDir)" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=StoreUpload /p:PackageCertificateThumbprint="" /p:PackageCertificateKeyFile="$(signingCert.secureFilePath)" /p:PackageCertificatePassword="1"' 85 | platform: 'x64' 86 | configuration: '$(buildConfiguration)' 87 | maximumCpuCount: true 88 | msbuildArchitecture: 'x64' 89 | 90 | - task: DeleteFiles@1 91 | inputs: 92 | Contents: | 93 | ARM64\install.tar.gz 94 | x64\install.tar.gz 95 | - task: CopyFiles@2 96 | inputs: 97 | SourceFolder: '$(appxPackageDir)' 98 | Contents: '**\*bundle.msixupload' 99 | TargetFolder: '$(Build.ArtifactStagingDirectory)' 100 | - task: DeleteFiles@1 101 | inputs: 102 | SourceFolder: '$(appxPackageDir)' 103 | Contents: | 104 | **\*bundle.msixupload 105 | **\*.msixbundle 106 | - task: PublishBuildArtifacts@1 107 | inputs: 108 | PathtoPublish: '$(Build.ArtifactStagingDirectory)' 109 | ArtifactName: 'drop' 110 | publishLocation: 'Container' 111 | 112 | - task: store-flight@0 113 | continueOnError: true 114 | timeoutInMinutes: 10 115 | inputs: 116 | serviceEndpoint: 'Whitewater Foundry' 117 | appId: '9NV1GV1PXZ6P' 118 | flightName: 'Azure Pipelines' 119 | packagePath: '$(Build.ArtifactStagingDirectory)\**\*bundle.msixupload' 120 | force: true 121 | skipPolling: false 122 | deletePackages: true 123 | numberOfPackagesToKeep: '2' 124 | - task: store-publish@0 125 | continueOnError: true 126 | timeoutInMinutes: 10 127 | inputs: 128 | serviceEndpoint: 'Whitewater Foundry' 129 | appId: '9NV1GV1PXZ6P' 130 | metadataUpdateMethod: 'TextMetadata' 131 | metadataPath: '$(System.DefaultWorkingDirectory)\appMetadata' 132 | updateImages: true 133 | packagePath: '$(Build.ArtifactStagingDirectory)\**\*bundle.msixupload' 134 | force: true 135 | skipPolling: false 136 | deletePackages: true 137 | numberOfPackagesToKeep: '2' 138 | -------------------------------------------------------------------------------- /build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem Add path to MSBuild Binaries 4 | set MSBUILD=() 5 | if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" ( 6 | set MSBUILD="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" 7 | goto :FOUND_MSBUILD 8 | ) 9 | if exist "%ProgramFiles%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" ( 10 | set MSBUILD="%ProgramFiles%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" 11 | goto :FOUND_MSBUILD 12 | ) 13 | if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Preview\Community\MSBuild\15.0\Bin\msbuild.exe" ( 14 | set MSBUILD="%ProgramFiles(x86)%\Microsoft Visual Studio\Preview\Community\MSBuild\15.0\Bin\msbuild.exe" 15 | goto :FOUND_MSBUILD 16 | ) 17 | if exist "%ProgramFiles%\Microsoft Visual Studio\Preview\Community\MSBuild\15.0\Bin\msbuild.exe" ( 18 | set MSBUILD="%ProgramFiles%\Microsoft Visual Studio\Preview\Community\MSBuild\15.0\Bin\msbuild.exe" 19 | goto :FOUND_MSBUILD 20 | ) 21 | if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" ( 22 | set MSBUILD="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" 23 | goto :FOUND_MSBUILD 24 | ) 25 | if exist "%ProgramFiles%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" ( 26 | set MSBUILD="%ProgramFiles%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" 27 | goto :FOUND_MSBUILD 28 | ) 29 | if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" ( 30 | set MSBUILD="%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" 31 | goto :FOUND_MSBUILD 32 | ) 33 | if exist "%ProgramFiles%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" ( 34 | set MSBUILD="%ProgramFiles%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" 35 | goto :FOUND_MSBUILD 36 | ) 37 | if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin\MSBuild.exe" ( 38 | set MSBUILD="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin\MSBuild.exe" 39 | goto :FOUND_MSBUILD 40 | ) 41 | if exist "%ProgramFiles%\Microsoft Visual Studio\2019\Community\MSBuild\15.0\Bin\msbuild.exe" ( 42 | set MSBUILD="%ProgramFiles%\Microsoft Visual Studio\2019\Community\MSBuild\15.0\Bin\msbuild.exe" 43 | goto :FOUND_MSBUILD 44 | ) 45 | if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" ( 46 | set MSBUILD="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" 47 | goto :FOUND_MSBUILD 48 | ) 49 | if exist "%ProgramFiles%\Microsoft Visual Studio\2019\Professional\MSBuild\15.0\Bin\msbuild.exe" ( 50 | set MSBUILD="%ProgramFiles%\Microsoft Visual Studio\2019\Professional\MSBuild\15.0\Bin\msbuild.exe" 51 | goto :FOUND_MSBUILD 52 | ) 53 | if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe" ( 54 | set MSBUILD="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe" 55 | goto :FOUND_MSBUILD 56 | ) 57 | if exist "%ProgramFiles%\Microsoft Visual Studio\2019\Enterprise\MSBuild\15.0\Bin\msbuild.exe" ( 58 | set MSBUILD="%ProgramFiles%\Microsoft Visual Studio\2019\Enterprise\MSBuild\15.0\Bin\msbuild.exe" 59 | goto :FOUND_MSBUILD 60 | ) 61 | if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" ( 62 | set MSBUILD="%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" 63 | goto :FOUND_MSBUILD 64 | ) 65 | if exist "%ProgramFiles(x86)%\MSBuild\14.0\bin" ( 66 | set MSBUILD="%ProgramFiles(x86)%\MSBuild\14.0\bin\msbuild.exe" 67 | goto :FOUND_MSBUILD 68 | ) 69 | if exist "%ProgramFiles%\MSBuild\14.0\bin" ( 70 | set MSBUILD="%ProgramFiles%\MSBuild\14.0\bin\msbuild.exe" 71 | goto :FOUND_MSBUILD 72 | ) 73 | 74 | if %MSBUILD%==() ( 75 | echo "I couldn't find MSBuild on your PC. Make sure it's installed somewhere, and if it's not in the above if statements (in build.bat), add it." 76 | goto :EXIT 77 | ) 78 | :FOUND_MSBUILD 79 | set _MSBUILD_TARGET=Build 80 | set _MSBUILD_CONFIG=Debug 81 | set _MSBUILD_PLATFORM=x64 82 | set _MSBUILD_APPX_BUNDLE_PLATFORMS="x64|ARM64" 83 | 84 | :ARGS_LOOP 85 | if (%1) == () goto :POST_ARGS_LOOP 86 | if (%1) == (clean) ( 87 | set _MSBUILD_TARGET=Clean,Build 88 | ) 89 | if (%1) == (rel) ( 90 | set _MSBUILD_CONFIG=Release 91 | ) 92 | if (%1) == (x64) ( 93 | set _MSBUILD_PLATFORM=x64 94 | set _MSBUILD_APPX_BUNDLE_PLATFORMS=x64 95 | ) 96 | if (%1) == (ARM64) ( 97 | set _MSBUILD_PLATFORM=ARM64 98 | set _MSBUILD_APPX_BUNDLE_PLATFORMS=ARM64 99 | ) 100 | shift 101 | goto :ARGS_LOOP 102 | 103 | :POST_ARGS_LOOP 104 | %MSBUILD% %~dp0\DistroLauncher.sln /t:%_MSBUILD_TARGET% /m /nr:true ^ 105 | /p:Configuration=%_MSBUILD_CONFIG% ^ 106 | /p:Platform=%_MSBUILD_PLATFORM% ^ 107 | /p:AppxBundlePlatforms=%_MSBUILD_APPX_BUNDLE_PLATFORMS% ^ 108 | /p:UseSubFolderForOutputDirDuringMultiPlatformBuild=false 109 | 110 | if (%ERRORLEVEL%) == (0) ( 111 | echo. 112 | echo Created appx in %~dp0AppPackages\DistroLauncher-Appx\ 113 | echo. 114 | ) 115 | 116 | :EXIT 117 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | Welcome to the Pengwin wiki! 2 | 3 | * [How To's](wiki/HowTo’s) 4 | 5 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate 2 | title: "Pengwin How To's" 3 | 4 | -------------------------------------------------------------------------------- /docs/images/1057abb5-bb6d-4d01-830f-b6a72338d233[1].png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/docs/images/1057abb5-bb6d-4d01-830f-b6a72338d233[1].png -------------------------------------------------------------------------------- /docs/images/6c9c5ca3-329a-4f31-ad70-fa59e091bf62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/docs/images/6c9c5ca3-329a-4f31-ad70-fa59e091bf62.png -------------------------------------------------------------------------------- /docs/images/c7cdb4c4-25ff-4025-91e0-c5ffb9eabd98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/docs/images/c7cdb4c4-25ff-4025-91e0-c5ffb9eabd98.png -------------------------------------------------------------------------------- /docs/images/cc0ea3bd-76b5-44e3-ac80-6724240668c1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/docs/images/cc0ea3bd-76b5-44e3-ac80-6724240668c1.png -------------------------------------------------------------------------------- /docs/images/dummy.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /licenses/LGPL3.md: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. -------------------------------------------------------------------------------- /licenses/OpenSSL.md: -------------------------------------------------------------------------------- 1 | LICENSE ISSUES 2 | ============== 3 | 4 | The OpenSSL toolkit stays under a double license, i.e. both the conditions of 5 | the OpenSSL License and the original SSLeay license apply to the toolkit. 6 | See below for the actual license texts. 7 | 8 | OpenSSL License 9 | --------------- 10 | 11 | /* ==================================================================== 12 | * Copyright (c) 1998-2018 The OpenSSL Project. All rights reserved. 13 | * 14 | * Redistribution and use in source and binary forms, with or without 15 | * modification, are permitted provided that the following conditions 16 | * are met: 17 | * 18 | * 1. Redistributions of source code must retain the above copyright 19 | * notice, this list of conditions and the following disclaimer. 20 | * 21 | * 2. Redistributions in binary form must reproduce the above copyright 22 | * notice, this list of conditions and the following disclaimer in 23 | * the documentation and/or other materials provided with the 24 | * distribution. 25 | * 26 | * 3. All advertising materials mentioning features or use of this 27 | * software must display the following acknowledgment: 28 | * "This product includes software developed by the OpenSSL Project 29 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 30 | * 31 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 32 | * endorse or promote products derived from this software without 33 | * prior written permission. For written permission, please contact 34 | * openssl-core@openssl.org. 35 | * 36 | * 5. Products derived from this software may not be called "OpenSSL" 37 | * nor may "OpenSSL" appear in their names without prior written 38 | * permission of the OpenSSL Project. 39 | * 40 | * 6. Redistributions of any form whatsoever must retain the following 41 | * acknowledgment: 42 | * "This product includes software developed by the OpenSSL Project 43 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 44 | * 45 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 46 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 47 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 48 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 49 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 50 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 51 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 52 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 53 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 54 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 55 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 56 | * OF THE POSSIBILITY OF SUCH DAMAGE. 57 | * ==================================================================== 58 | * 59 | * This product includes cryptographic software written by Eric Young 60 | * (eay@cryptsoft.com). This product includes software written by Tim 61 | * Hudson (tjh@cryptsoft.com). 62 | * 63 | */ 64 | 65 | Original SSLeay License 66 | ----------------------- 67 | 68 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 69 | * All rights reserved. 70 | * 71 | * This package is an SSL implementation written 72 | * by Eric Young (eay@cryptsoft.com). 73 | * The implementation was written so as to conform with Netscapes SSL. 74 | * 75 | * This library is free for commercial and non-commercial use as long as 76 | * the following conditions are aheared to. The following conditions 77 | * apply to all code found in this distribution, be it the RC4, RSA, 78 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 79 | * included with this distribution is covered by the same copyright terms 80 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 81 | * 82 | * Copyright remains Eric Young's, and as such any Copyright notices in 83 | * the code are not to be removed. 84 | * If this package is used in a product, Eric Young should be given attribution 85 | * as the author of the parts of the library used. 86 | * This can be in the form of a textual message at program startup or 87 | * in documentation (online or textual) provided with the package. 88 | * 89 | * Redistribution and use in source and binary forms, with or without 90 | * modification, are permitted provided that the following conditions 91 | * are met: 92 | * 1. Redistributions of source code must retain the copyright 93 | * notice, this list of conditions and the following disclaimer. 94 | * 2. Redistributions in binary form must reproduce the above copyright 95 | * notice, this list of conditions and the following disclaimer in the 96 | * documentation and/or other materials provided with the distribution. 97 | * 3. All advertising materials mentioning features or use of this software 98 | * must display the following acknowledgement: 99 | * "This product includes cryptographic software written by 100 | * Eric Young (eay@cryptsoft.com)" 101 | * The word 'cryptographic' can be left out if the rouines from the library 102 | * being used are not cryptographic related :-). 103 | * 4. If you include any Windows specific code (or a derivative thereof) from 104 | * the apps directory (application code) you must include an acknowledgement: 105 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 106 | * 107 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 108 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 109 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 110 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 111 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 112 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 113 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 114 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 115 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 116 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 117 | * SUCH DAMAGE. 118 | * 119 | * The licence and distribution terms for any publically available version or 120 | * derivative of this code cannot be changed. i.e. this code cannot simply be 121 | * copied and put under another distribution licence 122 | * [including the GNU Public Licence.] 123 | */ 124 | -------------------------------------------------------------------------------- /licenses/PHP.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------- 2 | The PHP License, version 3.01 3 | Copyright (c) 1999 - 2018 The PHP Group. All rights reserved. 4 | -------------------------------------------------------------------- 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, is permitted provided that the following conditions 8 | are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in 15 | the documentation and/or other materials provided with the 16 | distribution. 17 | 18 | 3. The name "PHP" must not be used to endorse or promote products 19 | derived from this software without prior written permission. For 20 | written permission, please contact group@php.net. 21 | 22 | 4. Products derived from this software may not be called "PHP", nor 23 | may "PHP" appear in their name, without prior written permission 24 | from group@php.net. You may indicate that your software works in 25 | conjunction with PHP by saying "Foo for PHP" instead of calling 26 | it "PHP Foo" or "phpfoo" 27 | 28 | 5. The PHP Group may publish revised and/or new versions of the 29 | license from time to time. Each version will be given a 30 | distinguishing version number. 31 | Once covered code has been published under a particular version 32 | of the license, you may always continue to use it under the terms 33 | of that version. You may also choose to use such covered code 34 | under the terms of any subsequent version of the license 35 | published by the PHP Group. No one other than the PHP Group has 36 | the right to modify the terms applicable to covered code created 37 | under this License. 38 | 39 | 6. Redistributions of any form whatsoever must retain the following 40 | acknowledgment: 41 | "This product includes PHP software, freely available from 42 | ". 43 | 44 | THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND 45 | ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 46 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 47 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP 48 | DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 49 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 50 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 51 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 52 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 53 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 54 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 55 | OF THE POSSIBILITY OF SUCH DAMAGE. 56 | 57 | -------------------------------------------------------------------- 58 | 59 | This software consists of voluntary contributions made by many 60 | individuals on behalf of the PHP Group. 61 | 62 | The PHP Group can be contacted via Email at group@php.net. 63 | 64 | For more information on the PHP Group and the PHP project, 65 | please see . 66 | 67 | PHP includes the Zend Engine, freely available at 68 | . -------------------------------------------------------------------------------- /licenses/Python.md: -------------------------------------------------------------------------------- 1 | 1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and 2 | the Individual or Organization ("Licensee") accessing and otherwise using Python 3 | 3.7.1rc2 software in source or binary form and its associated documentation. 4 | 5 | 2. Subject to the terms and conditions of this License Agreement, PSF hereby 6 | grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, 7 | analyze, test, perform and/or display publicly, prepare derivative works, 8 | distribute, and otherwise use Python 3.7.1rc2 alone or in any derivative 9 | version, provided, however, that PSF's License Agreement and PSF's notice of 10 | copyright, i.e., "Copyright © 2001-2018 Python Software Foundation; All Rights 11 | Reserved" are retained in Python 3.7.1rc2 alone or in any derivative version 12 | prepared by Licensee. 13 | 14 | 3. In the event Licensee prepares a derivative work that is based on or 15 | incorporates Python 3.7.1rc2 or any part thereof, and wants to make the 16 | derivative work available to others as provided herein, then Licensee hereby 17 | agrees to include in any such work a brief summary of the changes made to Python 18 | 3.7.1rc2. 19 | 20 | 4. PSF is making Python 3.7.1rc2 available to Licensee on an "AS IS" basis. 21 | PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF 22 | EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR 23 | WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE 24 | USE OF PYTHON 3.7.1rc2 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 25 | 26 | 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 3.7.1rc2 27 | FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF 28 | MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 3.7.1rc2, OR ANY DERIVATIVE 29 | THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 30 | 31 | 6. This License Agreement will automatically terminate upon a material breach of 32 | its terms and conditions. 33 | 34 | 7. Nothing in this License Agreement shall be deemed to create any relationship 35 | of agency, partnership, or joint venture between PSF and Licensee. This License 36 | Agreement does not grant permission to use PSF trademarks or trade name in a 37 | trademark sense to endorse or promote products or services of Licensee, or any 38 | third party. 39 | 40 | 8. By copying, installing or otherwise using Python 3.7.1rc2, Licensee agrees 41 | to be bound by the terms and conditions of this License Agreement. -------------------------------------------------------------------------------- /licenses/Ruby.md: -------------------------------------------------------------------------------- 1 | Ruby is copyrighted free software by Yukihiro Matsumoto . 2 | You can redistribute it and/or modify it under either the terms of the 3 | 2-clause BSDL (see the file BSDL), or the conditions below: 4 | 5 | 1. You may make and give away verbatim copies of the source form of the 6 | software without restriction, provided that you duplicate all of the 7 | original copyright notices and associated disclaimers. 8 | 9 | 2. You may modify your copy of the software in any way, provided that 10 | you do at least ONE of the following: 11 | 12 | a) place your modifications in the Public Domain or otherwise 13 | make them Freely Available, such as by posting said 14 | modifications to Usenet or an equivalent medium, or by allowing 15 | the author to include your modifications in the software. 16 | 17 | b) use the modified software only within your corporation or 18 | organization. 19 | 20 | c) give non-standard binaries non-standard names, with 21 | instructions on where to get the original software distribution. 22 | 23 | d) make other distribution arrangements with the author. 24 | 25 | 3. You may distribute the software in object code or binary form, 26 | provided that you do at least ONE of the following: 27 | 28 | a) distribute the binaries and library files of the software, 29 | together with instructions (in the manual page or equivalent) 30 | on where to get the original distribution. 31 | 32 | b) accompany the distribution with the machine-readable source of 33 | the software. 34 | 35 | c) give non-standard binaries non-standard names, with 36 | instructions on where to get the original software distribution. 37 | 38 | d) make other distribution arrangements with the author. 39 | 40 | 4. You may modify and include the part of the software into any other 41 | software (possibly commercial). But some files in the distribution 42 | are not written by the author, so that they are not under these terms. 43 | 44 | For the list of those files and their copying conditions, see the 45 | file LEGAL. 46 | 47 | 5. The scripts and library files supplied as input to or produced as 48 | output from the software do not automatically fall under the 49 | copyright of the software, but belong to whomever generated them, 50 | and may be sold commercially, and may be aggregated with this 51 | software. 52 | 53 | 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR 54 | IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 55 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 56 | PURPOSE. -------------------------------------------------------------------------------- /x64/pengwin.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": [ 3 | { 4 | "updates": "{7f586916-8357-53d4-bb2b-ca96f639898a}", 5 | "commandline": "\"%ProgramFiles%\\WindowsApps\\WhitewaterFoundryLtd.Co.16571368D6CFF_22.11.0.0_x64__kd1vv0z0vy70w\\DistroLauncher\\pengwin.exe\"", 6 | "icon": "%ProgramFiles%\\WindowsApps\\WhitewaterFoundryLtd.Co.16571368D6CFF_22.11.0.0_x64__kd1vv0z0vy70w\\Assets\\pengwin.png", 7 | "name": "Pengwin", 8 | "acrylicOpacity": 0.9, 9 | "backgroundImage": "%ProgramFiles%\\WindowsApps\\WhitewaterFoundryLtd.Co.16571368D6CFF_22.11.0.0_x64__kd1vv0z0vy70w\\Assets\\background1.png", 10 | "backgroundImageAlignment": "bottomRight", 11 | "backgroundImageOpacity": 0.2, 12 | "backgroundImageStretchMode": "none", 13 | "bellStyle": "none", 14 | "colorScheme": "Pengwin", 15 | "cursorShape": "vintage", 16 | "fontFace": "Cascadia Code", 17 | "useAcrylic": true, 18 | "startingDirectory": null, 19 | "closeOnExit": "never" 20 | } 21 | ], 22 | "schemes": [ 23 | { 24 | "name": "Pengwin", 25 | 26 | "background": "#16001A", 27 | "black": "#0C0C0C", 28 | "blue": "#003DE8", 29 | "brightBlack": "#767676", 30 | "brightBlue": "#3B78FF", 31 | "brightCyan": "#61D6D6", 32 | "brightGreen": "#16C60C", 33 | "brightPurple": "#F500D8", 34 | "brightRed": "#E74856", 35 | "brightWhite": "#F2F2F2", 36 | "brightYellow": "#F9F1A5", 37 | "cursorColor": "#FFFFFF", 38 | "cyan": "#3A96DD", 39 | "foreground": "#E3E3E3", 40 | "green": "#13A10E", 41 | "purple": "#9B1AAD", 42 | "red": "#E01123", 43 | "selectionBackground": "#FFFFFF", 44 | "white": "#CCCCCC", 45 | "yellow": "#C19C00" 46 | } 47 | ] 48 | } 49 | -------------------------------------------------------------------------------- /x64/put install.tar.gz here: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WhitewaterFoundry/Pengwin/36ffa02007dff7008195278b9973cd5217d5df51/x64/put install.tar.gz here --------------------------------------------------------------------------------