Documentation · Features · Looks . Get Started · Report a bug
Warning
inLimbo is a WIP
Most aspects of the project are under heavy development and no stable release is present as of yet.
The inLimbo project aims to be a new upcoming TUI music player for UNIX based systems that gives music lovers a clean and efficient environment to browse, play and interact with your favourite offline music.
- Fully configurable: Keybinds, library, FTP credentials, and more, all in one
config.toml
file located in$HOME/.config/inLimbo/config.toml
- Very fast and easy to use: Optimized for speed and usability.
- Very few external dependencies: Minimal setup required to get started.
- Clean and nice TUI experience: Interact with your music library seamlessly in a terminal interface.
- Showcases all the metadata: Displays song metadata, including lyrics, genre, and more, for every file in your library.
- Plays and caters to many audio file formats: Compatible with a variety of audio formats, depending on the capabilities of miniaudio.
- Customizable: Add your own color palette to inLimbo ;)
Important
It is HIGHLY recommended to have FFmpeg installed in your system
This is required for testing purposes (./tests/
), and in the future, inLimbo may have features to embed your desired metadata to an audio file.
Dependency | Ubuntu | Fedora | Arch Linux |
---|---|---|---|
TagLib | libtag1-dev |
taglib-devel |
taglib |
Gio | libgio-2.0-dev |
glib2-devel |
glib2 |
GLib | libglib-2.0-dev |
glib2-devel |
glib2 |
pkg-config | pkg-config |
pkgconf |
pkgconf |
ImageMagick | imagemagick |
ImageMagick |
imagemagick |
X11 | libx11-dev |
libX11-devel |
libx11 |
PNG | libpng-dev |
libpng-devel |
libpng |
cereal | libcereal-dev |
libcereal-devel |
cereal |
Note
If cereal is NOT available in your linux distribution,
git clone https://github.com/USCiLab/cereal.git # download cereal
mv cereal/include/* /usr/include/ # moves include/cereal headers to your include directory
# If you find that risky, just modify CMakeLists.txt to include cereal's directory for building
FTXUI is fetched from GitHub here itself during building so NO need to install it separately.
The goal of this project is just to find peace and solitude for me as I try to create something I wanted for a long time
Here are a few novelties that may or may not have been added yet:
- Cool and amazing TUI experience thanks to FTXUI
- Full use of metadata (lyrics, genre, thumbnail, etc..) and available for display
- Simple and easy network transfer of your favourite songs over to another device
- Fast and efficient loading of your song directory with everything you need :)
- TUI over the web?? (Why would you want this)
- Active testing of the codebase using GTest Suite
- Security ensured using CodeQL workflow
You will need CMake and Make (GNU Make for BSD) for this (and git obvi)
A simple command using makefile should build everything you want:
make build-all
For a GLOBAL BUILD:
make build-global
Check out BUILD.md for more options to build targets
Note
To try debug build check out DEBUGGING
inLimbo is in active development and is prone to having A LOT of issues
-> Makefile also allows for building and running of a debug build.
To try out DEBUG BUILD to find bugs/issues:
- Debug build with
AddressSanitizer
(ASan):
mkdir build-dbg/
cd build-dbg/
cmake -DCMAKE_BUILD_TYPE=Debug-ASan ..
make
./inLimbo-DBG-Asan
- Debug build with
Thread Sanitizer
(TSan):
mkdir build-dbg/
cd build-dbg/
cmake -DCMAKE_BUILD_TYPE=Debug-TSan ..
make
./inLimbo-Debug-Tsan
The DEBUG BUILD will account for the following issues:
-> Threads
-> Address Sanitation (ASan)
-> Undefined Behaviour Sanitation (UBSan)
There is quite a lot to configure in the inLimbo project. A basic config file will be setup in your $HOME/.config/inLimbo/
directory while using CMake to build
Important
Check out config.toml to see all the possible fields for configuration
IT IS UNDER HEAVY DEVELOPMENT SO EXPECT BREAKING CHANGES WITH EACH COMMIT
COLORS FORMAT
-> Hexadecimal #RRGGBB
format
-> TrueColors (Solid predefined colors):
Note
For TrueColors, check out COLORS for more information on how to set up colors in inLimbo
To know more about inLimbo Project's logical flow on creating a song map, visit SONGMAP
The inLimbo project is aiming to be more aware of how bad its codebase is, hence I am setting up unit tests for most if not all functions/classes that should:
- Give more clarity on how the logical flow of the function/class works in a test suite
- Logical flaws and boundary conditions going unchecked can be understood better
- Should give more confidence in the code structure if such tests pass
The testing is done using GTest, read TESTS.md to understand more on how tests are configured and built
There is a primitive Doxygen documention set up for the inLimbo project, that should explain a lot more about the thought process and idea behind every aspect of the codebase.
Man page is also under progress
To generate and view doxygen documentation locally:
doxygen .Doxyfile # ensure that you have doxygen installed first
cp -r assets/gifs/ docs/
cp index.html docs/
firefox docs/html/index.html # or any web browser (xdg-open also works)
It is much easier to use the script make_docs.sh
./make_docs.sh
Or you could just visit inLimbo Website
LOGO:
DISCLAIMER: This is not an original logo nor was it commisioned by me
It is a basic stock image found online. I got it from here
TOML PARSER:
To parse the config.toml is thanks to TOML++
AUDIO PLAYBACK & API:
Audio playback and capture is thanks to miniaudio
inLimbo is Free and Open Source Software Licensed under GNU GPL v3