Разработка проекта идёт исключительно для того, чтобы, во-первых, посмотреть, как может вестись разработка музыкальных проигрывателей, с какими проблемами можно столкнуться; во-вторых, чтобы попрактиковаться в разработке приложений на основе GTK. Какого-то серьёзного развития проекта пока не планируется.
Приоритеты при разработке приложения:
- Производительность и небольшое потребление ресурсов.
- Удобный (хотя бы лично для разработчика) и современный (на момент разработки) интерфейс.
- Охват основной функциональности, ожидаемое от музыкального проигрывателя.
Обзор интерфейса см. тут.
На данный момент реализованы следующие возможности:
- запуск обновления базы песен,
- просмотр базы песен,
- управление воспроизведением песен,
- управление очередью воспроизведения,
- управление плейлистами,
- просмотр статистики с сервера MPD,
- просмотр подробных сведений о песне,
- просмотр текста песни.
Что ещё может быть сделано:
- замена MPD на собственный бэкенд для работы с базой песен (на основе GStreamer, возможно?),
- интеграция со внешними источниками для получения дополнительных данных о песнях (Musicbrainz, например?),
- интеграция со внешними источниками для получения дополнительных данных об исполнителях и альбомах,
- интеграция со внешними источниками для получения текстов песен (или хотя бы просмотр текстов песен из метаданных песен),
- расширение возможностей настройки приложения (авто-обновление базы песен при запуске, возрастные ограничения на основе данных из внешних источников, и т.д.),
- система предложения песен (и новых исполнителей?) на основе истории прослушивания,
- поддержка синхронизации отображаемого текста песни с воспроизведением.
Проигрыватель разработан на языке программирования C.
При разработке использованы следующие программные библиотеки:
- GTK - основа для UI,
- LibAdwaita - дополнительные готовые UI-компоненты и стили,
- libmpdclient - взаимодейтвие с MPD,
- libsoup - взаимодействие со внешними источниками данных в Интернете,
- JSON-GLib - обработка данных в формате JSON,
- WebKitGtk - встраивание веб-содержимого.
Для функционирования проигрывателя также необходимы следующие компоненты:
- MPD - управление базой песен и их воспроизведение.
В качестве системы сборки используется Meson. Требуемая версия: не ниже 1.2.
Приложение напрямую зависит от следующих библиотек:
gtk4 >= 4.11.5
⚠️ ,json-glib-1.0 >= 1.2
,libadwaita-1 >= 1.5
⚠️ ,libmpdclient >= 2.20
⚠️ ,libsoup-3.0
,webkitgtk-6.0
,
Зависимости, отмеченные знаком "
Дополнительная возможность включается в процессе сборки тогда и только тогда, когда доступны все необходимые для её функционирования зависимости. Подробнее о зависимостях доп. возможностей см. ниже, в разделе "Дополнительные возможности приложения".
По умолчанию для включения дополнительных возможностей при сборке необходимо и достаточно наличие нужных библиотек. Также можно указать состояние возможности (включена / отключена / автоопределение) через опции сборки Meson.
Возможность | Опция сборки | Требуемые возможности | Зависимости |
---|---|---|---|
Получение данных из внешних источников в Интернете | external_data_feature |
- | json-glib-1.0 , libsoup-3.0 |
Поиск и отображение текстов песен | lyrics_feature |
external_data_feature |
webkitgtk-6.0 |
Помимо опций сборки, контролирующих состояние доп. возможностей, также есть следующие опции, влияющие на функционирование приложения:
genius_client_access_token
(токен для доступа к API Genius).
Для получения дополнительных данных реализовано использование следующих источников:
- Genius - тексты песен.
При разработке приложения были использованы следующие дополнительные материалы:
- GNOME HIG - набор указаний к разработке UI,
- GNOME UI icons - набор UI иконок (в частности, пригодилось приложение Icon Library).
Использование, модификация и распространение определено приложенной лицензией.