A CLI lyrics tool written in Swift
e4131bea — Ruben Beltran del Rio a month ago
Add configuration for arch
555e84ce — Ruben Beltran del Rio a month ago
Update version
3a398bc0 — Ruben Beltran del Rio a month ago
Use swiftsoup for parsing



You can also use your local clone with git send-email.

#Lyricli (lrc)

A command line tool to show the lyrics of your current song.


Lyricli can be invoked with the command lrc.

$ lrc [-t]

When you run it without arguments, it will look in the available source to try to find a playing song and extract the lyrics. If you include the -t flag, it will show the song and artist names before the lyrics.

$ lrc [-t] <artist_name> <song_name>

When you run it with arguments, it will use them to search for the lyrics. This won't work if you manually disable the arguments source in your configuration file. If you include the -t flag, it will show the song and artist names before the lyrics.


In order to configure sources, lyricli provides a few commands:

  • lrc -l or lrc --list-sources lists the available sources. Enabled sourcess will have a *
  • lrc -e or lrc --enable-source <source> enables a source
  • lrc -d or lrc --disable-source <source> disables a source without resetting its configuration.
  • lrc -r or lrc --reset-source <source> resets the configuration for a source and disables it.

And you can print the help or the version:

  • lrc -v or lrc --version prints the version
  • lrc -h or lrc --help display built-in help


The build has only been tested on OSX using Swift 5.8 Building defaults to the debug configuration.



To avoid storing the API key in source control, clientToken in the lyrics_engine is using a placeholder value. You'll need to replace this before building

  • GENIUS_CLIENT_TOKEN: The Client token for your genius API client

#Installing from source

Builds lyricli in release configuration and copies the executable as lrc to /usr/local/bin

make install

#Installing to a custom directory

This can be done by overriding the install_path variable

make install install_path=/opt/bin

#Linting and Generating Documentation

We use swiftlint to lint, and make lint to run it. We use jazzy and SourceKitten to document, and make document to generate it.

#Running tests

No tests at the moment 😬... but the makefile is mapped to run the swift tests.

make test