Skip to content
Elegant now playing display for showing song metadata and local weather.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
source Fixed cover art becoming transparent due to surrounding link (#56) Jun 10, 2018
.travis.yml Fixed build/deployment for static files May 13, 2018
LICENSE.txt Added configuration import (#52) May 21, 2018
gulpfile.js Refactored all CSS and made design more responsive (#49) May 13, 2018


Build Status

Elegant now playing display for showing song metadata and local weather.


Ensure you have recent versions of Node.js and npm installed.

Run npm i -g yarn to install yarn. Next, run yarn add global gulp and yarn to install Descent's dependencies. Finally, run gulp build to build Descent's static files, and yarn start to start Descent's server.

Descent's server listens on port 3000 by default, but this can be changed by setting the DESCENT_PORT environment variable. It's recommended to use a proxy, such as NGINX, in front of Descent's server.

Navigate to /now to use Descent.


Weather is powered by the Dark Sky API, or the OpenWeatherMap API. To use either, you will need to provide an API key. For Dark Sky, set your key as the DARK_SKY_KEY environment variable. For OpenWeatherMap, set your key as the OPENWEATHERMAP_KEY environment variable.

Dark Sky will take precedence, and OpenWeatherMap will be used if no Dark Sky API key is provided, or if a Dark Sky API request fails. Dark Sky provides more detailed weather summaries, but the officialy-hosted Descent uses OpenWeatherMap to avoid fees.

For users to enable weather display, they must allow the Descent website to access their location. This feature relies on HTML5 geolocation, so it may only work in some modern browsers.

Spotify Image Fallback

If is unable to find an album or artist image, the Spotify Web API may be used as a backup. You will need to provide API authorization through a client ID and client secret assigned by Spotify. Set your client ID as the SPOTIFY_CLIENT environment variable, and your client secret as the SPOTIFY_SECRET environment variable.

Descent Configuration

To configure the background, weather, and time displays, visit /now/app/config. Dark Sky can automatically determine weather units, but OpenWeatherMap cannot, so Descent defaults to imperial units unless otherwise specified.

Descent Configuration Import

You can import settings through a POST request to /now/app/config/set. Each post parameter correponds to a cookie. Valid parameters and values are as follows:

Background type
background: artist, album, transparent, none

Background blurring
blur: true, false

Default background image
defaultBackground: any valid image URL

Weather units
units: imperial, metric

Date/time 24-hour display
24hr: true, false

Date/time weekday display
weekday: true, false

Date/time seconds display
seconds: true, false

User to redirect to
lastUser: any valid username

Weather display enabled
weatherOn: true, false

Date/time display enabled
datetimeOn: true, false

Extended information display enabled
extendedOn: true, false

Phillips Hue Configuration

To enable Phillips Hue control, visit /now/app/hue and follow the setup instructions. Light colors will be set according to the three most prominent album art colors. If more than three lights are selected, the colors will be reused.

If Descent is hosted using HTTPS, users must instruct their browsers to allow loading insecure (HTTP) content for the Descent website. This is because the Hue API can only be accessed via HTTP. Users are informed of this on the configuration page.


Fetches now playing song information from and displays album artwork along with local weather, time, and user info. Automatically hides the cursor after a few seconds of inactivity if the window is in focus.

Able to control colored Philips Hue lights based on prominent album art colors.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.