Skip to content
Subway SeatSubway SeatSubway Seat
← All ports

Apps

Spotify (Spicetify)

Spicetify's color keys plus the whole palette as --spice-* variables, and a small user.css that turns Spotify's green accent into burnt orange and puts dark ink on its notification banners.

Showing WalnutTunnelEnamelMoquetteDeep LevelPortlandGuimardCatacombesCarrelage. Switch flavors with the bullets up top.

Spotify (Spicetify) Report a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this portReport a problem with this port

The quick way

The installer sets it up for you, then tells you the one thing it can't do. More ways to install

curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor walnut --only spicetify
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor tunnel --only spicetify
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor enamel --only spicetify
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor moquette --only spicetify
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor deep --only spicetify
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor portland --only spicetify
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor guimard --only spicetify
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor catacombes --only spicetify
curl -fsSL https://oddurs.github.io/subway-seat/install.sh | sh -s -- --flavor carrelage --only spicetify

Turn it on

In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme walnut
spicetify apply
In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme tunnel
spicetify apply
In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme enamel
spicetify apply
In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme moquette
spicetify apply
In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme deep
spicetify apply
In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme portland
spicetify apply
In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme guimard
spicetify apply
In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme catacombes
spicetify apply
In a terminal, with the theme in Spicetify's Themes folder
spicetify config current_theme subway-seat color_scheme carrelage
spicetify apply

One set of files covers all three flavors.

subway-seat/color.inisave as ~/.config/spicetify/Themes/subway-seat/color.ini
on Windows, %APPDATA%\spicetify\Themes\subway-seat\
; Subway Seat — generated from palette.py by build.py. Edit the palette, not this file.
; https://github.com/oddurs/subway-seat

[walnut]
; Subway Seat — Walnut paneling and orange bucket seats. The original.
text               = EDDCBC
subtext            = C4AE8C
main               = 362619
main-elevated      = 43301F
highlight          = 43301F
highlight-elevated = 513B27
sidebar            = 2A1D13
player             = 20160E
card               = 43301F
shadow             = 20160E
selected-row       = AE9575
button             = EC7F31
button-active      = FF9D55
button-disabled    = 7B6047
tab-active         = 513B27
notification       = 7F9BAE
notification-error = E05C45
equalizer          = EC7F31
misc               = 967B5C
ink                = 20160E
selection          = 634932
crust              = 20160E
mantle             = 2A1D13
base               = 362619
surface0           = 43301F
surface1           = 513B27
surface2           = 634932
overlay0           = 7B6047
overlay1           = 967B5C
overlay2           = AE9575
subtext0           = C4AE8C
subtext1           = D9C6A3
text-hi            = F8ECD4
yellow             = F3BF45
yellow-hi          = FFD36B
orange             = EC7F31
orange-hi          = FF9D55
red                = E05C45
red-hi             = FF8373
green              = ADB956
green-hi           = BFCB63
sage               = 86AD95
sage-hi            = A5C9B0
denim              = 7F9BAE
denim-hi           = 9DB6C6
clay               = F4A87E

[tunnel]
; Subway Seat Tunnel — The late local after midnight: espresso-deep, same warm lights.
text               = E9D8B6
subtext            = C0AA88
main               = 24180E
main-elevated      = 302115
highlight          = 302115
highlight-elevated = 3D2C1D
sidebar            = 1B120A
player             = 140D07
card               = 302115
shadow             = 140D07
selected-row       = AA9171
button             = EC7F31
button-active      = FF9D55
button-disabled    = 745B45
tab-active         = 3D2C1D
notification       = 7F9BAE
notification-error = E05C45
equalizer          = EC7F31
misc               = 917759
ink                = 140D07
selection          = 4F3927
crust              = 140D07
mantle             = 1B120A
base               = 24180E
surface0           = 302115
surface1           = 3D2C1D
surface2           = 4F3927
overlay0           = 745B45
overlay1           = 917759
overlay2           = AA9171
subtext0           = C0AA88
subtext1           = D6C3A0
text-hi            = F6EAD1
yellow             = F3BF45
yellow-hi          = FFD36B
orange             = EC7F31
orange-hi          = FF9D55
red                = E05C45
red-hi             = FF8373
green              = ADB956
green-hi           = BFCB63
sage               = 86AD95
sage-hi            = A5C9B0
denim              = 7F9BAE
denim-hi           = 9DB6C6
clay               = F4A87E

[enamel]
; Subway Seat Enamel — Cream enamel panels in the morning sun. The light one.
text               = 3E2C1E
subtext            = 54402F
main               = F8EFDF
main-elevated      = EEE4D0
highlight          = DBCDB3
highlight-elevated = CBB898
sidebar            = EEE4D0
player             = E4D8C0
card               = EEE4D0
shadow             = A58D6D
selected-row       = 735C44
button             = A04800
button-active      = BA4D0A
button-disabled    = A58D6D
tab-active         = CBB898
notification       = 3F6480
notification-error = 992418
equalizer          = A04800
misc               = 8C7254
ink                = F8EFDF
selection          = CBB898
crust              = E4D8C0
mantle             = EEE4D0
base               = F8EFDF
surface0           = DBCDB3
surface1           = CBB898
surface2           = BAA380
overlay0           = A58D6D
overlay1           = 8C7254
overlay2           = 735C44
subtext0           = 654F3B
subtext1           = 54402F
text-hi            = 2A1D13
yellow             = 976608
yellow-hi          = A9720A
orange             = A04800
orange-hi          = BA4D0A
red                = 992418
red-hi             = BF4233
green              = 66740F
green-hi           = 697813
sage               = 3E7157
sage-hi            = 4C8367
denim              = 3F6480
denim-hi           = 517791
clay               = 843811

Showing 150 of 443 lines.

subway-seat/user.csssave as ~/.config/spicetify/Themes/subway-seat/user.css
on Windows, %APPDATA%\spicetify\Themes\subway-seat\
/* Subway Seat — generated from palette.py by build.py. Edit the palette, not this file. */
/* Subway Seat for Spicetify: the color scheme does most of the work; this only
   swaps Spotify's green accent for the scheme's button color and tidies a few
   details. Everything here reads --spice-* variables, so every flavor shares it. */

.encore-dark-theme,
.encore-light-theme,
.encore-dark-theme .encore-base-set,
.encore-light-theme .encore-base-set {
  --text-bright-accent: var(--spice-button);
  --essential-bright-accent: var(--spice-button);
  --decorative-base: var(--spice-text);
  --background-base: var(--spice-main);
  --background-highlight: var(--spice-highlight);
  --background-press: var(--spice-highlight-elevated);
  --background-elevated-base: var(--spice-main-elevated);
  --background-elevated-highlight: var(--spice-highlight);
  --background-tinted-base: rgba(var(--spice-rgb-selected-row), 0.08);
  --background-tinted-highlight: rgba(var(--spice-rgb-selected-row), 0.14);
  --text-base: var(--spice-text);
  --text-subdued: var(--spice-subtext);
  --essential-base: var(--spice-text);
  --essential-subdued: var(--spice-button-disabled);
  --essential-announcement: var(--spice-denim);
  --essential-negative: var(--spice-notification-error);
  --essential-warning: var(--spice-yellow);
  --essential-positive: var(--spice-green);
}

.encore-dark-theme .encore-bright-accent-set,
.encore-light-theme .encore-bright-accent-set {
  --background-base: var(--spice-button);
  --background-highlight: var(--spice-button-active);
  --background-press: var(--spice-button-active);
  --background-elevated-base: var(--spice-button);
  --background-elevated-highlight: var(--spice-button-active);
  --text-base: var(--spice-ink);
  --essential-base: var(--spice-ink);
}

/* Notification banners: ink on denim (info) and on red (errors), not light text. */
.encore-dark-theme .encore-announcement-set,
.encore-light-theme .encore-announcement-set,
.encore-dark-theme .encore-negative-set,
.encore-light-theme .encore-negative-set {
  --text-base: var(--spice-ink);
  --text-subdued: var(--spice-ink);
  --essential-base: var(--spice-ink);
  --essential-subdued: var(--spice-ink);
  --decorative-base: var(--spice-ink);
}

.encore-dark-theme .encore-announcement-set,
.encore-light-theme .encore-announcement-set {
  --background-base: var(--spice-notification);
}

.encore-dark-theme .encore-negative-set,
.encore-light-theme .encore-negative-set {
  --background-base: var(--spice-notification-error);
}

.encore-dark-theme .encore-announcement-set > *,
.encore-light-theme .encore-announcement-set > *,
.encore-dark-theme .encore-negative-set > *,
.encore-light-theme .encore-negative-set > * {
  --parents-essential-base: var(--spice-ink);
}

::selection {
  background-color: var(--spice-selection);
  color: var(--spice-text-hi);
}

:focus-visible {
  outline-color: var(--spice-button);
}
manifest.jsonfor the Spicetify Marketplace: a copy belongs at the repository root, which its paths are relative to
[
  {
    "name": "Subway Seat",
    "description": "A walnut-brown 1970s NYC subway theme: harvest gold, burnt orange and avocado on warm wood.",
    "preview": "assets/previews/spicetify.webp",
    "readme": "dist/spicetify/README.md",
    "usercss": "dist/spicetify/subway-seat/user.css",
    "schemes": "dist/spicetify/subway-seat/color.ini",
    "authors": [
      {
        "name": "Oddur Sigurdsson",
        "url": "https://github.com/oddurs"
      }
    ],
    "tags": [
      "dark",
      "light",
      "warm",
      "retro",
      "70s"
    ]
  }
]