musicus/README.md

86 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

2025-05-02 15:51:01 +02:00
![Musicus Logo](data/misc/logo.png)
2023-07-06 18:34:32 +02:00
# Musicus
2023-06-18 14:02:21 +02:00
2025-05-02 15:51:01 +02:00
## Introduction
Musicus is a classical music player and organizer designed for the
[GNOME](https://www.gnome.org)
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](data/misc/screenshot.png)
2023-07-06 18:34:32 +02:00
## Hacking
2023-09-30 18:26:11 +02:00
### ORM
This program uses [Diesel](https://diesel.rs) 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.
2023-09-24 13:58:05 +02:00
### Internationalization
2023-09-13 15:03:53 +02:00
Execute the following commands from the project root directory to update
translation files whenever translatable strings have been changed.
2025-04-27 18:29:17 +02:00
1. Update `po/POTFILES`
```bash
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`
2023-09-13 15:03:53 +02:00
```bash
xgettext \
--from-code=UTF-8 \
--add-comments \
--keyword=_ \
--keyword=C_:1c,2 \
--files-from=po/POTFILES \
--output=po/template.pot
```
2025-04-27 18:29:17 +02:00
3. Update translation files
2023-09-13 15:03:53 +02:00
```bash
msgmerge \
--update \
--backup=off \
--no-fuzzy-matching \
po/de.po \
po/template.pot
```