├── .editorconfig ├── .gitattributes ├── LICENSE ├── README.md ├── assets ├── frappe.webp ├── latte.webp ├── macchiato.webp ├── mocha.webp └── preview.webp ├── install.ps1 ├── justfile ├── renovate.json └── windows-files.tera /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # EditorConfig is awesome: https://EditorConfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | charset = utf-8 9 | indent_size = 2 10 | indent_style = space 11 | end_of_line = lf 12 | insert_final_newline = true 13 | trim_trailing_whitespace = true 14 | 15 | # go 16 | [*.go] 17 | indent_style = tab 18 | indent_size = 4 19 | 20 | # python 21 | [*.{ini,py,py.tpl,rst}] 22 | indent_size = 4 23 | 24 | # rust 25 | [*.rs] 26 | indent_size = 4 27 | 28 | # documentation, utils 29 | [*.{md,mdx,diff}] 30 | trim_trailing_whitespace = false 31 | 32 | # windows shell scripts 33 | [*.{cmd,bat,ps1}] 34 | end_of_line = crlf 35 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.ps1 text eol=crlf 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Catppuccin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Logo
3 | 4 | Catppuccin for Files 5 | 6 |

7 | 8 |

9 | 10 | 11 | 12 |

13 | 14 |

15 | 16 |

17 | 18 | ## Previews 19 | 20 |
21 | 🌻 Latte 22 | 23 |
24 |
25 | 🪴 Frappé 26 | 27 |
28 |
29 | 🌺 Macchiato 30 | 31 |
32 |
33 | 🌿 Mocha 34 | 35 |
36 | 37 | ## Usage 38 | 39 | 1. Download the 3rd party [Files](https://files.community/download) application. 40 | 41 | 2. Run the `./install.ps1` script, either by downloading it manually, or in a single command: 42 | 43 | ```ps1 44 | . { Invoke-WebRequest -UseBasicParsing https://github.com/catppuccin/windows-files/raw/main/install.ps1 } | iex 45 | ``` 46 | 47 | > [!IMPORTANT] 48 | > The install script requires PowerShell 7.0 or above. To update your 49 | > powershell, see "[Installing PowerShell 7 - Microsoft](https://learn.microsoft.com/en-us/powershell/scripting/whats-new/migrating-from-windows-powershell-51-to-powershell-7?view=powershell-7.4#installing-powershell-7)." 50 | 51 | 3. Choose your preferred options in the install script. 52 | 4. Start Files, navigate to Settings > Appearance, and select **Light** or **Dark** as the base theme, depending on your chosen flavor. This step can't be automated at the moment. 53 | 54 | ## 💝 Thanks to 55 | 56 | - [DakshG07 (Dukk)](https://github.com/DakshG07) 57 | - [justTOBBI](https://github.com/justTOBBI) 58 | 59 |   60 | 61 |

62 | 63 |

64 | 65 |

66 | Copyright © 2021-present Catppuccin Org 67 |

68 | 69 |

70 | 71 |

72 | -------------------------------------------------------------------------------- /assets/frappe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/windows-files/ebe2dab9189fdc64f917109a8ef0bbd431ef7d18/assets/frappe.webp -------------------------------------------------------------------------------- /assets/latte.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/windows-files/ebe2dab9189fdc64f917109a8ef0bbd431ef7d18/assets/latte.webp -------------------------------------------------------------------------------- /assets/macchiato.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/windows-files/ebe2dab9189fdc64f917109a8ef0bbd431ef7d18/assets/macchiato.webp -------------------------------------------------------------------------------- /assets/mocha.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/windows-files/ebe2dab9189fdc64f917109a8ef0bbd431ef7d18/assets/mocha.webp -------------------------------------------------------------------------------- /assets/preview.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/catppuccin/windows-files/ebe2dab9189fdc64f917109a8ef0bbd431ef7d18/assets/preview.webp -------------------------------------------------------------------------------- /install.ps1: -------------------------------------------------------------------------------- 1 | Set-StrictMode -Version Latest 2 | $ErrorActionPreference = "Stop" 3 | 4 | $palette = [ordered]@{ 5 | "latte" = @{ 6 | "base" = "#eff1f5" 7 | "mantle" = "#e6e9ef" 8 | "crust" = "#dce0e8" 9 | } 10 | "frappe" = @{ 11 | "base" = "#303446" 12 | "mantle" = "#292c3c" 13 | "crust" = "#232634" 14 | } 15 | "macchiato" = @{ 16 | "base" = "#24273a" 17 | "mantle" = "#1e2030" 18 | "crust" = "#181926" 19 | } 20 | "mocha" = @{ 21 | "base" = "#1e1e2e" 22 | "mantle" = "#181825" 23 | "crust" = "#11111b" 24 | } 25 | } 26 | 27 | $flavorChoices = @() 28 | $i = 1 29 | foreach ($flavor in $palette.Keys) { 30 | $flavorChoices += "$flavor (&$i)" 31 | $i++ 32 | } 33 | 34 | $flavor = $Host.UI.PromptForChoice("Flavor", "Which flavor do you want to use?", $flavorChoices, 3) 35 | $colors = $palette[$flavor] 36 | 37 | $flatAppearance = $Host.UI.PromptForChoice("Appearance", "Do you want to use the flat appearance?", ('&Yes', '&No'), 1) 38 | $flatAppearance = $flatAppearance -eq 0 39 | 40 | function Update-Config { 41 | param ([string]$path, [hashtable]$colors) 42 | 43 | if (-Not (Test-Path $path)) { 44 | Write-Host "File not found: $path" -ForegroundColor Yellow 45 | return 46 | } 47 | Write-Host "> Updating $path..." 48 | 49 | $config = Get-Content -Path $path | ConvertFrom-Json -AsHashtable -Depth 10 50 | 51 | $config.AppThemeAddressBarBackgroundColor = $colors["base"] 52 | $config.AppThemeFileAreaBackgroundColor = $colors["base"] 53 | $config.AppThemeSidebarBackgroundColor = $colors["mantle"] 54 | $config.AppThemeBackgroundColor = If ($flatAppearance) { $colors["mantle"] } else { $colors["crust"] } 55 | 56 | $config | ConvertTo-Json -Depth 10 | Set-Content -Path $path 57 | } 58 | 59 | # from https://files.community/docs/contributing/updates 60 | $possiblePackageNames = @( 61 | # Dev 62 | "FilesDev_ykqwq8d6ps0ag", 63 | # Classic 64 | "Files_wvne1zexy08sa", 65 | # Sideload 66 | "Files_1y0xx7n9077q4", 67 | # Sideload Preview 68 | "FilesPreview_1y0xx7n9077q4", 69 | # Microsoft Store 70 | "49306atecsolution.FilesUWP_et10x9a9vyk8t" 71 | ) 72 | 73 | $locatedPaths = @() 74 | foreach ($name in $possiblePackageNames) { 75 | $fullPath = "$env:LOCALAPPDATA\Packages\$name\LocalState\settings\user_settings.json" 76 | if (Test-Path $fullPath) { 77 | $locatedPaths += $fullPath 78 | } 79 | } 80 | 81 | if ($locatedPaths.Count -eq 0) { 82 | Write-Host "Could not locate the Files configuration file." -ForegroundColor Red 83 | return 84 | } 85 | 86 | # shut down running Files processes 87 | $runningProcesses = @() 88 | $runningProcesses += Get-Process -Name "Files" -ErrorAction Ignore 89 | $runningProcesses += Get-Process -Name "Files.App.Server" -ErrorAction Ignore 90 | if ($runningProcesses.Count -gt 0) { 91 | Write-Host "Killing running Files processes..." -ForegroundColor Yellow 92 | $runningProcesses | ForEach-Object { $_.Kill() } 93 | # wait for the processes to die 94 | Start-Sleep -Seconds 3 95 | } 96 | 97 | 98 | foreach ($path in $locatedPaths) { 99 | Update-Config -path $path -colors $colors 100 | } 101 | 102 | Write-Host "Catppuccin for Files has been installed! 🎉" -ForegroundColor Green 103 | -------------------------------------------------------------------------------- /justfile: -------------------------------------------------------------------------------- 1 | _default: 2 | @just --list 3 | 4 | build: 5 | whiskers windows-files.tera 6 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "local>catppuccin/renovate-config" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /windows-files.tera: -------------------------------------------------------------------------------- 1 | --- 2 | whiskers: 3 | version: "2.5.0" 4 | filename: "install.ps1" 5 | --- 6 | Set-StrictMode -Version Latest 7 | $ErrorActionPreference = "Stop" 8 | 9 | $palette = [ordered]@{ 10 | {% for _, flavor in flavors -%} 11 | "{{flavor.identifier}}" = @{ 12 | "base" = "#{{flavor.colors.base.hex}}" 13 | "mantle" = "#{{flavor.colors.mantle.hex}}" 14 | "crust" = "#{{flavor.colors.crust.hex}}" 15 | {%- if not loop.last %} 16 | }{% endif %} 17 | {% endfor -%} 18 | } 19 | } 20 | 21 | $flavorChoices = @() 22 | $i = 1 23 | foreach ($flavor in $palette.Keys) { 24 | $flavorChoices += "$flavor (&$i)" 25 | $i++ 26 | } 27 | 28 | $flavor = $Host.UI.PromptForChoice("Flavor", "Which flavor do you want to use?", $flavorChoices, 3) 29 | $colors = $palette[$flavor] 30 | 31 | $flatAppearance = $Host.UI.PromptForChoice("Appearance", "Do you want to use the flat appearance?", ('&Yes', '&No'), 1) 32 | $flatAppearance = $flatAppearance -eq 0 33 | 34 | function Update-Config { 35 | param ([string]$path, [hashtable]$colors) 36 | 37 | if (-Not (Test-Path $path)) { 38 | Write-Host "File not found: $path" -ForegroundColor Yellow 39 | return 40 | } 41 | Write-Host "> Updating $path..." 42 | 43 | $config = Get-Content -Path $path | ConvertFrom-Json -AsHashtable -Depth 10 44 | 45 | $config.AppThemeAddressBarBackgroundColor = $colors["base"] 46 | $config.AppThemeFileAreaBackgroundColor = $colors["base"] 47 | $config.AppThemeSidebarBackgroundColor = $colors["mantle"] 48 | $config.AppThemeBackgroundColor = If ($flatAppearance) { $colors["mantle"] } else { $colors["crust"] } 49 | 50 | $config | ConvertTo-Json -Depth 10 | Set-Content -Path $path 51 | } 52 | 53 | # from https://files.community/docs/contributing/updates 54 | $possiblePackageNames = @( 55 | # Dev 56 | "FilesDev_ykqwq8d6ps0ag", 57 | # Classic 58 | "Files_wvne1zexy08sa", 59 | # Sideload 60 | "Files_1y0xx7n9077q4", 61 | # Sideload Preview 62 | "FilesPreview_1y0xx7n9077q4", 63 | # Microsoft Store 64 | "49306atecsolution.FilesUWP_et10x9a9vyk8t" 65 | ) 66 | 67 | $locatedPaths = @() 68 | foreach ($name in $possiblePackageNames) { 69 | $fullPath = "$env:LOCALAPPDATA\Packages\$name\LocalState\settings\user_settings.json" 70 | if (Test-Path $fullPath) { 71 | $locatedPaths += $fullPath 72 | } 73 | } 74 | 75 | if ($locatedPaths.Count -eq 0) { 76 | Write-Host "Could not locate the Files configuration file." -ForegroundColor Red 77 | return 78 | } 79 | 80 | # shut down running Files processes 81 | $runningProcesses = @() 82 | $runningProcesses += Get-Process -Name "Files" -ErrorAction Ignore 83 | $runningProcesses += Get-Process -Name "Files.App.Server" -ErrorAction Ignore 84 | if ($runningProcesses.Count -gt 0) { 85 | Write-Host "Killing running Files processes..." -ForegroundColor Yellow 86 | $runningProcesses | ForEach-Object { $_.Kill() } 87 | # wait for the processes to die 88 | Start-Sleep -Seconds 3 89 | } 90 | 91 | 92 | foreach ($path in $locatedPaths) { 93 | Update-Config -path $path -colors $colors 94 | } 95 | 96 | Write-Host "Catppuccin for Files has been installed! 🎉" -ForegroundColor Green 97 | --------------------------------------------------------------------------------