cli

Command-line tool to customize Spotify client. Supports Windows, MacOS, and Linux.

LGPL-2.1 License

Downloads
640
Stars
17.5K
Committers
102

Bot releases are hidden (Show)

cli -

Published by khanhas over 4 years ago

Nothing changed from last release, I just forgot to push 2 last commits before making new release.
Changelog v1.0.0

cli -

Published by khanhas over 4 years ago

Add

  • Windows Store Spotify support: For users who have trouble installing normal Spotify version. If you are already using normal Spotify, there is no reason to install Windows Store Spotify because of this.

  • Disable Web UI permanently by default. Since Web UI is impossible to theme or expose API, I prevent it to load completely. If you are fell into A/B Testing group by Spotify, this spicetify update would revert you back to normal UI. Please run spicetify restore backup apply to apply the change.

  • Preprocess disable_upgrade_check: Prevent Spotify checking new version status and notifying visually. It is useful for users who deleted SpotifyMigrator.exe and SpotifyUpdate.exe to stop Spotify automatic update.

  • Live update: Automatically reload Spotify on change. Please add flag -l when running "watch":

spicetify watch -l
spicetify watch -e -l
  • Extension New Release: Aggregate all new releases from favorite artists, podcasts. Setting menu could be opened by right clicking at Bell icon. To install, please run:
spicetify config extensions newRelease.js
spicetify apply

image

  • Extension Bookmark: New version, no longer need companion custom app. To install, please run:
spicetify config extensions bookmark.js
spicetify apply

image

  • Extension Full App Display: Minimal album cover art display with beautiful blur effect background. To install, please run:
spicetify config extensions fullAppDisplay.js
spicetify apply

Activating button locates in top bar. While in display mode, double click anywhere to exit. Right click anywhere to open setting menu.

image

  • Config spotify_launch_flags: Specify commandline flags to launch/restart Spotify. Separate flags by | character.
[Setting]
...
spotify_launch_flags = --transparent-window-controls | --remote-debugging-port=9222
  • Javascript module path mapping: While developing extension as JS module, we had to specify path to compiled, transpiled JS file that is compatible with browser. Although it works completely fine in Spotify browser, it's hard for IDE like VSCode to know what does module contain and suggest developers usable functions or classes. So I added this niche little feature to automatically map package name to its correct path in final script. In your script, instead of using path to file like before, just use package name and add a comment before import line with this syntax for Spicetify to map it correctly. For example
import "./node_modules/match-sorter/dist/match-sorter.umd.js";

to

//spicetify_map{matchSorter from "match-sorter"}{"./node_modules/match-sorter/dist/match-sorter.umd.min.js"}
import matchSorter from "match-sorter";

Fix

#223
https://github.com/khanhas/spicetify-cli/pull/226

Remove

  • Custom app Bookmark: No long needed.
cli -

Published by khanhas over 4 years ago

Add

  • Support custom colour key in color.ini:
    Example:
    In my color.ini, I make a new key header_bg with value FF0000 under Base color scheme:
[Base]
main_fg                               = FE6F61
secondary_fg                          = 3D3D3D
main_bg                               = FAFAFA
...
header_bg = FF0000

Then in user.css, CSS variable --modspotify_header_bg will be available to use:

.glue-page-header__full-description-overlay {
	background-color: var(--modspotify_header_bg) !important;
}
  • API Spicetify.Abba: Fetch and overrides your A/B test flags. Documentation.

  • Command-line flag -n or --no-restart: Tell spicetify to not restart your Spotify client after finishing apply or restore command.

Update

  • Exposed Spicetify to window.Spicetify: When making custom apps, you can access Spicetify API via window.top.Spicetify.

Fix

  • Spicetify.Menu had cleaner injection. Items won't show up on other popup menus beside profile menu.
  • PLAYLIST_V2 not supported error in shuffle+.js

I just added integration with Musixmatch for my genius-spicetify app. Try it out if you want to have synced lyric to sing along: https://github.com/khanhas/genius-spicetify

cli -

Published by khanhas over 4 years ago

Add

  • Inject extension with file extension .mjs as a script with type="module".
  • Symlink node_modules folder found in user's Extensions folder to zlink.
    With these 2 new features, you can take advantage of Node Package Manager to download and use utilities packages. For more information, please take a look at Wiki page and my example.

Change

  • Preprocess disable_sentry: Now also disable Amazon Qualaroo. Please run spicetify restore backup apply for new preprocess routine to be applied.
  • Extension keyboardShortcut.js: support play a track in playlist app.

Remove

  • new_feedback_ui and search_in_sidebar additional options: No longer customizable.

Fix

  • #149
cli -

Published by khanhas over 4 years ago

Fix:

  • #131
  • #136
cli -

Published by khanhas almost 5 years ago

Add

  • minimal_ui additional option: Alternative lightweight UI from Spotify. It's basically Web Player UI with some small differences.
    To access it, run:
spicetify config minimal_ui 1
spicetify apply

and open via new button in bottom right.

Note: Not yet available for Spotify in Linux.

  • tastebuds additional option: Testing feature in Minimal UI. Not yet usable for anyone. But when it is, you're the first to test. More info.
    To access it, run:
spicetify config tastebuds 1
spicetify apply

then open Minimal UI, it locates at left sidebar.

  • Slight update on SpicetifyDefault theme for Minimal UI.

Fix

  • Spicetify.showNotification API method: #99
cli -

Published by khanhas about 5 years ago

Add

  • auto command: Automatically check Spotify state, backup and apply if needed, then run Spotify normally. Useful for being a shortcut to launch Spotify and ensure that Spotify always be spiced.

  • French translation for reddit app

Fix

  • reddit and bookmark apps: glue.css missing bug

Notes for Windows user: If you are having trouble with install.ps1 script because it requires Internet Explorer or Powershell 5, please use install_curl.ps1

curl.exe "https://raw.githubusercontent.com/khanhas/spicetify-cli/master/install_curl.ps1" -o install_curl.ps1
Invoke-Expression install_curl.ps1
cli -

Published by khanhas about 5 years ago

Fix:

  • Custom apps is injected normally now. #64
  • glue.css: Prior to this update, I had modification in preprocess that removed almost all glue.css files and referenced their links to zlink' app's glue.css link. This modification purpose was to prevent Spotify loading same CSS file over and over again. Since it was adopted by Spotify in client version 1.1.15, we don't to do this trick anymore. #67
  • color command: should display all default colors when current_theme config is blank.
cli -

Published by khanhas about 5 years ago

Add

  • API ContextMenu: Create custom item and prepend to user right click menu. Check out its docs in global.d.ts.
  • Extension Shuffle+: Support Artist context
  • Extension Shuffle+: Ability to play artist, album, playlist, folder and selection of tracks with Shuffle+ straight in right click menu:
    image
    image

Change

  • Extension Trashbin: No longer use icon to toggle trash state, both in player bar and artist page. Instead, user can just right click at track and artist link to Throw to or Take out of Trashbin.

image
image

  • Theme SpicetifyDefault: Remove Starwar Easter egg and New Playlist button (#55) and some small update.
  • Theme SpicetifyDefault: Move dark colorscheme to its own section. Now user can just run these commands to switch to default Dark theme:
spicetify config color_scheme Dark
spicetify apply

Fix

  • Command line flag --quiet. Was --quite. #54 Thanks @StewartThomson
  • API description for Spicetify.Player.next and Spicetify.Player.previous. #46 Thanks @Strazdonis
cli -

Published by khanhas over 5 years ago

Fix

  • Out of range panic bug in path command
cli -

Published by khanhas over 5 years ago

Add

  • Ability to shut off AdditionalFeatures: Most of options in AdditionalFeatures section are features that are being tested by Spotify developers. They are automatically enabled in some groups of users, disabled on others. If you don't like one of these features at all, set it to -1. https://github.com/khanhas/spicetify-cli/issues/28

  • Ability to print all colors, all paths, all config values or one of config value right in CLI. Check out spicetify -h for usage.

image

image

Change

  • Extension keyboardShortcut.js: Majority of keybinds are changed to comply with other keyboard-driven softwares. I also wrote a bit of documentation in extension file, check them out for current key combinations and add/change on your own.

Fix

  • LibURI -> URI in spicetifyWrapper. Spicetify.getAudioData and Spicetify.getAblumArtColors can be used normally now.

Remove

  • made_for_you_hub config option: This feature is now official and no longer customizable.
cli -

Published by khanhas over 5 years ago

Add

  • color_scheme config option: Change color schemes at ease with this new option. Simply put your schemes in same color.ini file in same theme, but in different sections. Example color.ini:
[Base]
main_fg        = 1a73e8
secondary_fg   = 5f5e68
main_bg        = ffffff
...

[Dark]
main_fg        = 8AB4F8
secondary_fg   = BDC1C6
main_bg        = 202124
...

[Green]
main_fg        = C2D935
secondary_fg   = DEDEDE
main_bg        = 0A0E14
...

Now, if you want to change to [Dark] scheme, run:

spicetify config color_scheme Dark
spicetify update

On default, color_scheme option is blank. If color_scheme option is blank, first section in color.ini will be used.

  • new_feedback_ui config option: Enable new feedback UI with refreshing icons, text and buttons.
    image

image

  • search_in_sidebar config option: Enable new search UI. Search button is also moved to sidebar.

image

Fix

  • Extension djMode: Double clicking on a track in playlist or album now queues that track.

I just made a new theme for Spicetify for fun, it has a bit of Google style. Check it out if you like: https://github.com/khanhas/google-spicetify

image

cli -

Published by khanhas over 5 years ago

Add

  • [LINUX] Ability to use XResources database in theme's color.ini. #17
    Extremely useful for who uses pywal to generate color scheme.
    Syntax: ${xrdb:<variable name>} or ${xrdb:<variable name>:<fallback value>}
    Example usage:
[Base]
main_fg                               = ${xrdb:color14}
secondary_fg                          = ${xrdb:foreground:#FFF}
main_bg                               = ${xrdb:background}
...
  • Ability to use environment variable in theme's color.ini
    Syntax: ${<variable name}
    Example usage:
main_fg = ${LIGHT_GREY}

Note: Environment variables, not shell variables.

  • Short hex color code support: #FFF, #544

Fix

  • Extension Shuffle+: Buttons not appended bug
cli -

Published by khanhas over 5 years ago

Add

For example, I want to replace images/connect_devices.svg file in zlink folder:

asd

Change

  • [LINUX] Move default Spicetify config directory to $XDG_CONFIG_HOME. If that variable is not available in environment, $HOME/config will be used instead. https://github.com/khanhas/spicetify-cli/issues/12
    If you want it to be somewhere else, please set desired directory in environment variable SPICETIFY_CONFIG.
    Remember to manually move your own themes/extensions/apps (if you have any) and config file in old config folder to new one.
cli -

Published by khanhas over 5 years ago

Add

  • New app and extension Bookmark: Easily store and browse pages, play tracks or tracks in specific time. Useful for who wants to check out an artist, album later without following them or writing their name down.
    Demo usage: https://streamable.com/0qh6p
    To install, run following commands:
spicetify config extensions bookmark.js
spicetify config custom_apps bookmark
spicetify apply
  • Command path: Print path of theme's color.ini, user.css or extension or app and quit. Usage:

    • Print theme's color.inc path:
      spicetify path color
    • Print theme's user.css path:
      spicetify path css
    • Print extension <name> path:
      spicetify -e path <name>
    • Print custom app <name> path:
      spicetify -a path <name>
  • Extension Keyboard Shortcut: New keybinds:

    • J/K: Scroll nearest carousel left/right
    • Ctrl W: Like/Dislike track
  • Automatically create Themes, Extensions, CustomApps folders in user's .spicetify folder if they doesn't exist.

Change

  • Custom apps are now applied by creating a symlink/junction in Spotify Apps folder. So it means you can just change app content and refresh Spotify client to update new change, no need to re-apply.
  • More verbose processing steps information for apply command.

Fix

  • API Spicetify.skipBack and Spicetify.skipForward wrong function call bug.
  • API Spicetify.getHeart doesn't return value.
  • Theme SpicetifyDefault: wrong color for sidebar_indicator_and_hover_button_bg
cli -

Published by khanhas over 5 years ago

No change.
I just forgot to include default CustomApps folder in pre-built packages.
If you build from source or use Homebrew or AUR, don't need to upgrade.
If you use these pre-buit binary packages and want to use Reddit app, please download again.

cli -

Published by khanhas over 5 years ago

Adds:

  • Command config: Easily change one or multiple config values in command-line. Example usage:

    • Disable "inject_css":
      spicetify config inject_css 0
    • Enable "song_page" and disable "fastUser_switching":
      spicetify config song_page 1 fastUser_switching 0
    • Add extension keyboardShortcut.js to "extensions"
      spicetify config extensions keyboardShortcut.js
  • Command color: Easily change theme's one or multiple colors in command-line. Example usage:

    • Change "main_bg" to ff0000
      spicetify color main_bg ff0000
    • Change "slider_bg" to 00ff00 and "pressing_fg" to 0000ff
      spicetify color slider_bg 00ff00 pressing_fg 0000ff
  • Extensions keyboardShortcut.js: Register some useful keybinds to support keyboard-driven navigation in Spotify client. Less time touching the mouse.

    • Ctrl Tab / Ctrl Shift Tab: Navigate items in left sidebar menu.
    • Backspace/Shift Backspace: Navigate history backward/forward.
    • PageUp/PageDown: Force scroll up/down app page only because mouse focus is sometimes in sidebar region and they scroll sidebar instead of app page).
    • J/K: Scroll app page up/down. *Tips hat to Vim users*
    • Ctrl Q: Open Queue page.
    • `: Open up keyboard-driven navigation. Hit correct key sequences to open up place you want to go:

image

Change:

  • If config current_theme is blank, spicetify will apply original Spotify colors and CSS. Same effect as set both inject_css and replace_colors to 0.
  • API Spicetify.addToQueue and Spicetify.removeFromQueue: add supports for Local track and album URI.
cli - Fix: symbolic link bug in Homebrew

Published by khanhas over 5 years ago

spicetify-cli Homebrew install script is also updated.

brew install khanhas/tap/spicetify-cli

or

brew upgrade khanhas/tap/spicetify-cli
cli - Stop auto-update; Inject custom app

Published by khanhas over 5 years ago

Adds

  • Preprocess stop_autoupdate: Prevent Spotify to fetch and update new client version. Useful for anyone who want to keep their themes forever.
    Notes: Since it's a preprocess so you need to restore, backup and apply again to have this feature. Do it in one line:
spicetify restore backup apply
  • Inject Custom Apps: Add your app names to custom_apps in config, separate them by |
    E.g:
[AdditionalOptions]
...
custom_apps = reddit
  • Reddit app fetches playlists, tracks, albums that posted in subreddits. This app has native feels and behavior just like other Spotify apps: you can follow, save, play, open playlist/track/album directly.
cli -

Published by khanhas almost 6 years ago

Adds

  • Extension WebNowPlaying Companion (webnowplaying.js): Fetch track information, player state and control player via WebSocket protocol (localhost:8974).

This extension is made specially for Windows Rainmeter users to use along with WebNowPlaying plugin.
But MacOS and Linux users/developers can make a simple daemon program to receive information/send command on your will without touching Spotify Web API.

Update

  • SpicetifyDefault CSS: Remove obsoleted rules