A classical music player and organizer. https://musicus.org
Find a file
2025-05-02 15:51:01 +02:00
.github/workflows Add GitHub workflow for releasing as Flatpak 2025-04-28 20:39:28 +02:00
data Update README 2025-05-02 15:51:01 +02:00
flatpak flatpak: Move to subdirectory 2025-04-27 18:29:41 +02:00
migrations Support metadata updates 2025-04-27 16:52:08 +02:00
po po: Update translations 2025-04-27 18:29:17 +02:00
src flatpak: Move to subdirectory 2025-04-27 18:29:41 +02:00
.gitignore Add config.rs to .gitignore 2025-02-09 10:08:17 +01:00
Cargo.lock Impleme library downloads 2025-03-23 14:57:43 +01:00
Cargo.toml Use nullable roles instead of default roles 2025-03-30 12:09:02 +02:00
COPYING Initial commit 2025-02-09 10:05:00 +01:00
diesel.toml Add original database code 2025-02-09 10:07:53 +01:00
meson.build Support metadata updates 2025-04-27 16:52:08 +02:00
meson_options.txt Update build system and Flatpak manifest 2025-02-09 10:08:21 +01:00
README.md Update README 2025-05-02 15:51:01 +02:00

Musicus Logo

Musicus

Introduction

Musicus is a classical music player and organizer designed for the GNOME platform. It helps you manage your personal collection of classical music recordings. Musicus also comes with a pre-made sample library of public domain recordings, which you can use as a starting point or to test the application.

The following features make Musicus special:

  • Combination of library management, search and playback
  • Metadata handling optimized for classical music
  • Intelligent random playback with customizable programs
  • Built-in sample library for just listening to music right-away
  • Local-first, no cloud or account required

Please note that Musicus will not be ready for everyone until version 1.0 is released. Before then, the format of the music library may change, which could result in permanent data loss. Do not use the Musicus library as your primary music collection!

Screenshot

Hacking

ORM

This program uses Diesel as its ORM. After installing the Diesel command line utility, you will be able to create a new schema migration using the following command:

$ diesel migration generate [change_description]

To update the src/db/schema.rs file, you should use the following command:

$ diesel migration run --database-url test.sqlite

This file should never be edited manually.

Internationalization

Execute the following commands from the project root directory to update translation files whenever translatable strings have been changed.

  1. Update po/POTFILES

    cat <<EOF > po/POTFILES
    data/de.johrpan.Musicus.desktop.in.in
    data/de.johrpan.Musicus.gschema.xml.in
    EOF
    
    find data/ui -name "*.blp" >> po/POTFILES
    find src -name "*.rs" -a ! -name "config.rs" >> po/POTFILES
    
  2. Update po/template.pot

    xgettext \
        --from-code=UTF-8 \
        --add-comments \
        --keyword=_ \
        --keyword=C_:1c,2 \
        --files-from=po/POTFILES \
        --output=po/template.pot
    
  3. Update translation files

    msgmerge \
        --update \
        --backup=off \
        --no-fuzzy-matching \
        po/de.po \
        po/template.pot