Documentation · Features · Looks . Get Started · Report a bug
Important
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 ;)
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, 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)
You will need CMake for this (and git obvi)
git clone https://github.com/nots1dd/inLimbo.git
cd inLimbo/
./init.sh # to initialize the repository with some important headers
Then building commands: (WILL NOT COMPILE IF init.sh
IS NOT RUN FIRST)
cmake -S . -B build/
cmake --build build/
./build/inLimbo
To build its web-assembly, you will need emscripten
Important
Building the web-assembly:
Currently I am not sure how to include and compile taglib into wasm so currently the web build may compile but it will not work as I have dummy methods set up for EMSCRIPTEN build (else it wont even compile to wasm)
mkdir build_emscripten && cd build_emscripten
emcmake cmake ..
make -j
./run_webassembly.py # assuming the compilation has no errors
# This will run in port 8000
Note
To try debug build check out DEBUGGING
inLimbo is in active development and is prone to having A LOT of issues
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
Currently uses rbtrees
and unordered_map
to store and write the current inodes in given directory to lib.sync
file
-> rbtree will contain all the inodes at runtime
-> cached to lib.sync
for future use and faster data fetch
To test out the creation of the song map of your chosen directory:
cd src/dirsort/
make
./dirsort-test # change the directory in $HOME/.config/inLimbo/config.toml to test out
Note
src/dirsort/ has the current implementation of how the chosen songs directory will be cached and read into memory to display in ftxui TUI
To use dirsort/ source files separately:
make
Currently I am setting up a Doxygen documentation page that should really make it easy to understand the flow of the project
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