├── .editorconfig ├── .envrc ├── .github └── workflows │ ├── build.yml │ └── check.yml ├── .gitignore ├── LICENSE ├── README.md ├── flake.lock ├── flake.nix ├── nix └── builder.nix ├── scripts ├── lutgen.py ├── populate.py └── sanitise.py ├── site ├── .gitignore ├── astro.config.mjs ├── bun.lockb ├── package.json ├── public │ └── favicon.svg ├── src │ ├── assets │ │ └── wallpapers │ ├── components │ │ ├── Card.astro │ │ ├── FlavourSelector.astro │ │ ├── Gallery.astro │ │ ├── Greeting.astro │ │ └── Navbar.astro │ ├── layouts │ │ └── Layout.astro │ ├── pages │ │ └── index.astro │ ├── styles │ │ └── global.css │ └── utils │ │ └── flavour-selector.ts └── tsconfig.json └── wallpapers ├── images ├── art │ ├── kurzgesagt │ │ ├── asteroid_miner_1.png │ │ ├── asteroid_miner_2.png │ │ ├── asteroids.png │ │ ├── baby_star.png │ │ ├── black_hole_1.png │ │ ├── black_hole_2.png │ │ ├── cloudy_quasar_1.png │ │ ├── cloudy_quasar_2.png │ │ ├── contemplative_cosmonaut_1.png │ │ ├── contemplative_cosmonaut_2.png │ │ ├── contemplative_cosmonaut_3.png │ │ ├── contemplative_cosmonaut_4.png │ │ ├── cosmic_islands.png │ │ ├── fleet.png │ │ ├── galaxies.png │ │ ├── galaxy_1.png │ │ ├── galaxy_2.png │ │ ├── galaxy_3.png │ │ ├── mars.png │ │ ├── on_a_moon.png │ │ ├── ringed_earth.png │ │ ├── satellite_over_earth.png │ │ ├── solar_system.png │ │ ├── stars.png │ │ ├── stellar_phenomenon.png │ │ └── unknown_lifeform.png │ └── willow_and_sundew.jpg └── photography │ ├── lake.jpg │ ├── leaves_with_droplets.jpg │ ├── macro_mushrooms.jpg │ ├── mountains.jpg │ ├── sandstone.jpg │ ├── trees_mountain_fog_1.jpg │ ├── trees_mountain_fog_2.jpg │ └── trees_mountain_fog_3.jpg └── pixel ├── art ├── animated_street_night.gif └── waterfall.jpg └── gaming └── stardew_valley_map.png /.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 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | use flake 2 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: "build and deploy" 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | workflow_dispatch: 7 | 8 | permissions: 9 | contents: write 10 | pages: write 11 | id-token: write 12 | 13 | jobs: 14 | build: 15 | name: "build wallpapers" 16 | runs-on: ubuntu-latest 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: nixbuild/nix-quick-install-action@v30 20 | - uses: nix-community/cache-nix-action@v6 21 | id: nix-cache 22 | with: 23 | primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock', 'scripts/**/*', 'wallpapers/**/*') }} 24 | 25 | - if: ${{ steps.nix-cache.outputs.hit-primary-key == 'false' }} 26 | id: nix-build 27 | name: "build wallpapers" 28 | run: nix build .#full 29 | 30 | - name: "upload build artifacts" 31 | if: ${{ steps.nix-build.outcome == 'success' }} 32 | uses: actions/upload-artifact@v4 33 | with: 34 | name: nix-result 35 | path: result 36 | 37 | - name: "use cached wallpapers" 38 | id: use-cache 39 | if: ${{ steps.nix-cache.outputs.hit-primary-key == 'true' }} 40 | run: | 41 | ln -s $(find /nix/store/ -type d -name '*-wallpapers-*' | head -n 1) result 42 | ls -R result 43 | 44 | - name: "upload cache artifacts" 45 | if: ${{ steps.use-cache.outcome == 'success' }} 46 | uses: actions/upload-artifact@v4 47 | with: 48 | name: nix-result 49 | path: result 50 | 51 | upload: 52 | name: "upload wallpapers" 53 | needs: build 54 | runs-on: ubuntu-latest 55 | steps: 56 | - uses: actions/checkout@v4 57 | 58 | - name: "download artifacts" 59 | uses: actions/download-artifact@v4 60 | with: 61 | name: nix-result 62 | path: result 63 | 64 | - name: "zip wallpapers" 65 | run: | 66 | mkdir -p dist 67 | 68 | cp -rL --no-preserve=ownership result/share/wallpapers/* dist/ 69 | 70 | for dir in dist/*; do 71 | zip -r "dist/wallpapers-$(basename "$dir").zip" "$dir" 72 | done 73 | 74 | - name: "upload to release" 75 | run: gh release upload --clobber wallpapers ./dist/*.zip 76 | env: 77 | GH_TOKEN: ${{ github.token }} 78 | 79 | build-site: 80 | name: "build site" 81 | needs: build 82 | runs-on: ubuntu-latest 83 | steps: 84 | - uses: actions/checkout@v4 85 | - name: "download artifacts" 86 | uses: actions/download-artifact@v4 87 | with: 88 | name: nix-result 89 | path: result 90 | - name: install, build, and upload site 91 | uses: withastro/action@v3 92 | with: 93 | path: site 94 | 95 | deploy-site: 96 | name: "deploy site" 97 | needs: build-site 98 | runs-on: ubuntu-latest 99 | environment: 100 | name: github-pages 101 | url: ${{ steps.deployment.outputs.page_url }} 102 | steps: 103 | - name: Deploy to GitHub Pages 104 | id: deployment 105 | uses: actions/deploy-pages@v4 106 | -------------------------------------------------------------------------------- /.github/workflows/check.yml: -------------------------------------------------------------------------------- 1 | name: "check" 2 | on: 3 | pull_request: 4 | push: 5 | jobs: 6 | check: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v4 10 | - uses: cachix/install-nix-action@v27 11 | with: 12 | github_access_token: ${{ secrets.GITHUB_TOKEN }} 13 | - run: nix flake check --show-trace 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .direnv/ 2 | dist/ 3 | result 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 willow 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 | Nix Logo
3 | 4 | willow's wallpaper dump 5 | 6 |

7 | 8 |
9 | Usage 10 | · 11 | Previews 12 | · 13 | Credits 14 |
15 | 16 |

17 | Catppuccin Macchiato Palette 22 |

23 | 24 |

25 | 26 | Stargazers 30 | 31 | Repo Size 35 | 36 | Issues 40 | 41 | GitHub License 45 | 46 |

47 | 48 | --- 49 | 50 | This repo provides a curated collection of wallpapers that are hand-picked for high resolution displays. Each wallpaper has been (or will be!) converted to the four colour schemes of [Catppuccin](https://catppuccin.com). Other colour schemes can be added in future if requested. 51 | 52 | ## Usage 53 | 54 | ### Download 55 | 56 | See instructions on the [GitHub release page](https://github.com/42willow/wallpapers/releases/tag/wallpapers). 57 | 58 | ### Nix 59 | 60 | `nix flake show github:42willow/wallpapers` 61 | 62 | Package inputs: 63 | 64 | - `full` (default) 65 | - `latte` 66 | - `frappe` 67 | - `macchiato` 68 | - `mocha` 69 | 70 | #### With Flakes 71 | 72 | `flake.nix` 73 | ```nix 74 | inputs = { 75 | wallpapers = { 76 | url = "github:42willow/wallpapers"; 77 | inputs.nixpkgs.follows = "nixpkgs"; 78 | # «https://github.com/nix-systems/nix-systems» 79 | # inputs.systems.follows = "systems"; # if using nix-systems 80 | }; 81 | }; 82 | ``` 83 | 84 | `configuration.nix` 85 | ```nix 86 | {inputs, pkgs, ...}: { 87 | environment = { 88 | etc."wallpapers".source = inputs.wallpapers.packages.${pkgs.system}.full; 89 | }; 90 | } 91 | ``` 92 | 93 | #### Without Flakes 94 | 95 | ```bash 96 | $ nix profile install github:42willow/wallpapers#full 97 | ``` 98 | 99 | Nix instructions adapted from [NotAShelf/wallpkgs](https://github.com/NotAShelf/wallpkgs?tab=readme-ov-file#installing), please read there for more detail. 100 | 101 | ## Previews 102 | 103 | Check out the [website](https://42willow.github.io/wallpapers/)! 104 | 105 | ## Credits 106 | 107 | A huge thanks to [NotAShelf](https://github.com/NotAShelf) for his [wallpkgs](https://github.com/NotAShelf/wallpkgs) that this is based on. 108 | I would recommend checking out his projects and maybe even giving them a star! 109 | 110 | All images are sourced from the internet and are not my own work. If you are the original artist and would like me to remove your work, please contact me via email at `42willow [at] pm [dot] me`. 111 | 112 | ### Collections 113 | 114 | - [Flick0](https://github.com/flick0/kabegami) 115 | - [DragonDev07 (for more script features)](https://github.com/DragonDev07/Wallpapers/blob/main/markdown.py) 116 | - [Biohazardia](https://www.deviantart.com/biohazardia/gallery) 117 | - [Imgur Pixel Art Dump](https://imgur.com/gallery/SELjK) 118 | - [Kurzgesagt - AI upscaled](https://www.reddit.com/r/kurzgesagt/comments/15pvf7h/kurzgesagt_4k_wallpapers_3840x2160/) 119 | 120 | ### Tools 121 | 122 | - [tineye](https://www.tineye.com/) - Reverse image search 123 | - [faerber](https://github.com/nekowinston/faerber) - CLI tool to match images to colour schemes 124 | - [lutgen](https://github.com/ozwaldorf/lutgen-rs) - CLI tool to generate LUTs and apply them to images 125 | - [pixeldetector](https://github.com/Astropulse/pixeldetector) - CLI tool to downscale and colour palette limit pixel art 126 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "crane": { 4 | "locked": { 5 | "lastModified": 1733286231, 6 | "narHash": "sha256-mlIDSv1/jqWnH8JTiOV7GMUNPCXL25+6jmD+7hdxx5o=", 7 | "owner": "ipetkov", 8 | "repo": "crane", 9 | "rev": "af1556ecda8bcf305820f68ec2f9d77b41d9cc80", 10 | "type": "github" 11 | }, 12 | "original": { 13 | "owner": "ipetkov", 14 | "repo": "crane", 15 | "type": "github" 16 | } 17 | }, 18 | "fenix": { 19 | "inputs": { 20 | "nixpkgs": [ 21 | "lutgen-rs", 22 | "nixpkgs" 23 | ], 24 | "rust-analyzer-src": "rust-analyzer-src" 25 | }, 26 | "locked": { 27 | "lastModified": 1732689334, 28 | "narHash": "sha256-yKI1KiZ0+bvDvfPTQ1ZT3oP/nIu3jPYm4dnbRd6hYg4=", 29 | "owner": "nix-community", 30 | "repo": "fenix", 31 | "rev": "a8a983027ca02b363dfc82fbe3f7d9548a8d3dce", 32 | "type": "github" 33 | }, 34 | "original": { 35 | "owner": "nix-community", 36 | "repo": "fenix", 37 | "type": "github" 38 | } 39 | }, 40 | "flake-utils": { 41 | "inputs": { 42 | "systems": "systems" 43 | }, 44 | "locked": { 45 | "lastModified": 1731533236, 46 | "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 47 | "owner": "numtide", 48 | "repo": "flake-utils", 49 | "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 50 | "type": "github" 51 | }, 52 | "original": { 53 | "owner": "numtide", 54 | "repo": "flake-utils", 55 | "type": "github" 56 | } 57 | }, 58 | "lutgen-rs": { 59 | "inputs": { 60 | "crane": "crane", 61 | "fenix": "fenix", 62 | "flake-utils": "flake-utils", 63 | "nixpkgs": [ 64 | "nixpkgs" 65 | ] 66 | }, 67 | "locked": { 68 | "lastModified": 1733529242, 69 | "narHash": "sha256-VE4R0rdQbZ7cyCPRtWWARUAnlR/KWGFUoJSJ4lySwzY=", 70 | "owner": "ozwaldorf", 71 | "repo": "lutgen-rs", 72 | "rev": "caf37f3f38989d17941c4d821640473cd255a6a0", 73 | "type": "github" 74 | }, 75 | "original": { 76 | "owner": "ozwaldorf", 77 | "repo": "lutgen-rs", 78 | "type": "github" 79 | } 80 | }, 81 | "nixpkgs": { 82 | "locked": { 83 | "lastModified": 1743827369, 84 | "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=", 85 | "owner": "nixos", 86 | "repo": "nixpkgs", 87 | "rev": "42a1c966be226125b48c384171c44c651c236c22", 88 | "type": "github" 89 | }, 90 | "original": { 91 | "owner": "nixos", 92 | "ref": "nixos-unstable", 93 | "repo": "nixpkgs", 94 | "type": "github" 95 | } 96 | }, 97 | "root": { 98 | "inputs": { 99 | "lutgen-rs": "lutgen-rs", 100 | "nixpkgs": "nixpkgs", 101 | "systems": "systems_2" 102 | } 103 | }, 104 | "rust-analyzer-src": { 105 | "flake": false, 106 | "locked": { 107 | "lastModified": 1732633904, 108 | "narHash": "sha256-7VKcoLug9nbAN2txqVksWHHJplqK9Ou8dXjIZAIYSGc=", 109 | "owner": "rust-lang", 110 | "repo": "rust-analyzer", 111 | "rev": "8d5e91c94f80c257ce6dbdfba7bd63a5e8a03fa6", 112 | "type": "github" 113 | }, 114 | "original": { 115 | "owner": "rust-lang", 116 | "ref": "nightly", 117 | "repo": "rust-analyzer", 118 | "type": "github" 119 | } 120 | }, 121 | "systems": { 122 | "locked": { 123 | "lastModified": 1681028828, 124 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 125 | "owner": "nix-systems", 126 | "repo": "default", 127 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 128 | "type": "github" 129 | }, 130 | "original": { 131 | "owner": "nix-systems", 132 | "repo": "default", 133 | "type": "github" 134 | } 135 | }, 136 | "systems_2": { 137 | "locked": { 138 | "lastModified": 1681028828, 139 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 140 | "owner": "nix-systems", 141 | "repo": "default", 142 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 143 | "type": "github" 144 | }, 145 | "original": { 146 | "owner": "nix-systems", 147 | "repo": "default", 148 | "type": "github" 149 | } 150 | } 151 | }, 152 | "root": "root", 153 | "version": 7 154 | } 155 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "wallpapers- catppuccin-ified!"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 6 | systems.url = "github:nix-systems/default"; 7 | lutgen-rs = { 8 | url = "github:ozwaldorf/lutgen-rs"; 9 | inputs.nixpkgs.follows = "nixpkgs"; 10 | }; 11 | }; 12 | 13 | outputs = { 14 | self, 15 | nixpkgs, 16 | systems, 17 | ... 18 | } @ inputs: let 19 | inherit (nixpkgs) lib; 20 | 21 | genSystems = lib.genAttrs (import systems); 22 | pkgsFor = nixpkgs.legacyPackages; 23 | version = self.shortRev or "dirty"; 24 | in { 25 | overlays.default = _: prev: let 26 | genFlavour = flavour: 27 | prev.callPackage ./nix/builder.nix { 28 | inherit flavour version inputs; 29 | }; 30 | in { 31 | full = genFlavour null; # includes all flavours and unthemed 32 | unthemed = genFlavour "unthemed"; 33 | latte = genFlavour "latte"; 34 | frappe = genFlavour "frappe"; 35 | macchiato = genFlavour "macchiato"; 36 | mocha = genFlavour "mocha"; 37 | }; 38 | 39 | packages = genSystems (system: 40 | (self.overlays.default null pkgsFor.${system}) 41 | // { 42 | default = self.packages.${system}.full; 43 | }); 44 | 45 | formatter = genSystems (system: pkgsFor.${system}.alejandra); 46 | }; 47 | } 48 | -------------------------------------------------------------------------------- /nix/builder.nix: -------------------------------------------------------------------------------- 1 | # originally inspired by https://github.com/NotAShelf/wallpkgs/blob/e5a34ff48313b6ae38ac72da02f889ed8985d76b/nix/builder.nix 2 | { 3 | lib, 4 | stdenvNoCC, 5 | flavour ? null, 6 | version, 7 | pkgs, 8 | inputs, 9 | ... 10 | }: let 11 | pname = 12 | if (flavour == null) 13 | then "wallpapers" 14 | else "wallpapers-${flavour}"; 15 | 16 | lutApply = pkgs.writers.writePython3Bin "lut-apply" {} ( 17 | pkgs.replaceVars ../scripts/lutgen.py { 18 | lutgen = lib.getExe' inputs.lutgen-rs.packages.${pkgs.system}.default "lutgen"; 19 | } 20 | ); 21 | in 22 | stdenvNoCC.mkDerivation { 23 | inherit pname version; 24 | 25 | src = builtins.path { 26 | path = ../wallpapers; 27 | name = "${pname}-${version}"; 28 | }; 29 | 30 | strictDeps = true; 31 | 32 | preInstall = '' 33 | mkdir -p $out/share/wallpapers 34 | ''; 35 | 36 | installPhase = '' 37 | runHook preInstall 38 | ${lib.getExe lutApply} $src $out/share/wallpapers ${ 39 | if flavour != null 40 | then flavour 41 | else "" 42 | } 43 | runHook postInstall 44 | ''; 45 | 46 | meta = { 47 | description = "wallpapers- catppuccin-ified!"; 48 | license = lib.licenses.mit; 49 | platforms = lib.platforms.all; 50 | }; 51 | } 52 | -------------------------------------------------------------------------------- /scripts/lutgen.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import subprocess 4 | import shutil 5 | 6 | CTP_FLAVOURS = ["latte", "frappe", "macchiato", "mocha"] 7 | 8 | 9 | def main(input_dir, output_dir, input_flavour=None): 10 | for flavour in CTP_FLAVOURS: 11 | if input_flavour and input_flavour != flavour: 12 | continue 13 | # for every file in the input directory and its subdirectories 14 | for root, dirs, files in os.walk(input_dir): 15 | for file in files: 16 | if any(file.endswith(ext) for ext in [ 17 | "jpg", 18 | "jpeg", 19 | "png", 20 | "gif" 21 | ]): 22 | input_path = os.path.join(root, file) 23 | # print("input_path: " + input_path) 24 | relative_path = os.path.relpath(input_path, input_dir) 25 | output_path = os.path.join( 26 | output_dir, 27 | flavour, 28 | relative_path 29 | ) 30 | # print("output_path: " + output_path) 31 | apply_lutgen( 32 | [input_path], 33 | output_path=output_path, 34 | palette=f"catppuccin-{flavour}", 35 | level=16 36 | ) 37 | if input_flavour == "unthemed" or input_flavour is None: 38 | shutil.copytree(input_dir, os.path.join(output_dir, "unthemed")) 39 | 40 | 41 | def apply_lutgen(images, output_path=None, palette=None, level=10): 42 | command = [ 43 | '@lutgen@', 44 | 'apply' 45 | ] 46 | if output_path: 47 | command.append(f'--output={output_path}') 48 | if palette: 49 | command.append(f'--palette={palette}') 50 | command.append(f'--level={level}') 51 | command.extend(images) 52 | try: 53 | result = subprocess.run( 54 | command, 55 | check=True, 56 | text=True, 57 | capture_output=True 58 | ) 59 | print("[lutgen] output: ", result.stdout) 60 | except subprocess.CalledProcessError as e: 61 | print("[lutgen] error: ", e.stderr) 62 | sys.exit(e.returncode) 63 | 64 | 65 | if __name__ == "__main__": 66 | if len(sys.argv) < 3 or len(sys.argv) > 4: 67 | print("usage: python lutgen.py [flavour]") 68 | sys.exit(1) 69 | 70 | input_dir = sys.argv[1] 71 | output_dir = sys.argv[2] 72 | flavour = sys.argv[3] if len(sys.argv) == 4 else None 73 | 74 | main(input_dir, output_dir, flavour) 75 | -------------------------------------------------------------------------------- /scripts/populate.py: -------------------------------------------------------------------------------- 1 | # TODO)) update for github actions, not in use 2 | 3 | # This is a merge of https://github.com/DragonDev07/Wallpapers/blob/main/markdown.py and https://github.com/42Willow/dotfiles/blob/45ef591a5cb06454f04b82e17be613e186533edf/hypr/wallpapers/populate.py 4 | # These are based off https://github.com/flick0/kabegami/blob/master/populate.py 5 | 6 | import os 7 | 8 | pre = f""" 9 | 10 |

11 | 12 |

13 |

14 | ~ willow's wallpaper dump ~ 15 |

16 | 17 | All wallpapers here are suitable for a 4K monitor :) 18 | 19 | Inspired by [flick0](https://github.com/flick0/kabegami) 20 | 21 | ----------------- 22 | """ 23 | 24 | post = """ 25 | ----------------- 26 | 27 | ## Credits 28 | 29 | A huge thanks to [NotAShelf](https://github.com/NotAShelf) for his [wallpkgs](https://github.com/NotAShelf/wallpkgs) that this was originally based on. 30 | I would recommend checking out his projects and maybe even giving them a star! 31 | 32 | All images are sourced from the internet and are not my own work. If you are the original artist and would like me to remove your work, please contact me via email at `42willow [at] pm [dot] me`. 33 | 34 | - [Flick0](https://github.com/flick0/kabegami) 35 | - [DragonDev07 (for more script features)](https://github.com/DragonDev07/Wallpapers/blob/main/markdown.py) 36 | - [Biohazardia](https://www.deviantart.com/biohazardia/gallery) 37 | - [Imgur Pixel Art Dump](https://imgur.com/gallery/SELjK) 38 | - [Kurzgesagt - AI upscaled](https://www.reddit.com/r/kurzgesagt/comments/15pvf7h/kurzgesagt_4k_wallpapers_3840x2160/) 39 | 40 | ## Tools 41 | 42 | - [tineye](https://www.tineye.com/) - Reverse image search 43 | - [faerber](https://github.com/nekowinston/faerber) - CLI tool to match images to colour schemes 44 | - [lutgen](https://github.com/ozwaldorf/lutgen-rs) - CLI tool to generate LUTs and apply them to images 45 | - [pixeldetector](https://github.com/Astropulse/pixeldetector) - CLI tool to downscale and colour palette limit pixel art 46 | """ 47 | 48 | def image_embed(title,folder,img): 49 | return f"""
\n""" 50 | 51 | def has_image_files(directory): 52 | for _, _, files in os.walk(directory): 53 | for file in files: 54 | if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.webp', '.webm')): 55 | return True 56 | return False 57 | 58 | def create_readme(directory): 59 | readme_content = pre 60 | 61 | # Get top-level directories 62 | top_level_dirs = [d for d in os.listdir(directory) if os.path.isdir(os.path.join(directory, d))] 63 | 64 | for top_level_dir in top_level_dirs: 65 | top_level_path = os.path.join(directory, top_level_dir) 66 | print(f"======{top_level_path}======") 67 | 68 | # Ignore hidden directories and directories without image files 69 | if top_level_dir.startswith('.') or not has_image_files(top_level_path): 70 | continue 71 | 72 | # Add heading for top-level directories 73 | readme_content += f"## {top_level_dir}\n\n" 74 | 75 | # Check if top-level directory has subdirectories 76 | has_subdirectories = any(os.path.isdir(os.path.join(top_level_path, d)) for d in os.listdir(top_level_path)) 77 | 78 | # If top-level directory doesn't have subdirectories, add dropdown 79 | if not has_subdirectories: 80 | readme_content += f"
{top_level_dir}\n\n" 81 | 82 | # Walk through the directory structure 83 | for root, dirs, files in os.walk(top_level_path): 84 | relative_path = os.path.relpath(root, directory) 85 | print(f"+++ {relative_path} +++") 86 | 87 | # Ignore hidden directories 88 | dirs[:] = [d for d in dirs if not d.startswith('.')] 89 | 90 | # If we are in a subdirectory, add it as a dropdown 91 | if relative_path != top_level_dir: 92 | readme_content += f"
{os.path.basename(relative_path)}\n\n" 93 | 94 | for file in files: 95 | file_path = os.path.relpath(os.path.join(root, file)) 96 | file_name, _ = os.path.splitext(file) 97 | print(file_name) 98 | 99 | # Extract tags from filename and enclose them in inline code blocks 100 | tags = [f"`{tag.strip('`')}`" for tag in file_name.split("-")] if "-" in file_name else [f"`{file_name.strip('`')}`"] 101 | 102 | # Add tags above image 103 | readme_content += f"**Tags:** {' '.join(tags)}\n\n" 104 | readme_content += f"\n\n" 105 | 106 | 107 | # Close the details tag if we are in a subdirectory 108 | if relative_path != top_level_dir: 109 | readme_content += "
\n\n" 110 | 111 | # Close the top-level directory dropdown 112 | readme_content += f"
\n\n" 113 | 114 | with open("README.md", "w") as readme_file: 115 | readme_file.write(readme_content + post) 116 | 117 | if __name__ == "__main__": 118 | directory_path = input("Enter the directory path: ") 119 | create_readme(directory_path) 120 | print("README.md created successfully.") 121 | -------------------------------------------------------------------------------- /scripts/sanitise.py: -------------------------------------------------------------------------------- 1 | import os 2 | import glob 3 | 4 | def sanitise_filenames(file_patterns): 5 | files = [] 6 | for pattern in file_patterns: 7 | files.extend(glob.glob(pattern, recursive=True)) 8 | 9 | for old_file in files: 10 | name, ext = os.path.splitext(old_file) 11 | sanitised_name = name.lower().replace(' ', '_').replace('-', '_') 12 | if ext.lower() == '.jpeg': 13 | ext = '.jpg' 14 | new_filename = sanitised_name + ext 15 | if old_file != new_filename: 16 | os.rename(old_file, new_filename) 17 | print(f'Renamed: "{old_file}" to "{new_filename}"') 18 | 19 | file_patterns_input = input("Enter files:") 20 | file_patterns = file_patterns_input.split() 21 | 22 | sanitise_filenames(file_patterns) 23 | -------------------------------------------------------------------------------- /site/.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | 4 | # generated types 5 | .astro/ 6 | 7 | # dependencies 8 | node_modules/ 9 | 10 | # logs 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # environment variables 17 | .env 18 | .env.production 19 | 20 | # macOS-specific files 21 | .DS_Store 22 | 23 | # jetbrains setting folder 24 | .idea/ 25 | -------------------------------------------------------------------------------- /site/astro.config.mjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | import { defineConfig } from "astro/config"; 3 | import tailwindcss from "@tailwindcss/vite"; 4 | 5 | // https://astro.build/config 6 | export default defineConfig({ 7 | vite: { 8 | plugins: [tailwindcss()], 9 | }, 10 | site: "https://42willow.github.io", 11 | base: "wallpapers", 12 | }); 13 | -------------------------------------------------------------------------------- /site/bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/site/bun.lockb -------------------------------------------------------------------------------- /site/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "site", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "scripts": { 6 | "dev": "astro dev", 7 | "build": "astro build", 8 | "preview": "astro preview", 9 | "astro": "astro" 10 | }, 11 | "dependencies": { 12 | "@catppuccin/tailwindcss": "github:catppuccin/tailwindcss#feat!/tailwindcss-v4", 13 | "@tailwindcss/vite": "^4.1.3", 14 | "astro": "^5.6.1", 15 | "tailwindcss": "^4.1.3" 16 | } 17 | } -------------------------------------------------------------------------------- /site/public/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 20 | 22 | 51 | 53 | 54 | 56 | image/svg+xml 57 | 59 | 60 | 61 | 62 | 75 | 80 | 85 | 92 | 99 | 106 | 113 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /site/src/assets/wallpapers: -------------------------------------------------------------------------------- 1 | ../../../result/share/wallpapers -------------------------------------------------------------------------------- /site/src/components/Card.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import type { ImageMetadata } from "astro"; 3 | import { Image } from "astro:assets"; 4 | 5 | interface Props { 6 | images: Record Promise<{ default: ImageMetadata }>>; 7 | imgPath: string; 8 | name: string; 9 | flavour: string; 10 | author?: string; 11 | class?: string; 12 | } 13 | 14 | const { 15 | images, 16 | imgPath, 17 | name, 18 | flavour, 19 | author, 20 | class: className, 21 | } = Astro.props; 22 | if (!images[imgPath]) throw new Error(`"${imgPath}" does not exist in glob`); 23 | --- 24 | 25 |
26 |
27 | {author 34 |
37 | {name.replaceAll("_", " ")} 38 |
39 |
40 |
41 | -------------------------------------------------------------------------------- /site/src/components/FlavourSelector.astro: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | -------------------------------------------------------------------------------- /site/src/components/Gallery.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Card from "./Card.astro"; 3 | import type { ImageMetadata } from "astro"; 4 | 5 | const images = import.meta.glob<{ default: ImageMetadata }>( 6 | "/src/assets/**/*.{jpeg,jpg,png,gif}", 7 | ); 8 | 9 | let re = 10 | /^\/src\/assets\/wallpapers\/(?\w+)\/(?\w+)\/(?:(?\w+)\/)?(?:(?\w+)\/)?(?\w+)\..*$/; 11 | 12 | const walls = Object.keys(images) 13 | .map((item) => { 14 | // console.log(`item: ${item}`); 15 | const match = item.match(re); 16 | // console.log(match); 17 | if (!match) { 18 | throw new Error(`failed to parse image path: ${item}`); 19 | } 20 | return { 21 | path: item, 22 | flavour: match.groups?.flavour, 23 | type: match.groups?.type, 24 | category: match.groups?.category, 25 | author: match.groups?.author, 26 | name: match.groups?.name, 27 | }; 28 | }) 29 | .filter((item) => item !== null); 30 | --- 31 | 32 |
33 | { 34 | walls.map((item) => ( 35 | 43 | )) 44 | } 45 |
46 | 47 | 51 | 52 | 133 | -------------------------------------------------------------------------------- /site/src/components/Greeting.astro: -------------------------------------------------------------------------------- 1 |
2 |

3 | warning: this site is still a work in progress, you may have 4 | a better experience previewing the wallpapers here in the meantime 9 |

10 |
11 | 12 |

hii, welcome to my wallpaper dump!

13 | 14 |

remember to credit original authors and enjoy your stay ^-^

15 | 16 |

17 | note: the reason the wallpapers are compressed is to speed up 18 | your viewing experience, if you hover over the wallpaper you will find a download 19 | button 20 |

21 | 22 |
23 | -------------------------------------------------------------------------------- /site/src/components/Navbar.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import FlavourSelector from "./FlavourSelector.astro"; 3 | --- 4 | 5 | 44 | -------------------------------------------------------------------------------- /site/src/layouts/Layout.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import "../styles/global.css"; 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | willow's wallpaper dump 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /site/src/pages/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Navbar from "../components/Navbar.astro"; 3 | import Greeting from "../components/Greeting.astro"; 4 | import Gallery from "../components/Gallery.astro"; 5 | import Layout from "../layouts/Layout.astro"; 6 | --- 7 | 8 | 9 | 10 |
11 | 12 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /site/src/styles/global.css: -------------------------------------------------------------------------------- 1 | @import url("https://unpkg.com/@catppuccin/palette/css/catppuccin.css"); 2 | @import url("https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&family=Pacifico&display=swap"); 3 | 4 | @import "tailwindcss"; 5 | @import "@catppuccin/tailwindcss/docs/src/styles/palette.css"; 6 | @import "@catppuccin/tailwindcss/docs/src/styles/tailwind.config.css"; 7 | 8 | @theme { 9 | --font-pacifico: "Pacifico", sans-serif; 10 | --font-lexend: "Lexend", sans-serif; 11 | --nav-h-desktop: 5rem; 12 | --nav-h-mobile: 10rem; 13 | } 14 | 15 | @layer base { 16 | body { 17 | @apply bg-ctp-base text-ctp-text font-lexend; 18 | } 19 | .card { 20 | @apply hidden; 21 | 22 | &.latte { 23 | @apply in-[.latte]:inline-block; 24 | } 25 | &.frappe { 26 | @apply in-[.frappe]:inline-block; 27 | } 28 | &.macchiato { 29 | @apply in-[.macchiato]:inline-block; 30 | } 31 | &.mocha { 32 | @apply in-[.mocha]:inline-block; 33 | } 34 | &.unthemed { 35 | @apply in-[.unthemed]:inline-block; 36 | } 37 | } 38 | } 39 | 40 | @layer components { 41 | .btn { 42 | @apply rounded-lg p-1.5 text-sm sm:text-base bg-ctp-crust transition-colors duration-300 hover:!bg-ctp-pink hover:!text-ctp-base ring-1 ring-ctp-surface0; 43 | &.active { 44 | @apply bg-ctp-pink/20 ring-1 ring-ctp-pink; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /site/src/utils/flavour-selector.ts: -------------------------------------------------------------------------------- 1 | const flavours = ["latte", "frappe", "macchiato", "mocha", "unthemed"]; 2 | 3 | applyTheme("macchiato"); 4 | 5 | // flavour selector listeners 6 | flavours.forEach((flavour) => { 7 | let btn = document.querySelectorAll( 8 | `#flavour-selector > #${flavour}`, 9 | ) as NodeListOf; 10 | btn.forEach((btn) => { 11 | btn.addEventListener("click", () => { 12 | applyTheme(flavour); 13 | }); 14 | }); 15 | }); 16 | 17 | function applyTheme(theme: string) { 18 | document.body.className = theme; 19 | // reset active class 20 | document.querySelectorAll("#flavour-selector > button").forEach((btn) => { 21 | btn.classList.remove("active"); 22 | }); 23 | // set active button 24 | document.querySelectorAll(`#flavour-selector > #${theme}`)?.forEach((btn) => { 25 | btn.classList.add("active"); 26 | }); 27 | } 28 | -------------------------------------------------------------------------------- /site/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "astro/tsconfigs/strict", 3 | "include": [".astro/types.d.ts", "**/*"], 4 | "exclude": ["dist"] 5 | } 6 | -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/asteroid_miner_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/asteroid_miner_1.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/asteroid_miner_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/asteroid_miner_2.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/asteroids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/asteroids.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/baby_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/baby_star.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/black_hole_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/black_hole_1.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/black_hole_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/black_hole_2.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/cloudy_quasar_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/cloudy_quasar_1.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/cloudy_quasar_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/cloudy_quasar_2.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/contemplative_cosmonaut_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/contemplative_cosmonaut_1.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/contemplative_cosmonaut_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/contemplative_cosmonaut_2.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/contemplative_cosmonaut_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/contemplative_cosmonaut_3.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/contemplative_cosmonaut_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/contemplative_cosmonaut_4.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/cosmic_islands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/cosmic_islands.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/fleet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/fleet.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/galaxies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/galaxies.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/galaxy_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/galaxy_1.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/galaxy_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/galaxy_2.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/galaxy_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/galaxy_3.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/mars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/mars.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/on_a_moon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/on_a_moon.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/ringed_earth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/ringed_earth.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/satellite_over_earth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/satellite_over_earth.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/solar_system.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/solar_system.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/stars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/stars.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/stellar_phenomenon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/stellar_phenomenon.png -------------------------------------------------------------------------------- /wallpapers/images/art/kurzgesagt/unknown_lifeform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/kurzgesagt/unknown_lifeform.png -------------------------------------------------------------------------------- /wallpapers/images/art/willow_and_sundew.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/art/willow_and_sundew.jpg -------------------------------------------------------------------------------- /wallpapers/images/photography/lake.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/photography/lake.jpg -------------------------------------------------------------------------------- /wallpapers/images/photography/leaves_with_droplets.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/photography/leaves_with_droplets.jpg -------------------------------------------------------------------------------- /wallpapers/images/photography/macro_mushrooms.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/photography/macro_mushrooms.jpg -------------------------------------------------------------------------------- /wallpapers/images/photography/mountains.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/photography/mountains.jpg -------------------------------------------------------------------------------- /wallpapers/images/photography/sandstone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/photography/sandstone.jpg -------------------------------------------------------------------------------- /wallpapers/images/photography/trees_mountain_fog_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/photography/trees_mountain_fog_1.jpg -------------------------------------------------------------------------------- /wallpapers/images/photography/trees_mountain_fog_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/photography/trees_mountain_fog_2.jpg -------------------------------------------------------------------------------- /wallpapers/images/photography/trees_mountain_fog_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/images/photography/trees_mountain_fog_3.jpg -------------------------------------------------------------------------------- /wallpapers/pixel/art/animated_street_night.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/pixel/art/animated_street_night.gif -------------------------------------------------------------------------------- /wallpapers/pixel/art/waterfall.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/pixel/art/waterfall.jpg -------------------------------------------------------------------------------- /wallpapers/pixel/gaming/stardew_valley_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/42willow/wallpapers/36c6dee655f04e8ea0e10aa00b2978fff781c09b/wallpapers/pixel/gaming/stardew_valley_map.png --------------------------------------------------------------------------------