Skip to content
This repository was archived by the owner on Apr 11, 2025. It is now read-only.

uwu/neptune

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Apr 11, 2025
ae104c3 · Apr 11, 2025
Jun 24, 2024
Sep 23, 2023
Mar 5, 2025
Apr 8, 2025
Oct 17, 2024
Jun 28, 2023
Jul 11, 2023
Jul 18, 2023
Apr 11, 2025
Dec 8, 2024
Dec 17, 2024
Mar 5, 2025
Mar 5, 2025
Jul 11, 2023

Repository files navigation

neptune

what is neptune?

neptune was an experimental client mod for TIDAL that provides a simple plugin and theme system.

i have no interest in maintaining software that nobody wants to contribute to. if you want to make your own thing, i highly prefer that you commit to it.

screenshot(s)

a screenshot of the neptune settings tab

how can i install neptune?

you can download the neptune installer here.

NixOS

Warning

TIDAL-HIFI right now is colliding with neptune when trying to login

create a nix-shell with tidal-hifi and login once, after that you can use the neptune package

you install this package as an overlay

add as an input in your flakes:

  inputs = {
    neptune = {
      url = "github.com:uwu/neptune";
      inputs.nixpkgs.follows = "nixpkgs";
    }
  };

configure your package system to use this overlay:

nixpkgs.overlays = [ inputs.neptune.overlays.default ];

and then just add neptune as a package:

enivronment.systemPackages = [ pkgs.neptune ];

After that you can find TIDAL-HIFI as program in your system

developing plugins for neptune

neptune exfiltrates every single action one can do in TIDAL into an easily accessible API found on window.neptune.actions.

TIDAL is built on Redux and neptune's actions are simply exfiltrated Redux actions, which are explained in this document on Redux's website.

neptune includes full type definitions for all of TIDAL's actions.

To get the global Redux store's state, you can use window.neptune.store.getState(). The return value of getState() will change as a direct result of actions.

To intercept and subscribe to actions, you can use window.neptune.intercept("category/ACTION_NAME", ([payload]) => {}), with the first argument being the name (or an array of names) of the action(s) to subscribe to, and the second argument being a function that gets called upon that action being ran. If you return true the action will automatically be cancelled.

A template for making neptune plugins is available here.