├── .github ├── manifest_generator.mjs └── workflows │ ├── compress-images.yml │ ├── manifest-generator.yml │ └── prettier.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md └── manifest.json /.github/manifest_generator.mjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zx 2 | const output = (await $`ls -d */`).stdout.trim(); 3 | 4 | cd('.github'); 5 | 6 | const final_manifest = await Promise.all(output.split('\n').map(async (dir) => { 7 | cd('../' + dir); 8 | const theme_manifest = (await $`cat manifest.json`).stdout.trim(); 9 | return JSON.parse(theme_manifest); 10 | })); 11 | 12 | cd('..'); 13 | 14 | await $`echo ${JSON.stringify(final_manifest, null, 2)} > manifest.json`; 15 | -------------------------------------------------------------------------------- /.github/workflows/compress-images.yml: -------------------------------------------------------------------------------- 1 | # Open a Pull Request if any images can be compressed. 2 | name: Compress Images 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '0 5 * * 6' 7 | jobs: 8 | build: 9 | name: calibreapp/image-actions 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout Repo 13 | uses: actions/checkout@v2 14 | - name: Compress Images 15 | id: calibre 16 | uses: calibreapp/image-actions@main 17 | with: 18 | githubToken: ${{ secrets.GITHUB_TOKEN }} 19 | compressOnly: true 20 | jpegQuality: '75' 21 | jpegProgressive: false 22 | pngQuality: '75' 23 | webpQuality: '75' 24 | - name: Create New Pull Request If Needed 25 | if: steps.calibre.outputs.markdown != '' 26 | uses: peter-evans/create-pull-request@v3 27 | with: 28 | title: Compressed Images Nightly 29 | branch-suffix: timestamp 30 | commit-message: Compressed Images 31 | body: ${{ steps.calibre.outputs.markdown }} 32 | -------------------------------------------------------------------------------- /.github/workflows/manifest-generator.yml: -------------------------------------------------------------------------------- 1 | name: Generate Manifest 2 | on: 3 | pull_request: 4 | branches: 5 | - master 6 | 7 | jobs: 8 | generate-manifest: 9 | name: Generate Manifest 10 | runs-on: ubuntu-20.04 11 | steps: 12 | - uses: actions/setup-node@v3 13 | with: 14 | node-version: 16 15 | 16 | - name: checkout 17 | uses: actions/checkout@v2 18 | with: 19 | repository: ${{ github.event.pull_request.head.repo.full_name }} 20 | ref: ${{ github.event.pull_request.head.ref }} 21 | 22 | - name: generating manifest 23 | env: 24 | FORCE_COLOR: 3 25 | run: | 26 | npx zx <<'EOF' 27 | const output = (await $`ls -d */`).stdout.trim(); 28 | 29 | cd('.github'); 30 | 31 | const final_manifest = await Promise.all(output.split('\n').map(async (dir) => { 32 | cd('../' + dir); 33 | const theme_manifest = (await $`cat manifest.json`).stdout.trim(); 34 | return JSON.parse(theme_manifest); 35 | })); 36 | 37 | cd('..') 38 | 39 | await $`echo ${JSON.stringify(final_manifest, null, 2)} > manifest.json` 40 | EOF 41 | 42 | - name: push generated manifest 43 | uses: EndBug/add-and-commit@v9 44 | with: 45 | add: 'manifest.json' 46 | message: 'chore: update manifest.json' 47 | committer_name: GitHub Actions 48 | committer_email: actions@github.com 49 | -------------------------------------------------------------------------------- /.github/workflows/prettier.yml: -------------------------------------------------------------------------------- 1 | name: Prettier CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | prettier: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v2 15 | with: 16 | ref: ${{ github.head_ref }} 17 | 18 | - name: Prettify code 19 | uses: creyD/prettier_action@v4.2 20 | with: 21 | prettier_options: --write **/*.{json,md} 22 | commit_message: 'style: prettify code' 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .vscode -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing guidelines 2 | 3 | To measure extension popularity, one thing that we must ask of you is that **each one of your extensions is developed within a repository of its own**. 4 | 5 | ## Before contributing 6 | 7 | An extension name should consist of one word starting with an uppercase letter and shouldn't contain `spicetify` or any whitespace in it; if a "-" is present in the name it must be followed by an uppercase letter. 8 | 9 | ## How to contribute 10 | 11 | If you want your extension to show up on **Spicetify Marketplace**, you will need to create a Pull Request to this repository with the following structure: 12 | 13 | ``` 14 | . 15 | ├── ... 16 | ├── Extension_name # Folder with your extension name. 17 | │ ├── screenshots # Folder with extension screenshots. 18 | │ ├── manifest.json # Manifest file with the structure detailed below. 19 | │ └── README.md # Readme file with the extension description. 20 | └── ... 21 | ``` 22 | 23 | For this, you'll need: 24 | 25 | 1. Fork this repository 26 | 2. Create another folder named after your extension name 27 | 3. Create a `README.md` in it with the following structure 28 | 29 | ```markdown 30 | # Extension Name 31 | 32 | Description of your extension. 33 | 34 | ## Screenshots 35 | 36 | [Put at least one image here] 37 | 38 | ## More 39 | 40 | [Specify any needed font; (optionally) author name and/or any other info about the extension] 41 | ``` 42 | 43 | > _Note_: All screenshots must be in PNG format and, additionally, must be uploaded to this repository. 44 | 45 | 4. Commit only once, more details in the **Commit Message** 46 | 5. Open a Pull Request and mention the most important changes you've made to the UI (ignoring the color scheme) 47 | 48 | **Thanks to all the contributors.** 49 | 50 | ## Commit Message 51 | 52 | ### Format 53 | 54 | (): 55 | 56 | [optional] 57 | 58 | **Any line of the commit message cannot be longer than 100 characters!** 59 | 60 | - **type:** feat | fix | docs | chore 61 | - **feat:** A new extension | A new scheme | A new feature 62 | - **fix:** A bug fix 63 | - **docs:** Change the `README.md` of the extension 64 | - **chore:** Add more screenshots | Change the screenshots | Other things 65 | - **scope:** `` 66 | - **subject:** What changes you have done 67 | - Use the imperative, present tense: "change" not "changed" nor "changes" 68 | - Don't capitalize the first letter 69 | - No dot (.) at the end 70 | - **body**: More details of your changes, you can mention the most important changes here 71 | 72 | ### Example (Wikify extension) 73 | 74 | - feat 75 | 76 | ``` 77 | feat(Wikify): add Wikify extension 78 | ``` 79 | 80 | ``` 81 | feat(Wikify): support for different fonts 82 | ``` 83 | 84 | - fix 85 | 86 | ``` 87 | fix(Wikify): show the cursor outside the context menu 88 | ``` 89 | 90 | - docs 91 | 92 | ``` 93 | docs(Wikify): update README.md 94 | ``` 95 | 96 | ``` 97 | docs(Wikify): add preview for the Wikify 98 | ``` 99 | 100 | - chore 101 | 102 | ``` 103 | chore(Turntable): update supported versions 104 | ``` 105 | 106 | If you want to learn more, view the [Angular - Git Commit Guidelines](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines). 107 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Spicetify 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 | # Spicetify Extensions 2 | 3 | This repository holds the official list of all [Spicetify](https://github.com/spicetify/spicetify-cli) themes, a command-line tool to customize Spotify. If a theme is present here, then it will be present in Spicetify Marketplace. 4 | 5 | > _Note_: Due to the development of Spicetify Marketplace, a game-changing addition to the Spicetify ecosystem, we are now shifting towards a more open-source friendly approach to theme development. This means that theme creators should now have the freedom to build their themes in a repository owned by them, rather than a repository owned by Spicetify. 6 | 7 | > _Note_: Although in the past this repository held the whole code for themes, we are now simply holding the list of available themes. Think of it as an index of themes, or a Database _of sorts_. 8 | 9 | You can add your own theme simply by opening a Pull Request (more info in [CONTRIBUTING.md](./CONTRIBUTING.md)). 10 | 11 | ### **You can find a preview of all the themes in [THEMES.md](./THEMES.md).** 12 | 13 | ## Notes: 14 | 15 | - **These themes require that you have the latest version of Spotify and Spicetify.** 16 | - **To install Dribbblish and Turntable themes, follow the instructions in their READMEs**. 17 | - **Spotify ad-blocked version is not supported.** 18 | 19 | ## Installation and usage 20 | 21 | (If you use Arch Linux you can find this project on the [AUR](https://aur.archlinux.org/packages/spicetify-themes-git/)) 22 | 23 | 1. Clone this repository. Make sure [git](https://git-scm.com/) is installed and run: 24 | 25 | ```bash 26 | git clone https://github.com/spicetify/spicetify-themes.git 27 | ``` 28 | 29 | 2. Copy the files into the [Spicetify Themes folder](https://spicetify.app/docs/development/customization#themes). Run: 30 | 31 | **Linux** 32 | 33 | ```bash 34 | cd spicetify-themes 35 | cp -r * ~/.config/spicetify/Themes 36 | ``` 37 | 38 | **MacOS** 39 | 40 | ```bash 41 | cd spicetify-themes 42 | cp -r * ~/.config/spicetify/Themes 43 | ``` 44 | 45 | **Windows** 46 | 47 | ```powershell 48 | cd spicetify-themes 49 | cp * "$(spicetify -c | Split-Path)\Themes\" -Recurse 50 | ``` 51 | 52 | 3. Choose which theme to apply just by running: 53 | ```bash 54 | spicetify config current_theme THEME_NAME 55 | ``` 56 | Some themes have 2 or more different color schemes. After selecting the theme you can switch between them with: 57 | ```bash 58 | spicetify config color_scheme SCHEME_NAME 59 | ``` 60 | 61 | ### Extra 62 | 63 | The `_Extra` folder contains additional resources for tweaking the look of 64 | Spotify. More info in its [README](./.Extra/README.md). 65 | 66 | ## Contributions 67 | 68 | We've set up a separate document for our [contribution guidelines](./CONTRIBUTING.md). 69 | 70 | ## Troubleshooting 71 | 72 | Do not open issues for general support questions as we want to keep GitHub issues for bug reports and feature requests. If you find problems when using or installing these themes, or you need help in modifying a theme then ask for suggestions on the [subreddit](https://www.reddit.com/r/spicetify/) or on the [Discord Server](https://discord.com/invite/VnevqPp2Rr). 73 | 74 | Use GitHub issues ONLY for bugs and requesting new features. 75 | 76 | If you are unsure about which channel to use, go for Reddit or Discord. 77 | 78 | ## Useful resources 79 | 80 | - [Spicetify theme without free version UI elements (e.g. "Upgrade" button)](https://github.com/Daksh777/SpotifyNoPremium) 81 | - [DribbblishDynamic theme for v2](https://github.com/JulienMaille/dribbblish-dynamic-theme) 82 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spicetify/spicetify-extensions/a7602ea7eafc6576dde0aa6b98052df29d90129b/manifest.json --------------------------------------------------------------------------------