MCPcopy Index your code
hub / github.com/dvx/lofi

github.com/dvx/lofi @v2.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0.2 ↗ · + Follow
143 symbols 293 edges 58 files 3 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Lofi: a tiny Spotify player

WebsiteFAQDiscord

Lofi is a mini Spotify player with visualizations. It is not a replacement for the Spotify Desktop app, nor does it play music independently of the Spotify app; instead, Lofi works alongside it to provide a more intuitive and pleasant access to common features. Lofi also displays cover art and track info stylishly and it facilitates WebGL-powered audio visualizations for both Windows, MacOS and Linux. In other words, it's a "tiny Spotify player" or a "mini mode" to enhance the Spotify desktop app.

Design goals

  • A small, 1:1 aspect ratio player depicting album art
  • An always-on-top "widget-like" app
  • Minimalist (no extraneous controls)
  • Multiple-screen capable
  • Windows, MacOS and Linux compatible
  • Visualization-ready (WebGL)
  • ≤ 100MB memory footprint

Building

To build, you'll need node-gyp, a compatible Python version (2.x), and your operating system's SDK (Microsoft Build Tools or Xcode).

First, you'll need to run:

$ yarn install

If you have more than one Python installation on your system, you can prevent the build from failing by editing the package.json file in the root directory.

Append the following on the "build": ... line:

--python path/to/python27

Now you can run yarn install again.

Distribution

To create a setup file, run yarn run dist. The output will be located in ./dist.

$ yarn run dist

Development

To develop, open up a Terminal and type:

$ yarn run development
$ yarn run start

Bugs, issues, and contributing

Found a 🐛? Have a feature request? Feel free to open an issue or contribute.

As always, you are more than welcome join our Discord 🎤 server. The more the merrier! 🎉

Don't forget to ⭐ and/or fork this repo.

License

MIT

Extension points exported contracts — how you extend this code

Size (Interface)
(no doc)
src/renderer/models.ts
AuthData (Interface)
(no doc)
src/main/auth.ts
Visualization (Interface)
(no doc)
src/visualizations/index.ts
SideChangedData (Interface)
(no doc)
src/models/ipc-messages.models.ts
DisplayData (Interface)
(no doc)
src/renderer/models.ts
VisualizeConfiguration (Interface)
(no doc)
src/visualizations/models.ts
MouseData (Interface)
(no doc)
src/models/ipc-messages.models.ts
CurrentlyPlaying (Interface)
(no doc)
src/renderer/reducers/currently-playing.reducer.ts

Core symbols most depended-on inside this repo

fetch
called by 8
src/renderer/api/spotify-api.ts
setAlwaysOnTop
called by 6
src/main/main.utils.ts
useCurrentlyPlaying
called by 5
src/renderer/contexts/currently-playing.context.tsx
moveTrackInfo
called by 5
src/main/main.utils.ts
getCommonWindowOptions
called by 4
src/main/main.utils.ts
visualize
called by 4
src/visualizations/visualization.ts
getCurrentlyPlaying
called by 3
src/renderer/api/spotify-api.ts
useSettings
called by 3
src/renderer/contexts/settings.context.tsx

Shape

Function 86
Interface 34
Enum 10
Method 9
Class 4

Languages

TypeScript87%
C++13%

Modules by API surface

src/renderer/api/spotify-api.ts16 symbols
src/native/volume/macos/ipc.h14 symbols
src/main/auth.ts12 symbols
src/main/main.utils.ts11 symbols
src/visualizations/visualization.ts4 symbols
src/renderer/windows/settings/index.tsx4 symbols
src/renderer/reducers/currently-playing.reducer.ts4 symbols
src/renderer/contexts/settings.context.tsx4 symbols
src/renderer/app/index.tsx4 symbols
src/constants.ts4 symbols
src/renderer/contexts/currently-playing.context.tsx3 symbols
src/renderer/components/window-portal.tsx3 symbols

For agents

$ claude mcp add lofi \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact