mus2 is a simple, fast and FOSS music player written with C and raylib graphics library.
mus2 uses principles of immediate-mode GUI for its UI drawing. It does not depend on any bloated and heavy UI-library like Qt and GTK+, and it does not bundle a browser inside a small application like Electron does. Instead, all its UI is draw using direct primitive, text and image draw calls of raylib. It does not use any libraries, like the amazing Clay for that, instead it has its own little engine for this with bare support for draw frame stack, simple primitive, text, image, texture draws, and a few of ready to use UI elements like ui_draw_button()
.
As a consequence of this a static build of the app that depends only on Windows DLLs weighs around 2 MiB. Linux dynamic build, depending only on libc
and libm
weighs around 2.5 MiB.
raudio
module and its underlying miniaudio
library does not support it. Other formats may be added, but that is a lot of work for implementing tagging logic, so not in the nearest future.<none>
, no album cover), etc.To add themes to mus2, create a folder called .mus-themes
aside the executable file, (optional) download and extract theme pack from bellow into it, run mus2, go to about tab and click little reload button.
Custom theme format is quite simple, actually. mus2 uses 5 main colors for its UI, bg
, mg_off
, mg
, fg_off
, fg
, and link
color for links in the about tab. Theme file format is as such:
Ignore these comments, the format itself does not support them name=Some name description=Some description with additional info Optional field author=https://some-link.to/authors/website Optional field Empty lines are skipped bg=#012345 The format only supports hex colors mg_off=#6789abCD Both upper and lower case is supported, alpha channel is too mg=#EF0123 fg_off=#456789 fg=#ABCDEF link=#012345
Theme file extension is .txt
, because why not. Parser does not trim whitespace anywhere, so between key and value should just be an =
, without spaces. Technically, all these statements are optional, as at parsing they replace members of an already filled out sturcture.
The color intensety changes like such: bg
→ mg_off
+ mg
→ fg_off
+ fg
. *_off
versions are designed to be slightly darker than non-off counterparts for contrast between different text parts on the same-color BG.
To use a different font, drop a .ttf
file into .mus-themes
, refresh and select it in the about tab.