diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.github/workflows/lint-build.yml b/.github/workflows/lint-build.yml deleted file mode 100644 index 16ed392..0000000 --- a/.github/workflows/lint-build.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: "Lint & Build" - -on: - push: - pull_request: - -jobs: - lint: - name: "Lint" - runs-on: ubuntu-latest - - container: - image: valalang/lint - - steps: - - uses: actions/checkout@v1 - - name: Lint - run: io.elementary.vala-lint -d . - - build: - name: "Build" - runs-on: ubuntu-latest - - container: - image: bilelmoussaoui/flatpak-github-actions:gnome-45 - options: --privileged - - steps: - - uses: actions/checkout@v4 - - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 - with: - bundle: cassette.flatpak - manifest-path: io.github.Rirusha.Cassette.Devel.json - run-tests: true - cache-key: flatpak-builder-${{ github.sha }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4267269..1549e4c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,20 @@ # build dir -builddir* +_build -# Workspaces +# nix +result +.direnv + +# Codium *.code-workspace +.vscode/settings.json -# Visuel Studio Code -.vscode - -# Personal scripts -my.* - -# Poedit db +# Po *.mo +po/cassette.pot # flatpak .flatpak-builder build-dir repo .flatpak - -_build diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..b550215 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,201 @@ +include: + - project: 'gnome/citemplates' + file: 'flatpak/flatpak_ci_initiative.yml' + - project: 'Rirusha/citemplates' + file: 'lints.yml' + - project: 'Rirusha/citemplates' + file: 'vala-checkers.yml' + +variables: + APP_ID: 'space.rirusha.Cassette.Devel' + MANIFEST_PATH: $CI_PROJECT_DIR/build-aux/flatpak/${APP_ID}.yml + BUNDLE: "${APP_ID}.flatpak" + RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo" + FLATPAK_MODULE: "cassette" + +stages: + - lint-vala + - lint-blp + - lint-checkers + - test-mr + - build-aarch64 + - build-x86_64 + - deploy + - deploy-sithyfus + - update-repo + +# lint-vala: +# stage: 'lint-vala' +# extends: '.lint-vala' + +# lint-blp: +# stage: 'lint-blp' +# extends: '.lint-blp' + +# lint-checkers: +# stage: 'lint-checkers' +# extends: '.lint-checkers' + +test-mr: + variables: + RUN_TESTS: "0" + stage: 'test-mr' + extends: '.flatpak' + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + +.setup-gpg: + image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master' + stage: 'setup-gpg' + tags: + - flatpak + before_script: + - mkdir -p ${GNUPGHOME} + + - gpg --list-keys --with-keygrip + - touch ${GNUPGHOME}/gpg.conf + - touch ${GNUPGHOME}/gpg-agent.conf + + - echo "allow-preset-passphrase" >> ${GNUPGHOME}/gpg-agent.conf + - echo "pinentry-mode loopback" >> ${GNUPGHOME}/gpg.conf + - echo "batch" >> ${GNUPGHOME}/gpg.conf + - echo "yes" >> ${GNUPGHOME}/gpg.conf + - echo "passphrase-file ${GPG_PASSPHRASE}" >> ${GNUPGHOME}/gpg.conf + + - gpg-connect-agent reloadagent /bye + - cat ${GPG_PASSPHRASE} | /usr/libexec/gpg-preset-passphrase --preset ${GPG_KEY_GREP} + - base64 -d ${GPG_PRIVATE_KEY} | gpg --import + rules: + - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push' + +.build: + extends: '.setup-gpg' + stage: 'build' + interruptible: true + variables: + GNUPGHOME: /build/.gnupg + LANG: "C.UTF-8" + RUN_TESTS: "0" + ARCH: x86_64 + script: + - cat /etc/os-release + + - flatpak --version + # Report the installed versions of the runtime + - flatpak info org.gnome.Platform + - flatpak info org.gnome.Sdk + + # Print the date, since appstream depends on local timezone + - date && date -u + + - | + export REWRITE_RUN_TESTS="--run-tests" + if [[ $RUN_TESTS != "1" ]]; then + export REWRITE_RUN_TESTS="--no-run-tests" + fi + rewrite-flatpak-manifest ${REWRITE_RUN_TESTS} ${MANIFEST_PATH} ${FLATPAK_MODULE} -- ${CONFIG_OPTS} + + - | + if [ ${ARCH} = "x86_64" ]; then + tar xf repo.tar + rm -rf repo.tar + fi + + - >- + xvfb-run -a -s "-screen 0 1024x768x24" -- + dbus-run-session + flatpak-builder ${CI_FB_ARGS} --keep-build-dirs --arch=${ARCH} --user --gpg-sign=${GPG_KEY_ID} --gpg-homedir=${GNUPGHOME} --disable-rofiles-fuse flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH} + + # Generate a Flatpak bundle + - flatpak build-bundle --runtime-repo=${RUNTIME_REPO} --gpg-sign=${GPG_KEY_ID} --gpg-homedir=${GNUPGHOME} repo ${BUNDLE} ${APP_ID} ${BRANCH} + + - echo "[Flatpak Repo]" > repo/index.flatpakrepo + - echo "Title=Cassette Nightly Repo" >> repo/index.flatpakrepo + - echo "Url=https://cassette-rirusha-7b5d032b879376545602ad6add1827529edccbba8e6c57.pages.gitlab.gnome.org/" >> repo/index.flatpakrepo + - echo "Homepage=https://https://gitlab.gnome.org/Rirusha/Cassette/" >> repo/index.flatpakrepo + - echo "Comment=Repository with development version of Cassette" >> repo/index.flatpakrepo + - echo "Description=Repository with development version of Cassette" >> repo/index.flatpakrepo + - echo "Icon=https://dl.flathub.org/repo/logo.svg" >> repo/index.flatpakrepo + - echo "GPGKey=$(gpg --export ${GPG_KEY_ID} | base64 --wrap=0)" >> repo/index.flatpakrepo + + - flatpak build-update-repo --gpg-sign=${GPG_KEY_ID} --gpg-homedir=${GNUPGHOME} --generate-static-deltas --prune repo + - tar cf repo.tar repo/ + - rm -rf .flatpak-builder + + artifacts: + name: 'Flatpak artifacts' + when: 'always' + paths: + - $BUNDLE + - 'repo.tar' + - '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/meson-log.txt' + - '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/testlog.txt' + reports: + junit: '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/testlog.junit.xml' + expire_in: 14 days + rules: + - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push' + +build-x86_64: + extends: '.build' + variables: + ARCH: x86_64 + dependencies: + - "build-aarch64" + tags: + - flatpak + stage: "build-x86_64" + rules: + - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push' + +# Need to fix `Error: module cassette: Error removing file /builds/Rirusha/cassette-test-ci/.flatpak-builder/build/cassette: Directory not empty` +build-aarch64: + extends: '.build' + variables: + ARCH: aarch64 + tags: + - flatpak-aarch64 + stage: "build-aarch64" + rules: + - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push' + +pages: + variables: + BUILD_OUTPUT_PATH: $CI_PROJECT_DIR/repo + stage: deploy + image: alpine:latest + dependencies: + - "build-x86_64" + script: + - apk add rsync + - tar xf repo.tar + - find $BUILD_OUTPUT_PATH \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i -e "s#href=\"\/#href=\"$CI_PAGES_URL/#g" -e "s#src=\"\/#src=\"$CI_PAGES_URL/#g" + - mkdir public || true + - rsync -av --exclude='public' --exclude='.git' $BUILD_OUTPUT_PATH/ public + rules: + - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push' + artifacts: + paths: + - public + expire_in: 14 days + +update-repo: + stage: update-repo + image: alpine:latest + dependencies: + - "build-x86_64" + script: + - tar xf repo.tar + - apk add git + - git clone https://Rirusha:${GITHUB_TOKEN}@github.com/Rirusha/rirusha.space.git + - rm -f rirusha.space/repos/cassette-nightly.flatpakrepo && cp repo/index.flatpakrepo rirusha.space/repos/cassette-nightly.flatpakrepo + - cd rirusha.space + - git add . + - echo $(git status --porcelain) + - git config --global user.email "not-a@mail.com" + - git config --global user.name "Updater Bot" + - git commit -m "Update cassette-nightly repo" || true + - git push + - cd .. + rules: + - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push' diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..f8cfc7a --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vala-checkers"] + path = vala-checkers + url = https://gitlab.gnome.org/Rirusha/vala-checkers.git diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..0b233f0 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "prince781.vala", + "colinkiama.linter-vala", + "bilelmoussaoui.flatpak-vscode", + "bodil.blueprint-gtk" + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..ae0d39c --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,53 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "Lint check", + "type": "shell", + "command": "io.elementary.vala-lint -d . -c vala-lint.conf", + "problemMatcher": [] + }, + { + "label": "Empty lines check", + "type": "shell", + "command": "python3 ${workspaceFolder}/vala-checkers/empty_lines_checker.py .", + "problemMatcher": [] + }, + { + "label": "Indentation check", + "type": "shell", + "command": "python3 ${workspaceFolder}/vala-checkers/indentation_checker.py .", + "problemMatcher": [] + }, + { + "label": "Full check", + "type": "shell", + "command": "echo 'Linter:' && io.elementary.vala-lint -d . -c vala-lint.conf && echo 'Empty lines:' && python3 ${workspaceFolder}/vala-checkers/empty_lines_checker.py . && echo 'Indentation:' && python3 ${workspaceFolder}/vala-checkers/indentation_checker.py .", + "problemMatcher": [] + }, + { + "label": "Lint .blp check", + "type": "shell", + "command": "blueprint-compiler format -s 2 data/ui/*.blp", + "problemMatcher": [] + }, + { + "label": "Fix all .blp", + "type": "shell", + "command": "blueprint-compiler format -f -s 2 data/ui/*.blp", + "problemMatcher": [] + }, + { + "label": "Run tests", + "type": "shell", + "command": "flatpak build --share=network --filesystem=${workspaceFolder} --filesystem=${workspaceFolder}/.flatpak/repo --env=PATH=/home/rirusha/bin:/bin:/usr/bin:/usr/local/bin:/usr/games:/app/bin:/usr/bin:/usr/lib/sdk/vala/bin --env=LD_LIBRARY_PATH=/usr/lib/sdk/vala/lib:/app/lib --env=PKG_CONFIG_PATH=/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig --filesystem=${workspaceFolder}/_build ${workspaceFolder}/.flatpak/repo ninja -C _build test", + "group": { + "kind": "test", + "isDefault": true + }, + "problemMatcher": [] + } + ] +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..e583674 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,61 @@ +## How to contribute + +If you don't know what to do, then: +* All scheduled tasks are in the issue section and have the "enhancement" label. +* All known problems are in the same place and have a "bug" label. + +Choose tasks from the nearest versions. You can find a list of them [here](https://github.com/Rirusha/Cassette/milestones). This will both speed up the release of the next version and facilitate the review, so you will not need to switch from one global problem to another. + +Also, if you decide to fix some bug described in the issue, first make sure that it can still be reproduced in the `main` branch. + +Also, if you think that the application is missing something or you have found a bug, then do not hesitate to create an issue. + +## Naming commits +The message header should look like: +``` +feat: add a play button to the `Widget name` + +The button was missing, so it had to be added +``` +This is an example. The rules are described in more detail [here](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional). Also, the message body is optional if the information in the header is exhaustive. Also here is a list of all types of commits with descriptions: + +* `build`: Used for changes related to the system build or external dependencies. + +* `chore`: Usually includes changes that are not directly related to the code or tests, for example, updating documentation, configuring the development environment, upgrading the version, etc. + +* `ci`: Refers to changes related to configuring or improving CI. + +* `docs`: Used for changes related only to documentation, such as correcting typos, updating the README, or adding comments to the code. + +* `feat`: Indicates the addition of new functionality or features to the project. + +* `fix`: Refers to fixing errors in the code or fixing problems in the project. + +* `perf`: Used when changes are made to improve performance. + +* `refactor`: Refers to changes that do not add new functionality, but only change the structure or organization of existing code. + +* `revert`: Used to undo previous commits in the project history. + +* `style`: Refers to changes in the formatting of the code, for example, edits of spaces, indents, line breaks, etc. + +* `test`: Used to add or modify test code, for example, testing new functionality or correcting existing tests. + +* `po`: Used to add or change a translation. + +## Creating Pull Requests +All Pull Requests must be made in the `master` branch. If you close an issue, then link to it with the keyword "close" in the commit body, for example: +``` +fix: fix incorrect behavior + +close #123 +``` + +## Formatting the code +If you are using Visual Studio Code, then there is a task to run the linter. Otherwise, use the configuration in the root of the repository in the linter: vala-lint.conf, CI uses it exactly. + +## Development +Check the build using flatpak, as this is the only officially supported version. + +## Testing +Writing or supplementing existing tests for the client is highly welcome. diff --git a/COPYING b/COPYING index 10926e8..e72bfdd 100644 --- a/COPYING +++ b/COPYING @@ -1,7 +1,7 @@ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found. GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. @@ -664,12 +664,11 @@ might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -. +. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. - +. \ No newline at end of file diff --git a/README.md b/README.md index c9b7bb0..3d35c6d 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,194 @@ -

- Cassette -
- Cassette -

+README language: \ +[![En](https://img.shields.io/badge/en-green)](README.md) +[![Ru](https://img.shields.io/badge/ru-gray)](docs/README-ru.md) -

- GTK4/Adwaita приложение, которое позволит вам использовать Я.Музыку на Linux. -

+
+

+ + Cassette +

-
- -

-

-

- - Download on Flathub + + Static Badge -

-

- Screenshot -

+ + Static Badge + +
-## Последний релиз: 0.1.1 -* Добавлена новая авторизация через WebView; -* Исправлена ошибка при некорректном выводе кода ошибки при попытке открыть, например, закрытый или несуществующий плейлист; -* Исправлено появление предупреждение в терминал о невозможности прочитать файл страниц при условии, что страницы ещё не были созданы; -* Исправлена ошибка с некорректной записью в логи ошибки апи; -* Исправлена невозможность добавлять любимые треки других пользователей как страницу (всё же такой же плейлист, нет плейлистному расизму); -* Исправлена ошибка с появлением подкастов и книг в любимых треках; -* Исправлена некорректная работа переключения трека в очереди при различных состояниях повтора; -* Исправлена ошибка https://t.me/CassetteGNOME_Discussion/42. +

GTK4/Adwaita application that allows you to use Yandex Music service on Linux operating systems.

-## План основных версий -* [ ] 0.2: Моя волна -* [ ] 0.3: Альбомы и исполнители -* [ ] 0.4: Поиск по сервису -* [ ] 0.5: Подкасты и книги +
+ Preview +
-Все запланированные фичи можете [посмотреть в бэклоге](https://github.com/users/Rirusha/projects/2) +## Install -## Установка -### Через репозиторий... -Приложение Cassette доступно здесь: +**Flathub:** + + + Download on Flathub + + +```shell +flatpak install space.rirusha.Cassette +``` + +**Distribution repositories:** [![Packaging status](https://repology.org/badge/vertical-allrepos/cassette.svg)](https://repology.org/project/cassette/versions) -### ALT Sisyphus -``` + +### ALT Linux +```shell +su - apt-get install cassette ``` -### ... или используя flatpak -Вы можете скачать по [ссылке](https://flathub.org/apps/details/io.github.Rirusha.Cassette) или используя терминал -``` -flatpak install flathub io.github.Rirusha.Cassette + +### Arch Linux + +> Most AUR Helpers support Pacman-style flags, for example, yay. + +#### yay +```shell +yay -S cassette ``` -### Сборка из исходного кода - -Зависимости: -* ```gtk4```, version >= 4.5 -* ```libadwaita-1```, version >= 1.4 -* ```libsoup-3.0``` -* ```gdk-pixbuf-2.0``` -* ```json-glib-1.0``` -* ```sqlite3``` -* ```gee-0.8``` -* ```libxml-2.0``` -* ```gstreamer-1.0``` -* ```webkitgtk-6.0``` -* ```gio-2.0``` - -Утилиты для сборки: -* ```meson``` -* ```ninja``` -* ```cmake``` -* ```gcc``` -* ```valac``` -* ```pkg``` -* ```appstream-utils``` - -Сборка: -``` -meson setup builddir -ninja -C builddir test -ninja -C builddir install +#### pamac +```shell +pamac install cassette ``` -## Полезные ссылки -* Телеграм-канал с девлогами: https://t.me/CassetteGNOME_Devlog -* Чат в телеграме с обсуждением: https://t.me/CassetteGNOME_Discussion -* Сообщить об ошибке: https://github.com/Rirusha/Cassette/issues +### NixOS Unstable +```shell +nix-shell -p cassette +``` -## Поддержка -Вы можете поддержать несколькими способами: -* Создать ишью с проблемой или предложением по улучшению; -* Сделать pul request с фиксом или добавлением функционала; -* [Поддержать рублём](https://www.tinkoff.ru/cf/21GCxLuFuE9) (Просьба указывать в "Сообщении получателю" свой никнейм, иначе я не смогу добавить вас в соответствующий блок окна About. Тинькофф не пишет имя отправителя (это обман, не верьте этому)); -* Похвалить автора в телеграм-чате :3. +## Building -## Благодарность -Спасибо [MarshalX](https://github.com/MarshalX). Библиотека [yandex-music-api](https://github.com/MarshalX/yandex-music-api) была использована в качестве документации к api. +#### Dependencies: -#### Cassette - неофициальный клиент, не связан с компанией Яндекс и не одобрен ей +* `gtk4`, version: `>= 4.14` +* `libadwaita-1`, version: `>= 1.5` +* `libsoup-3.0` +* `gdk-pixbuf-2.0` +* `json-glib-1.0` +* `sqlite3` +* `gee-0.8` +* `libxml-2.0` +* `gstreamer-1.0` +* `webkitgtk-6.0` +* `gio-2.0`, version: `>= 2.72` +* `git`, only for `devel` + +#### Building utilities: + +* `meson` +* `ninja` +* `cmake` +* `blueprint-compiler` +* `gcc` +* `valac` +* `pkg` +* `appstream-utils` + +### PreRelease + +> Unstable features under development will not be available in this version. +```shell +meson setup _build +``` + +### `is_devel` flag + +> In this version, all devel functions will be available. +```shell +meson setup _build -Dis_devel=true +``` + +#### Install +```shell +sudo ninja install -C _build +``` + +#### Testing +```shell +ninja -C _build test +``` + +#### Uninstal +```shell +sudo ninja uninstall -C _build +``` + +## Devel version + +> This version is built and updated with every commit, so it may be unstable. + +You need to add `cassette-nightly` and `gnome-nightly` repositories: + +```shell +flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo +flatpak remote-add --if-not-exists cassette-nightly https://rirusha.space/repos/cassette-nightly.flatpakrepo +``` + +Install application: + +```shell +flatpak install cassette-nightly space.rirusha.Cassette.Devel +``` + +## For developers + +> The repository has recommended extensions for developing with Visual Studio Code. + +### Dependencies + +#### repository [gnome-nightly](https://wiki.gnome.org/Apps/Nightly): +```shell +flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo +``` + +#### To run +`org.gnome.Platform//master` +```shell +flatpak install org.gnome.Platform//master +``` + +#### To build +`org.gnome.Sdk//master` \ +`org.freedesktop.Sdk.Extension.vala//23.08beta` +```shell +flatpak install org.gnome.Sdk//master org.freedesktop.Sdk.Extension.vala//23.08beta +``` + +## Support + +You can support in several ways: +- Create an issue with a problem or a suggestion for improvement +- Submit a merge request with a fix or new functionality +- Support financially (Please include your nickname in the "Message to the recipient" when sending via T-Bank) + +
+ + + +## Gratitude +Thank you [MarshalX](https://github.com/MarshalX ). The [yandex-music-api](https://github.com/MarshalX/yandex-music-api) library was used as api documentation. + +> Attention! +> Cassette is an unofficial client, not affiliated with Yandex and not approved by it. diff --git a/assets/boosty.png b/assets/boosty.png new file mode 100644 index 0000000..e669a84 Binary files /dev/null and b/assets/boosty.png differ diff --git a/assets/tbank.png b/assets/tbank.png new file mode 100644 index 0000000..7aee9d8 Binary files /dev/null and b/assets/tbank.png differ diff --git a/io.github.Rirusha.Cassette.Devel.json b/build-aux/flatpak/space.rirusha.Cassette.Devel (Builder).json similarity index 50% rename from io.github.Rirusha.Cassette.Devel.json rename to build-aux/flatpak/space.rirusha.Cassette.Devel (Builder).json index ba9e81a..b090a50 100644 --- a/io.github.Rirusha.Cassette.Devel.json +++ b/build-aux/flatpak/space.rirusha.Cassette.Devel (Builder).json @@ -1,13 +1,13 @@ { - "app-id" : "io.github.Rirusha.Cassette.Devel", - "runtime" : "org.gnome.Platform", - "runtime-version" : "45", - "sdk" : "org.gnome.Sdk", - "sdk-extensions" : [ + "id": "space.rirusha.Cassette.Devel", + "runtime": "org.gnome.Platform", + "runtime-version": "master", + "sdk": "org.gnome.Sdk", + "sdk-extensions": [ "org.freedesktop.Sdk.Extension.vala" ], - "command" : "cassette", - "finish-args" : [ + "command": "cassette", + "finish-args": [ "--share=network", "--share=ipc", "--socket=fallback-x11", @@ -16,14 +16,13 @@ "--socket=wayland", "--filesystem=xdg-music:ro", "--filesystem=xdg-download:ro", - "--talk-name=org.mpris.MediaPlayer2.Player", - "--own-name=org.mpris.MediaPlayer2.cassette" + "--own-name=org.mpris.MediaPlayer2.space.rirusha.Cassette.Devel" ], - "build-options" : { - "append-path" : "/usr/lib/sdk/vala/bin", - "prepend-ld-library-path" : "/usr/lib/sdk/vala/lib" + "build-options": { + "append-path": "/usr/lib/sdk/vala/bin", + "prepend-ld-library-path": "/usr/lib/sdk/vala/lib" }, - "cleanup" : [ + "cleanup": [ "/include", "/lib/pkgconfig", "/man", @@ -35,28 +34,33 @@ "*.la", "*.a" ], - "modules" : [ + "modules": [ { "name": "blueprint-compiler", "buildsystem": "meson", + "cleanup": [ + "*" + ], "sources": [ { "type": "git", "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler", - "tag": "v0.10.0", - "commit": "2a39a16391122af2f3d812e478c1c1398c98b972" + "commit": "04ef0944db56ab01307a29aaa7303df6067cb3c0", + "tag": "v0.16.0" } ] }, { - "name" : "cassette", - "builddir" : true, - "buildsystem" : "meson", - "config-opts": [ "-Dprofile=development" ], - "sources" : [ + "name": "cassette", + "buildsystem": "meson", + "builddir": true, + "config-opts": [ + "-Dis_devel=true" + ], + "sources": [ { - "type" : "dir", - "path" : "./" + "type": "dir", + "path": "../../" } ] } diff --git a/build-aux/flatpak/space.rirusha.Cassette.Devel.yml b/build-aux/flatpak/space.rirusha.Cassette.Devel.yml new file mode 100644 index 0000000..d39cc4c --- /dev/null +++ b/build-aux/flatpak/space.rirusha.Cassette.Devel.yml @@ -0,0 +1,49 @@ +id: space.rirusha.Cassette.Devel +runtime: org.gnome.Platform +runtime-version: 'master' +sdk: org.gnome.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.vala +command: cassette +finish-args: + - --share=network + - --share=ipc + - --socket=fallback-x11 + - --device=dri + - --socket=pulseaudio + - --socket=wayland + - --filesystem=xdg-music:ro + - --filesystem=xdg-download:ro + - --own-name=org.mpris.MediaPlayer2.space.rirusha.Cassette.Devel +build-options: + append-path: /usr/lib/sdk/vala/bin + prepend-ld-library-path: /usr/lib/sdk/vala/lib +cleanup: + - /include + - /lib/pkgconfig + - /man + - /share/doc + - /share/gtk-doc + - /share/man + - /share/pkgconfig + - /share/vala + - '*.la' + - '*.a' +modules: + - name: blueprint-compiler + buildsystem: meson + cleanup: + - '*' + sources: + - type: git + url: https://gitlab.gnome.org/jwestman/blueprint-compiler + commit: 04ef0944db56ab01307a29aaa7303df6067cb3c0 + tag: v0.16.0 + - name: cassette + buildsystem: meson + builddir: true + config-opts: + - -Dis_devel=true + sources: + - type: dir + path: ../../ diff --git a/build-aux/flatpak/space.rirusha.Cassette.PreRelease.yaml b/build-aux/flatpak/space.rirusha.Cassette.PreRelease.yaml new file mode 100644 index 0000000..9720402 --- /dev/null +++ b/build-aux/flatpak/space.rirusha.Cassette.PreRelease.yaml @@ -0,0 +1,47 @@ +id: space.rirusha.Cassette +runtime: org.gnome.Platform +runtime-version: '47' +sdk: org.gnome.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.vala +command: cassette +finish-args: + - --share=network + - --share=ipc + - --socket=fallback-x11 + - --device=dri + - --socket=pulseaudio + - --socket=wayland + - --filesystem=xdg-music:ro + - --filesystem=xdg-download:ro + - --own-name=org.mpris.MediaPlayer2.space.rirusha.Cassette +build-options: + append-path: /usr/lib/sdk/vala/bin + prepend-ld-library-path: /usr/lib/sdk/vala/lib +cleanup: + - /include + - /lib/pkgconfig + - /man + - /share/doc + - /share/gtk-doc + - /share/man + - /share/pkgconfig + - /share/vala + - '*.la' + - '*.a' +modules: + - name: blueprint-compiler + buildsystem: meson + cleanup: + - '*' + sources: + - type: git + url: https://gitlab.gnome.org/jwestman/blueprint-compiler + commit: 8e10fcf8692108b9d4ab78f41086c5d7773ef864 + tag: v0.14.0 + - name: cassette + buildsystem: meson + builddir: true + sources: + - type: dir + path: ../../ diff --git a/cassette.doap b/cassette.doap new file mode 100644 index 0000000..3446ae6 --- /dev/null +++ b/cassette.doap @@ -0,0 +1,80 @@ + + + + Casete + Cassette + Kassette + Cassetta + Cassete + Кассета + カセット + 磁带 + كاسيت + कैसेट + 카세트 + Kaset + קסטה + Κασέτα + Cassette + Kassett + Kaseta + Kazeta + Kassette + Kasetti + Kazetta + เทปคาสเซ็ท + Cassette + + Cliente no oficial de Yandex Music + Client non officiel de Yandex Music + Inoffizieller Yandex Music-Client + Client non ufficiale di Yandex Music + Cliente não oficial do Yandex Music + Неофициальный клиент Яндекс.Музыки + 非公式のYandex Musicクライアント + 非官方的Yandex Music客户端 + عميل غير رسمي لـ Yandex Music + अनौपचारिक Yandex Music क्लाइंट + 비공식 Yandex Music 클라이언트 + Resmi olmayan Yandex Music istemcisi + לקוח לא רשמי של Yandex Music + Ανεπίσημος πελάτης του Yandex Music + Onofficiële Yandex Music-client + Inofficiell Yandex Music-klient + Nieoficjalny klient Yandex Music + Neoficiální klient Yandex Music + Uofficiel Yandex Music-klient + Epävirallinen Yandex Music-asiakas + Nem hivatalos Yandex Music kliens + ไคลเอนต์ Yandex Music อย่างไม่เป็นทางการ + Unofficial Yandex Music client + + + GTK/Adwaita application that allows you to use Yandex Music service on Linux operating systems + + + + + + Vala + GTK 4 + Libadwaita + + + + Vladimir Vaskov + + + + + Rirusha + + + + + + diff --git a/data/icons/hicolor/symbolic/apps/adwaita-audio-volume-high-symbolic.svg b/data/assets/icons/audio-volume-high-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-audio-volume-high-symbolic.svg rename to data/assets/icons/audio-volume-high-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-audio-volume-low-symbolic.svg b/data/assets/icons/audio-volume-low-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-audio-volume-low-symbolic.svg rename to data/assets/icons/audio-volume-low-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-audio-volume-medium-symbolic.svg b/data/assets/icons/audio-volume-medium-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-audio-volume-medium-symbolic.svg rename to data/assets/icons/audio-volume-medium-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-audio-volume-muted-symbolic.svg b/data/assets/icons/audio-volume-muted-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-audio-volume-muted-symbolic.svg rename to data/assets/icons/audio-volume-muted-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-audio-x-generic-symbolic.svg b/data/assets/icons/audio-x-generic-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-audio-x-generic-symbolic.svg rename to data/assets/icons/audio-x-generic-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-bookmark-new-symbolic.svg b/data/assets/icons/bookmark-new-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-bookmark-new-symbolic.svg rename to data/assets/icons/bookmark-new-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-cache-perm-symbolic.svg b/data/assets/icons/cache-perm-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-cache-perm-symbolic.svg rename to data/assets/icons/cache-perm-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/cassette-cache-temp-symbolic.svg b/data/assets/icons/cache-temp-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/cassette-cache-temp-symbolic.svg rename to data/assets/icons/cache-temp-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/cassette-child-symbolic.svg b/data/assets/icons/child-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/cassette-child-symbolic.svg rename to data/assets/icons/child-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-disliked-symbolic.svg b/data/assets/icons/disliked-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-disliked-symbolic.svg rename to data/assets/icons/disliked-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-document-edit-symbolic.svg b/data/assets/icons/document-edit-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-document-edit-symbolic.svg rename to data/assets/icons/document-edit-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-edit-delete-symbolic.svg b/data/assets/icons/edit-delete-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-edit-delete-symbolic.svg rename to data/assets/icons/edit-delete-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-edit-find-symbolic.svg b/data/assets/icons/edit-find-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-edit-find-symbolic.svg rename to data/assets/icons/edit-find-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-emblem-default-symbolic.svg b/data/assets/icons/emblem-default-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-emblem-default-symbolic.svg rename to data/assets/icons/emblem-default-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-emblem-favorite-symbolic.svg b/data/assets/icons/emblem-favorite-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-emblem-favorite-symbolic.svg rename to data/assets/icons/emblem-favorite-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-emblem-ok-symbolic.svg b/data/assets/icons/emblem-ok-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-emblem-ok-symbolic.svg rename to data/assets/icons/emblem-ok-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/cassette-explicit-symbolic.svg b/data/assets/icons/explicit-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/cassette-explicit-symbolic.svg rename to data/assets/icons/explicit-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-face-sad-symbolic.svg b/data/assets/icons/face-sad-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-face-sad-symbolic.svg rename to data/assets/icons/face-sad-symbolic.svg diff --git a/data/assets/icons/go-next-symbolic.svg b/data/assets/icons/go-next-symbolic.svg new file mode 100644 index 0000000..0ff48be --- /dev/null +++ b/data/assets/icons/go-next-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/icons/hicolor/symbolic/apps/adwaita-go-previous-symbolic.svg b/data/assets/icons/go-previous-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-go-previous-symbolic.svg rename to data/assets/icons/go-previous-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/il-sound-wave-alt-symbolic.svg b/data/assets/icons/isound-wave-alt-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/il-sound-wave-alt-symbolic.svg rename to data/assets/icons/isound-wave-alt-symbolic.svg diff --git a/data/assets/icons/like-symbolic.svg b/data/assets/icons/like-symbolic.svg new file mode 100644 index 0000000..f146589 --- /dev/null +++ b/data/assets/icons/like-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/icons/hicolor/symbolic/apps/adwaita-media-playback-pause-symbolic.svg b/data/assets/icons/media-playback-pause-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-media-playback-pause-symbolic.svg rename to data/assets/icons/media-playback-pause-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-media-playback-start-symbolic.svg b/data/assets/icons/media-playback-start-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-media-playback-start-symbolic.svg rename to data/assets/icons/media-playback-start-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-media-playlist-repeat-song-symbolic.svg b/data/assets/icons/media-playlist-repeat-song-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-media-playlist-repeat-song-symbolic.svg rename to data/assets/icons/media-playlist-repeat-song-symbolic.svg diff --git a/data/assets/icons/media-playlist-repeat-symbolic.svg b/data/assets/icons/media-playlist-repeat-symbolic.svg new file mode 100644 index 0000000..76eb739 --- /dev/null +++ b/data/assets/icons/media-playlist-repeat-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/icons/hicolor/symbolic/apps/adwaita-media-playlist-shuffle-symbolic.svg b/data/assets/icons/media-playlist-shuffle-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-media-playlist-shuffle-symbolic.svg rename to data/assets/icons/media-playlist-shuffle-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-media-skip-backward-symbolic.svg b/data/assets/icons/media-skip-backward-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-media-skip-backward-symbolic.svg rename to data/assets/icons/media-skip-backward-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-media-skip-forward-symbolic.svg b/data/assets/icons/media-skip-forward-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-media-skip-forward-symbolic.svg rename to data/assets/icons/media-skip-forward-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-list-remove-symbolic.svg b/data/assets/icons/minus-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-list-remove-symbolic.svg rename to data/assets/icons/minus-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/io.github.Rirusha.Cassette-symbolic.svg b/data/assets/icons/music-note-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/io.github.Rirusha.Cassette-symbolic.svg rename to data/assets/icons/music-note-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/il-music-queue-symbolic.svg b/data/assets/icons/music-queue-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/il-music-queue-symbolic.svg rename to data/assets/icons/music-queue-symbolic.svg diff --git a/data/assets/icons/network-error-symbolic.svg b/data/assets/icons/network-error-symbolic.svg new file mode 100644 index 0000000..b32693b --- /dev/null +++ b/data/assets/icons/network-error-symbolic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/data/icons/hicolor/symbolic/apps/adwaita-network-offline-symbolic.svg b/data/assets/icons/network-offline-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-network-offline-symbolic.svg rename to data/assets/icons/network-offline-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/cassette-not-like-symbolic.svg b/data/assets/icons/not-like-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/cassette-not-like-symbolic.svg rename to data/assets/icons/not-like-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-open-menu-symbolic.svg b/data/assets/icons/open-menu-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-open-menu-symbolic.svg rename to data/assets/icons/open-menu-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-list-add-symbolic.svg b/data/assets/icons/plus-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-list-add-symbolic.svg rename to data/assets/icons/plus-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-replaced-symbolic.svg b/data/assets/icons/replaced-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-replaced-symbolic.svg rename to data/assets/icons/replaced-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-sidebar-show-right-symbolic.svg b/data/assets/icons/sidebar-show-right-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-sidebar-show-right-symbolic.svg rename to data/assets/icons/sidebar-show-right-symbolic.svg diff --git a/data/assets/icons/sound-wave-alt-symbolic.svg b/data/assets/icons/sound-wave-alt-symbolic.svg new file mode 100644 index 0000000..c53ec55 --- /dev/null +++ b/data/assets/icons/sound-wave-alt-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/data/icons/hicolor/symbolic/apps/adwaita-user-home-symbolic.svg b/data/assets/icons/user-home-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-user-home-symbolic.svg rename to data/assets/icons/user-home-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-user-trash-symbolic.svg b/data/assets/icons/user-trash-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-user-trash-symbolic.svg rename to data/assets/icons/user-trash-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-view-fullscreen-symbolic.svg b/data/assets/icons/view-fullscreen-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-view-fullscreen-symbolic.svg rename to data/assets/icons/view-fullscreen-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-view-paged-symbolic.svg b/data/assets/icons/view-paged-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-view-paged-symbolic.svg rename to data/assets/icons/view-paged-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-view-refresh-symbolic.svg b/data/assets/icons/view-refresh-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-view-refresh-symbolic.svg rename to data/assets/icons/view-refresh-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-view-sort-ascending-symbolic.svg b/data/assets/icons/view-sort-ascending-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-view-sort-ascending-symbolic.svg rename to data/assets/icons/view-sort-ascending-symbolic.svg diff --git a/data/icons/hicolor/symbolic/apps/adwaita-view-sort-descending-symbolic.svg b/data/assets/icons/view-sort-descending-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-view-sort-descending-symbolic.svg rename to data/assets/icons/view-sort-descending-symbolic.svg diff --git a/data/assets/icons/wave-classes-concentration-symbolic.svg b/data/assets/icons/wave-classes-concentration-symbolic.svg new file mode 100644 index 0000000..dcd9873 --- /dev/null +++ b/data/assets/icons/wave-classes-concentration-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-date-symbolic.svg b/data/assets/icons/wave-classes-date-symbolic.svg new file mode 100644 index 0000000..2a541d7 --- /dev/null +++ b/data/assets/icons/wave-classes-date-symbolic.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-driving-symbolic.svg b/data/assets/icons/wave-classes-driving-symbolic.svg new file mode 100644 index 0000000..8ff3ce9 --- /dev/null +++ b/data/assets/icons/wave-classes-driving-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-for-lovers-symbolic.svg b/data/assets/icons/wave-classes-for-lovers-symbolic.svg new file mode 100644 index 0000000..33c5929 --- /dev/null +++ b/data/assets/icons/wave-classes-for-lovers-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-party-symbolic.svg b/data/assets/icons/wave-classes-party-symbolic.svg new file mode 100644 index 0000000..6230a64 --- /dev/null +++ b/data/assets/icons/wave-classes-party-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-road-symbolic.svg b/data/assets/icons/wave-classes-road-symbolic.svg new file mode 100644 index 0000000..a63a8bd --- /dev/null +++ b/data/assets/icons/wave-classes-road-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-run-symbolic.svg b/data/assets/icons/wave-classes-run-symbolic.svg new file mode 100644 index 0000000..86213d3 --- /dev/null +++ b/data/assets/icons/wave-classes-run-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-sex-symbolic.svg b/data/assets/icons/wave-classes-sex-symbolic.svg new file mode 100644 index 0000000..1e63393 --- /dev/null +++ b/data/assets/icons/wave-classes-sex-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-sleep-symbolic.svg b/data/assets/icons/wave-classes-sleep-symbolic.svg new file mode 100644 index 0000000..47fb26a --- /dev/null +++ b/data/assets/icons/wave-classes-sleep-symbolic.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-wake-symbolic.svg b/data/assets/icons/wave-classes-wake-symbolic.svg new file mode 100644 index 0000000..023f06f --- /dev/null +++ b/data/assets/icons/wave-classes-wake-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-work-symbolic.svg b/data/assets/icons/wave-classes-work-symbolic.svg new file mode 100644 index 0000000..8961463 --- /dev/null +++ b/data/assets/icons/wave-classes-work-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-classes-workout-symbolic.svg b/data/assets/icons/wave-classes-workout-symbolic.svg new file mode 100644 index 0000000..f69d974 --- /dev/null +++ b/data/assets/icons/wave-classes-workout-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-collection-symbolic.svg b/data/assets/icons/wave-collection-symbolic.svg new file mode 100644 index 0000000..d25fcc1 --- /dev/null +++ b/data/assets/icons/wave-collection-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-1950s-symbolic.svg b/data/assets/icons/wave-era-1950s-symbolic.svg new file mode 100644 index 0000000..a46c11a --- /dev/null +++ b/data/assets/icons/wave-era-1950s-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-1960s-symbolic.svg b/data/assets/icons/wave-era-1960s-symbolic.svg new file mode 100644 index 0000000..cc5de5f --- /dev/null +++ b/data/assets/icons/wave-era-1960s-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-1970s-symbolic.svg b/data/assets/icons/wave-era-1970s-symbolic.svg new file mode 100644 index 0000000..44f9280 --- /dev/null +++ b/data/assets/icons/wave-era-1970s-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-1980s-symbolic.svg b/data/assets/icons/wave-era-1980s-symbolic.svg new file mode 100644 index 0000000..c1534b7 --- /dev/null +++ b/data/assets/icons/wave-era-1980s-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-1990s-symbolic.svg b/data/assets/icons/wave-era-1990s-symbolic.svg new file mode 100644 index 0000000..6932759 --- /dev/null +++ b/data/assets/icons/wave-era-1990s-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-2000s-symbolic.svg b/data/assets/icons/wave-era-2000s-symbolic.svg new file mode 100644 index 0000000..dc778fe --- /dev/null +++ b/data/assets/icons/wave-era-2000s-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-2010s-symbolic.svg b/data/assets/icons/wave-era-2010s-symbolic.svg new file mode 100644 index 0000000..268b539 --- /dev/null +++ b/data/assets/icons/wave-era-2010s-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-2020s-symbolic.svg b/data/assets/icons/wave-era-2020s-symbolic.svg new file mode 100644 index 0000000..d980fa3 --- /dev/null +++ b/data/assets/icons/wave-era-2020s-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-childrens-new-year-songs-symbolic.svg b/data/assets/icons/wave-era-childrens-new-year-songs-symbolic.svg new file mode 100644 index 0000000..b74a82e --- /dev/null +++ b/data/assets/icons/wave-era-childrens-new-year-songs-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-circle-of-king-and-fool-symbolic.svg b/data/assets/icons/wave-era-circle-of-king-and-fool-symbolic.svg new file mode 100644 index 0000000..4e76d17 --- /dev/null +++ b/data/assets/icons/wave-era-circle-of-king-and-fool-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-eternal-hits-symbolic.svg b/data/assets/icons/wave-era-eternal-hits-symbolic.svg new file mode 100644 index 0000000..5132d29 --- /dev/null +++ b/data/assets/icons/wave-era-eternal-hits-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-for-exam-symbolic.svg b/data/assets/icons/wave-era-for-exam-symbolic.svg new file mode 100644 index 0000000..3fbbed6 --- /dev/null +++ b/data/assets/icons/wave-era-for-exam-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-forgotten-symbolic.svg b/data/assets/icons/wave-era-forgotten-symbolic.svg new file mode 100644 index 0000000..2aa364f --- /dev/null +++ b/data/assets/icons/wave-era-forgotten-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-forks-symbolic.svg b/data/assets/icons/wave-era-forks-symbolic.svg new file mode 100644 index 0000000..700abe1 --- /dev/null +++ b/data/assets/icons/wave-era-forks-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-lullaby-symbolic.svg b/data/assets/icons/wave-era-lullaby-symbolic.svg new file mode 100644 index 0000000..2e491bc --- /dev/null +++ b/data/assets/icons/wave-era-lullaby-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-new-years-tales-symbolic.svg b/data/assets/icons/wave-era-new-years-tales-symbolic.svg new file mode 100644 index 0000000..603a5bb --- /dev/null +++ b/data/assets/icons/wave-era-new-years-tales-symbolic.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/data/assets/icons/wave-era-popular-symbolic.svg b/data/assets/icons/wave-era-popular-symbolic.svg new file mode 100644 index 0000000..f969746 --- /dev/null +++ b/data/assets/icons/wave-era-popular-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-tales-for-sleeping-symbolic.svg b/data/assets/icons/wave-era-tales-for-sleeping-symbolic.svg new file mode 100644 index 0000000..9829d1d --- /dev/null +++ b/data/assets/icons/wave-era-tales-for-sleeping-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-tales-symbolic.svg b/data/assets/icons/wave-era-tales-symbolic.svg new file mode 100644 index 0000000..cb57ce2 --- /dev/null +++ b/data/assets/icons/wave-era-tales-symbolic.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/data/assets/icons/wave-era-unfamiliar-symbolic.svg b/data/assets/icons/wave-era-unfamiliar-symbolic.svg new file mode 100644 index 0000000..89e61a8 --- /dev/null +++ b/data/assets/icons/wave-era-unfamiliar-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-era-white-noise-symbolic.svg b/data/assets/icons/wave-era-white-noise-symbolic.svg new file mode 100644 index 0000000..2d133e8 --- /dev/null +++ b/data/assets/icons/wave-era-white-noise-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-alternative-symbolic.svg b/data/assets/icons/wave-genre-alternative-symbolic.svg new file mode 100644 index 0000000..cea32a8 --- /dev/null +++ b/data/assets/icons/wave-genre-alternative-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-authors-song-symbolic.svg b/data/assets/icons/wave-genre-authors-song-symbolic.svg new file mode 100644 index 0000000..ce8a8ae --- /dev/null +++ b/data/assets/icons/wave-genre-authors-song-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-bandstand-symbolic.svg b/data/assets/icons/wave-genre-bandstand-symbolic.svg new file mode 100644 index 0000000..5656402 --- /dev/null +++ b/data/assets/icons/wave-genre-bandstand-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-blues-symbolic.svg b/data/assets/icons/wave-genre-blues-symbolic.svg new file mode 100644 index 0000000..1f54294 --- /dev/null +++ b/data/assets/icons/wave-genre-blues-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-chanson-symbolic.svg b/data/assets/icons/wave-genre-chanson-symbolic.svg new file mode 100644 index 0000000..0f9abad --- /dev/null +++ b/data/assets/icons/wave-genre-chanson-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-childrens-music-of-world-symbolic.svg b/data/assets/icons/wave-genre-childrens-music-of-world-symbolic.svg new file mode 100644 index 0000000..c3c35bb --- /dev/null +++ b/data/assets/icons/wave-genre-childrens-music-of-world-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-childrens-music-symbolic.svg b/data/assets/icons/wave-genre-childrens-music-symbolic.svg new file mode 100644 index 0000000..dc39dfc --- /dev/null +++ b/data/assets/icons/wave-genre-childrens-music-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-classic-symbolic.svg b/data/assets/icons/wave-genre-classic-symbolic.svg new file mode 100644 index 0000000..3b08d1a --- /dev/null +++ b/data/assets/icons/wave-genre-classic-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-country-symbolic.svg b/data/assets/icons/wave-genre-country-symbolic.svg new file mode 100644 index 0000000..d5e213d --- /dev/null +++ b/data/assets/icons/wave-genre-country-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-dance-music-symbolic.svg b/data/assets/icons/wave-genre-dance-music-symbolic.svg new file mode 100644 index 0000000..17211d5 --- /dev/null +++ b/data/assets/icons/wave-genre-dance-music-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-electronics-symbolic.svg b/data/assets/icons/wave-genre-electronics-symbolic.svg new file mode 100644 index 0000000..7528e60 --- /dev/null +++ b/data/assets/icons/wave-genre-electronics-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-folk-symbolic.svg b/data/assets/icons/wave-genre-folk-symbolic.svg new file mode 100644 index 0000000..fa4222f --- /dev/null +++ b/data/assets/icons/wave-genre-folk-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-indie-symbolic.svg b/data/assets/icons/wave-genre-indie-symbolic.svg new file mode 100644 index 0000000..6bddeca --- /dev/null +++ b/data/assets/icons/wave-genre-indie-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-jazz-symbolic.svg b/data/assets/icons/wave-genre-jazz-symbolic.svg new file mode 100644 index 0000000..2cc6c51 --- /dev/null +++ b/data/assets/icons/wave-genre-jazz-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-light-music-symbolic.svg b/data/assets/icons/wave-genre-light-music-symbolic.svg new file mode 100644 index 0000000..02c384c --- /dev/null +++ b/data/assets/icons/wave-genre-light-music-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-metal-symbolic.svg b/data/assets/icons/wave-genre-metal-symbolic.svg new file mode 100644 index 0000000..7ac8417 --- /dev/null +++ b/data/assets/icons/wave-genre-metal-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-music-of-world-symbolic.svg b/data/assets/icons/wave-genre-music-of-world-symbolic.svg new file mode 100644 index 0000000..bb0f68b --- /dev/null +++ b/data/assets/icons/wave-genre-music-of-world-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-pop-symbolic.svg b/data/assets/icons/wave-genre-pop-symbolic.svg new file mode 100644 index 0000000..d988d75 --- /dev/null +++ b/data/assets/icons/wave-genre-pop-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-punk-symbolic.svg b/data/assets/icons/wave-genre-punk-symbolic.svg new file mode 100644 index 0000000..f4c2a50 --- /dev/null +++ b/data/assets/icons/wave-genre-punk-symbolic.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-rap-and-hip-hop-symbolic.svg b/data/assets/icons/wave-genre-rap-and-hip-hop-symbolic.svg new file mode 100644 index 0000000..4dcbe03 --- /dev/null +++ b/data/assets/icons/wave-genre-rap-and-hip-hop-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-reggae-symbolic.svg b/data/assets/icons/wave-genre-reggae-symbolic.svg new file mode 100644 index 0000000..9b64420 --- /dev/null +++ b/data/assets/icons/wave-genre-reggae-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-rnb-symbolic.svg b/data/assets/icons/wave-genre-rnb-symbolic.svg new file mode 100644 index 0000000..0a9fb51 --- /dev/null +++ b/data/assets/icons/wave-genre-rnb-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-rock-symbolic.svg b/data/assets/icons/wave-genre-rock-symbolic.svg new file mode 100644 index 0000000..10a1901 --- /dev/null +++ b/data/assets/icons/wave-genre-rock-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-ska-symbolic.svg b/data/assets/icons/wave-genre-ska-symbolic.svg new file mode 100644 index 0000000..ac991c6 --- /dev/null +++ b/data/assets/icons/wave-genre-ska-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-sounds-of-nature-and-noise-of-city-symbolic.svg b/data/assets/icons/wave-genre-sounds-of-nature-and-noise-of-city-symbolic.svg new file mode 100644 index 0000000..9a3e5f9 --- /dev/null +++ b/data/assets/icons/wave-genre-sounds-of-nature-and-noise-of-city-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-soundtracks-symbolic.svg b/data/assets/icons/wave-genre-soundtracks-symbolic.svg new file mode 100644 index 0000000..7203167 --- /dev/null +++ b/data/assets/icons/wave-genre-soundtracks-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-genre-soviet-music-symbolic.svg b/data/assets/icons/wave-genre-soviet-music-symbolic.svg new file mode 100644 index 0000000..5210d9f --- /dev/null +++ b/data/assets/icons/wave-genre-soviet-music-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-aggression-symbolic.svg b/data/assets/icons/wave-mood-aggression-symbolic.svg new file mode 100644 index 0000000..e8bab93 --- /dev/null +++ b/data/assets/icons/wave-mood-aggression-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-autumn-symbolic.svg b/data/assets/icons/wave-mood-autumn-symbolic.svg new file mode 100644 index 0000000..2ed3851 --- /dev/null +++ b/data/assets/icons/wave-mood-autumn-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-beauty-symbolic.svg b/data/assets/icons/wave-mood-beauty-symbolic.svg new file mode 100644 index 0000000..6928e92 --- /dev/null +++ b/data/assets/icons/wave-mood-beauty-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-calmness-symbolic.svg b/data/assets/icons/wave-mood-calmness-symbolic.svg new file mode 100644 index 0000000..f154ef8 --- /dev/null +++ b/data/assets/icons/wave-mood-calmness-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-cool-symbolic.svg b/data/assets/icons/wave-mood-cool-symbolic.svg new file mode 100644 index 0000000..90f5f02 --- /dev/null +++ b/data/assets/icons/wave-mood-cool-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-dream-symbolic.svg b/data/assets/icons/wave-mood-dream-symbolic.svg new file mode 100644 index 0000000..93efd67 --- /dev/null +++ b/data/assets/icons/wave-mood-dream-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-energetic-symbolic.svg b/data/assets/icons/wave-mood-energetic-symbolic.svg new file mode 100644 index 0000000..30aa41c --- /dev/null +++ b/data/assets/icons/wave-mood-energetic-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-epic-symbolic.svg b/data/assets/icons/wave-mood-epic-symbolic.svg new file mode 100644 index 0000000..d2154c5 --- /dev/null +++ b/data/assets/icons/wave-mood-epic-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-gloomy-symbolic.svg b/data/assets/icons/wave-mood-gloomy-symbolic.svg new file mode 100644 index 0000000..d5617fc --- /dev/null +++ b/data/assets/icons/wave-mood-gloomy-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-joy-symbolic.svg b/data/assets/icons/wave-mood-joy-symbolic.svg new file mode 100644 index 0000000..e03c41c --- /dev/null +++ b/data/assets/icons/wave-mood-joy-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-mystic-symbolic.svg b/data/assets/icons/wave-mood-mystic-symbolic.svg new file mode 100644 index 0000000..850df27 --- /dev/null +++ b/data/assets/icons/wave-mood-mystic-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-new-year-symbolic.svg b/data/assets/icons/wave-mood-new-year-symbolic.svg new file mode 100644 index 0000000..bc08050 --- /dev/null +++ b/data/assets/icons/wave-mood-new-year-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-relax-symbolic.svg b/data/assets/icons/wave-mood-relax-symbolic.svg new file mode 100644 index 0000000..d9af0c7 --- /dev/null +++ b/data/assets/icons/wave-mood-relax-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-sadness-symbolic.svg b/data/assets/icons/wave-mood-sadness-symbolic.svg new file mode 100644 index 0000000..9663f39 --- /dev/null +++ b/data/assets/icons/wave-mood-sadness-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-sentimental-symbolic.svg b/data/assets/icons/wave-mood-sentimental-symbolic.svg new file mode 100644 index 0000000..9a67072 --- /dev/null +++ b/data/assets/icons/wave-mood-sentimental-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-spring-symbolic.svg b/data/assets/icons/wave-mood-spring-symbolic.svg new file mode 100644 index 0000000..e4a4d93 --- /dev/null +++ b/data/assets/icons/wave-mood-spring-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-summer-symbolic.svg b/data/assets/icons/wave-mood-summer-symbolic.svg new file mode 100644 index 0000000..345511c --- /dev/null +++ b/data/assets/icons/wave-mood-summer-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-mood-winter-symbolic.svg b/data/assets/icons/wave-mood-winter-symbolic.svg new file mode 100644 index 0000000..c9d939c --- /dev/null +++ b/data/assets/icons/wave-mood-winter-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/assets/icons/wave-my-wave-symbolic.svg b/data/assets/icons/wave-my-wave-symbolic.svg new file mode 100644 index 0000000..78d6d09 --- /dev/null +++ b/data/assets/icons/wave-my-wave-symbolic.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/data/icons/hicolor/symbolic/apps/adwaita-window-close-symbolic.svg b/data/assets/icons/window-close-symbolic.svg similarity index 100% rename from data/icons/hicolor/symbolic/apps/adwaita-window-close-symbolic.svg rename to data/assets/icons/window-close-symbolic.svg diff --git a/data/icons/hicolor/scalable/apps/io.github.Rirusha.Cassette.Devel.svg b/data/icons/hicolor/scalable/apps/io.github.Rirusha.Cassette.Devel.svg deleted file mode 100644 index 15afa06..0000000 --- a/data/icons/hicolor/scalable/apps/io.github.Rirusha.Cassette.Devel.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/icons/hicolor/scalable/apps/io.github.Rirusha.Cassette.svg b/data/icons/hicolor/scalable/apps/io.github.Rirusha.Cassette.svg deleted file mode 100644 index 11a51ef..0000000 --- a/data/icons/hicolor/scalable/apps/io.github.Rirusha.Cassette.svg +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/icons/hicolor/scalable/apps/space.rirusha.Cassette.Devel.svg b/data/icons/hicolor/scalable/apps/space.rirusha.Cassette.Devel.svg new file mode 100644 index 0000000..51c9cd8 --- /dev/null +++ b/data/icons/hicolor/scalable/apps/space.rirusha.Cassette.Devel.svg @@ -0,0 +1,812 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/hicolor/scalable/apps/space.rirusha.Cassette.svg b/data/icons/hicolor/scalable/apps/space.rirusha.Cassette.svg new file mode 100644 index 0000000..21822b2 --- /dev/null +++ b/data/icons/hicolor/scalable/apps/space.rirusha.Cassette.svg @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/hicolor/symbolic/apps/io.github.Rirusha.Cassette.Devel-symbolic.svg b/data/icons/hicolor/symbolic/apps/io.github.Rirusha.Cassette.Devel-symbolic.svg deleted file mode 100644 index de90f8d..0000000 --- a/data/icons/hicolor/symbolic/apps/io.github.Rirusha.Cassette.Devel-symbolic.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/data/icons/hicolor/symbolic/apps/space.rirusha.Cassette-symbolic.svg b/data/icons/hicolor/symbolic/apps/space.rirusha.Cassette-symbolic.svg new file mode 100644 index 0000000..5b2b6ea --- /dev/null +++ b/data/icons/hicolor/symbolic/apps/space.rirusha.Cassette-symbolic.svg @@ -0,0 +1,458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/hicolor/symbolic/apps/space.rirusha.Cassette.Devel-symbolic.svg b/data/icons/hicolor/symbolic/apps/space.rirusha.Cassette.Devel-symbolic.svg new file mode 100644 index 0000000..5b2b6ea --- /dev/null +++ b/data/icons/hicolor/symbolic/apps/space.rirusha.Cassette.Devel-symbolic.svg @@ -0,0 +1,458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/meson.build b/data/icons/meson.build index 43ae2f5..2bebe98 100644 --- a/data/icons/meson.build +++ b/data/icons/meson.build @@ -1,227 +1,13 @@ scalable_dir = join_paths('hicolor', 'scalable', 'apps') install_data( - join_paths(scalable_dir, ('@0@.svg').format(app_id)), + join_paths(scalable_dir, ('@0@.svg').format(app_id_dyn)), install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir) ) symbolic_dir = join_paths('hicolor', 'symbolic', 'apps') install_data( - join_paths(symbolic_dir, ('@0@-symbolic.svg').format(app_id)), + join_paths(symbolic_dir, ('@0@-symbolic.svg').format(app_id_dyn)), install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) ) - -# All icons starting with "cassette-" are mine -# All icons starting with "adwaita-" are taken from the libadwaita icon pack -# All icons starting with "il-" are taken from Icon Library application - -install_data( - join_paths(symbolic_dir, 'adwaita-view-sort-descending-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-media-playback-start-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'il-music-queue-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-audio-volume-muted-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'cassette-child-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-user-trash-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-view-sort-ascending-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'cassette-not-like-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-media-playlist-shuffle-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-audio-volume-high-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'cassette-explicit-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-media-skip-forward-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-audio-volume-medium-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-view-refresh-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-audio-x-generic-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-go-previous-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-media-playlist-repeat-song-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-replaced-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'cassette-cache-temp-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-media-skip-backward-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-media-playback-pause-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-window-close-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-face-sad-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-list-remove-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-edit-delete-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'il-sound-wave-alt-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-list-add-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-emblem-default-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-cache-perm-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-edit-find-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-audio-volume-low-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-open-menu-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-view-paged-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-network-offline-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-emblem-favorite-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-disliked-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-sidebar-show-right-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-emblem-ok-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-user-home-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-view-fullscreen-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-bookmark-new-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) - -install_data( - join_paths(symbolic_dir, 'adwaita-document-edit-symbolic.svg'), - install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir) -) \ No newline at end of file diff --git a/data/images/1-liked-view.png b/data/images/1-liked-view.png new file mode 100644 index 0000000..c4c8f30 Binary files /dev/null and b/data/images/1-liked-view.png differ diff --git a/data/images/2-playlists-view.png b/data/images/2-playlists-view.png new file mode 100644 index 0000000..d3c895d Binary files /dev/null and b/data/images/2-playlists-view.png differ diff --git a/data/images/3-sync-lyrics.png b/data/images/3-sync-lyrics.png new file mode 100644 index 0000000..15d3cb8 Binary files /dev/null and b/data/images/3-sync-lyrics.png differ diff --git a/data/images/4-playback-queue.png b/data/images/4-playback-queue.png new file mode 100644 index 0000000..32df5b8 Binary files /dev/null and b/data/images/4-playback-queue.png differ diff --git a/data/images/5-waves-view.png b/data/images/5-waves-view.png new file mode 100644 index 0000000..cde6f68 Binary files /dev/null and b/data/images/5-waves-view.png differ diff --git a/data/images/6-main-settings.png b/data/images/6-main-settings.png new file mode 100644 index 0000000..b729faa Binary files /dev/null and b/data/images/6-main-settings.png differ diff --git a/data/images/fifth.png b/data/images/fifth.png deleted file mode 100644 index b909868..0000000 Binary files a/data/images/fifth.png and /dev/null differ diff --git a/data/images/first.png b/data/images/first.png deleted file mode 100644 index 877c46c..0000000 Binary files a/data/images/first.png and /dev/null differ diff --git a/data/images/fourth.png b/data/images/fourth.png deleted file mode 100644 index 8f026b8..0000000 Binary files a/data/images/fourth.png and /dev/null differ diff --git a/data/images/second.png b/data/images/second.png deleted file mode 100644 index d175b2b..0000000 Binary files a/data/images/second.png and /dev/null differ diff --git a/data/images/third.png b/data/images/third.png deleted file mode 100644 index 8cb8169..0000000 Binary files a/data/images/third.png and /dev/null differ diff --git a/data/io.github.Rirusha.Cassette.Devel.desktop.in b/data/io.github.Rirusha.Cassette.Devel.desktop.in deleted file mode 100644 index 8c12fae..0000000 --- a/data/io.github.Rirusha.Cassette.Devel.desktop.in +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Name=Cassette Devel -GenericName=Cassette Devel -Comment=Unofficial Yandex.Music client for GNOME (Development mode) -Keywords=yandex;yandex music;yam;music; -Exec=cassette -Icon=io.github.Rirusha.Cassette.Devel -Terminal=false -Type=Application -Categories=Music; -StartupNotify=true \ No newline at end of file diff --git a/data/io.github.Rirusha.Cassette.desktop.in b/data/io.github.Rirusha.Cassette.desktop.in deleted file mode 100644 index aa48cf3..0000000 --- a/data/io.github.Rirusha.Cassette.desktop.in +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Name=Cassette -GenericName=Cassette -Comment=Unofficial Yandex.Music client for GNOME -Keywords=yandex;yandex music;yam;music; -Exec=cassette -Icon=io.github.Rirusha.Cassette -Terminal=false -Type=Application -Categories=Music; -StartupNotify=true \ No newline at end of file diff --git a/data/io.github.Rirusha.Cassette.gresource.xml b/data/io.github.Rirusha.Cassette.gresource.xml deleted file mode 100644 index 4c88095..0000000 --- a/data/io.github.Rirusha.Cassette.gresource.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - ui/help-overlay.ui - style.css - ui/main_window.ui - ui/root_view.ui - ui/playlist_view.ui - ui/playlists_view.ui - ui/main_view.ui - ui/begin_view.ui - ui/track_local_content.ui - ui/player_bar.ui - ui/track_default_content.ui - ui/track_queue_content.ui - ui/preferences_window.ui - ui/track_row.ui - ui/sidebar.ui - ui/track_list.ui - ui/playlist_micro.ui - ui/track_placeholder.ui - ui/cant_show_view.ui - ui/track_detailed.ui - ui/lyrics_line.ui - ui/lyrics_panel.ui - ui/label_button.ui - ui/save_stack.ui - ui/playlist_choose_window.ui - ui/playlist_row.ui - ui/disliked_tracks_view.ui - ui/playlist_create_button.ui - ui/info_marks.ui - ui/account_info_window.ui - ui/cache_deletion_preferences.ui - ui/custom_pages_preferences.ui - ui/custom_page_preferences.ui - ui/cache_indicator.ui - ui/job_info_badge.ui - ui/volume_button.ui - ui/track_info_panel.ui - ui/cover_image.ui - - diff --git a/data/meson.build b/data/meson.build index ef7e4aa..bc4a478 100644 --- a/data/meson.build +++ b/data/meson.build @@ -1,6 +1,12 @@ +desktop_conf = configuration_data() +desktop_conf.set('APP_ID_DYN', app_id_dyn) + desktop_file = i18n.merge_file( - input: '@0@.desktop.in'.format(app_id), - output: '@0@.desktop'.format(app_id), + input: configure_file( + output: '@0@.desktop.in'.format(app_id_dyn), + input: '@0@.desktop.in.in'.format(app_id_dyn), + configuration: desktop_conf), + output: '@0@.desktop'.format(app_id_dyn), type: 'desktop', po_dir: '../po', install: true, @@ -12,21 +18,31 @@ if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file]) endif +appstream_conf = configuration_data() +appstream_conf.set('APP_ID', app_id) +appstream_conf.set('APP_ID_DYN', app_id_dyn) +appstream_conf.set('HOMEPAGE', 'https://gitlab.gnome.org/Rirusha/Cassette') +appstream_conf.set('BUGTRACKER', 'https://gitlab.gnome.org/Rirusha/Cassette/-/issues') +appstream_conf.set('HELP', 'https://t.me/CassetteGNOME_Discussion') + appstream_file = i18n.merge_file( - input: 'io.github.Rirusha.Cassette.appdata.xml.in', - output: 'io.github.Rirusha.Cassette.appdata.xml', + input: configure_file( + output: '@0@.metainfo.xml.in'.format(app_id), + input: '@0@.metainfo.xml.in.in'.format(app_id), + configuration: appstream_conf), + output: '@0@.metainfo.xml'.format(app_id), po_dir: '../po', install: true, - install_dir: join_paths(get_option('datadir'), 'appdata') + install_dir: join_paths(get_option('datadir'), 'metainfo') ) -appstream_util = find_program('appstream-util', required: false) -if appstream_util.found() - test('Validate appstream file', appstream_util, args: ['validate-relax', appstream_file]) +appstreamcli = find_program('appstreamcli', required: false) +if appstreamcli.found() + test('Validate appstream file', appstreamcli, args: ['validate', appstream_file]) endif -install_data('io.github.Rirusha.Cassette.gschema.xml', - install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') +install_data('@0@.gschema.xml'.format(app_id), + install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas') ) compile_schemas = find_program('glib-compile-schemas', required: false) @@ -38,26 +54,48 @@ endif blueprints = custom_target('blueprints', input: files( - 'ui/account_info_window.blp', - 'ui/player_bar.blp', - 'ui/volume_button.blp', - 'ui/main_window.blp', - 'ui/track_info_panel.blp', - 'ui/cover_image.blp', + 'ui/account-info-dialog.blp', + 'ui/action-card-custom.blp', + 'ui/action-card-station.blp', + 'ui/cache-indicator.blp', + 'ui/cover-image.blp', + 'ui/custom-button.blp', + 'ui/custom-menu-button.blp', + 'ui/devel-view.blp', + 'ui/equalaizer.blp', + 'ui/header-bar.blp', + 'ui/headered-scrolled-window.blp', + 'ui/help-overlay.blp', + 'ui/loadable-widget.blp', + 'ui/main-view.blp', + 'ui/menu-dialog.blp', + 'ui/narrow-toggle-button.blp', + 'ui/no-plus-dialog.blp', + 'ui/player-bar.blp', + 'ui/player-queue.blp', 'ui/sidebar.blp', - 'ui/track_detailed.blp', - 'ui/track_default_content.blp' + 'ui/stations-view.blp', + 'ui/track-base-content.blp', + 'ui/track-carousel.blp', + 'ui/track-queue-content.blp', + 'ui/track-default-content.blp', + 'ui/track-info.blp', + 'ui/track-info-panel.blp', + 'ui/volume-button.blp', + 'ui/wave-settings.blp', + 'ui/window.blp', ), output: '.', command: [find_program('blueprint-compiler'), 'batch-compile', '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'], ) -resource_files = files('io.github.Rirusha.Cassette.gresource.xml') +resource_files = files('@0@.gresource.xml'.format(app_id)) resources = gnome.compile_resources( 'cassette-resources', resource_files, + source_dir: meson.current_build_dir(), dependencies: blueprints, c_name: 'cassette' ) -subdir('icons') \ No newline at end of file +subdir('icons') diff --git a/data/space.rirusha.Cassette.Devel.desktop.in.in b/data/space.rirusha.Cassette.Devel.desktop.in.in new file mode 100644 index 0000000..dc92592 --- /dev/null +++ b/data/space.rirusha.Cassette.Devel.desktop.in.in @@ -0,0 +1,14 @@ +[Desktop Entry] +# Translators: app name should be translated +Name=Cassette (Devel) +Comment=Unofficial Yandex Music client for GNOME (Devel build) +# Translators: keep number of ';' +Keywords=yandex;yandex music;yam;music; +Exec=cassette %U +Icon=@APP_ID_DYN@ +Terminal=false +Type=Application +Categories=GNOME;GTK;Music;Audio;AudioVideo; +StartupNotify=true +MimeType=x-scheme-handler/yandexmusic; +X-GNOME-UsesNotifications=true diff --git a/data/space.rirusha.Cassette.desktop.in.in b/data/space.rirusha.Cassette.desktop.in.in new file mode 100644 index 0000000..a0a3679 --- /dev/null +++ b/data/space.rirusha.Cassette.desktop.in.in @@ -0,0 +1,14 @@ +[Desktop Entry] +# Translators: app name should be translated +Name=Cassette +Comment=Unofficial Yandex Music client for GNOME +# Translators: keep number of ';' +Keywords=yandex;yandex music;yam;music; +Exec=cassette %U +Icon=@APP_ID_DYN@ +Terminal=false +Type=Application +Categories=GNOME;GTK;Music;Audio;AudioVideo; +StartupNotify=true +MimeType=x-scheme-handler/yandexmusic; +X-GNOME-UsesNotifications=true diff --git a/data/space.rirusha.Cassette.gresource.xml b/data/space.rirusha.Cassette.gresource.xml new file mode 100644 index 0000000..d64ec0a --- /dev/null +++ b/data/space.rirusha.Cassette.gresource.xml @@ -0,0 +1,188 @@ + + + + assets/icons/audio-volume-high-symbolic.svg + assets/icons/audio-volume-low-symbolic.svg + assets/icons/audio-volume-medium-symbolic.svg + assets/icons/audio-volume-muted-symbolic.svg + assets/icons/audio-x-generic-symbolic.svg + assets/icons/bookmark-new-symbolic.svg + assets/icons/cache-perm-symbolic.svg + assets/icons/cache-temp-symbolic.svg + assets/icons/child-symbolic.svg + assets/icons/disliked-symbolic.svg + assets/icons/document-edit-symbolic.svg + assets/icons/edit-delete-symbolic.svg + assets/icons/edit-find-symbolic.svg + assets/icons/emblem-default-symbolic.svg + assets/icons/emblem-favorite-symbolic.svg + assets/icons/emblem-ok-symbolic.svg + assets/icons/explicit-symbolic.svg + assets/icons/face-sad-symbolic.svg + assets/icons/go-next-symbolic.svg + assets/icons/go-previous-symbolic.svg + assets/icons/isound-wave-alt-symbolic.svg + assets/icons/like-symbolic.svg + assets/icons/media-playback-pause-symbolic.svg + assets/icons/media-playback-start-symbolic.svg + assets/icons/media-playlist-repeat-song-symbolic.svg + assets/icons/media-playlist-repeat-symbolic.svg + assets/icons/media-playlist-shuffle-symbolic.svg + assets/icons/media-skip-backward-symbolic.svg + assets/icons/media-skip-forward-symbolic.svg + assets/icons/minus-symbolic.svg + assets/icons/music-note-symbolic.svg + assets/icons/music-queue-symbolic.svg + assets/icons/network-offline-symbolic.svg + assets/icons/not-like-symbolic.svg + assets/icons/open-menu-symbolic.svg + assets/icons/plus-symbolic.svg + assets/icons/replaced-symbolic.svg + assets/icons/sidebar-show-right-symbolic.svg + assets/icons/sound-wave-alt-symbolic.svg + assets/icons/user-home-symbolic.svg + assets/icons/user-trash-symbolic.svg + assets/icons/view-fullscreen-symbolic.svg + assets/icons/view-paged-symbolic.svg + assets/icons/view-refresh-symbolic.svg + assets/icons/view-sort-ascending-symbolic.svg + assets/icons/view-sort-descending-symbolic.svg + assets/icons/wave-classes-concentration-symbolic.svg + assets/icons/wave-classes-date-symbolic.svg + assets/icons/wave-classes-driving-symbolic.svg + assets/icons/wave-classes-for-lovers-symbolic.svg + assets/icons/wave-classes-party-symbolic.svg + assets/icons/wave-classes-road-symbolic.svg + assets/icons/wave-classes-run-symbolic.svg + assets/icons/wave-classes-sex-symbolic.svg + assets/icons/wave-classes-sleep-symbolic.svg + assets/icons/wave-classes-wake-symbolic.svg + assets/icons/wave-classes-work-symbolic.svg + assets/icons/wave-classes-workout-symbolic.svg + assets/icons/wave-collection-symbolic.svg + assets/icons/wave-era-1950s-symbolic.svg + assets/icons/wave-era-1960s-symbolic.svg + assets/icons/wave-era-1970s-symbolic.svg + assets/icons/wave-era-1980s-symbolic.svg + assets/icons/wave-era-1990s-symbolic.svg + assets/icons/wave-era-2000s-symbolic.svg + assets/icons/wave-era-2010s-symbolic.svg + assets/icons/wave-era-2020s-symbolic.svg + assets/icons/wave-era-childrens-new-year-songs-symbolic.svg + assets/icons/wave-era-circle-of-king-and-fool-symbolic.svg + assets/icons/wave-era-eternal-hits-symbolic.svg + assets/icons/wave-era-for-exam-symbolic.svg + assets/icons/wave-era-forgotten-symbolic.svg + assets/icons/wave-era-forks-symbolic.svg + assets/icons/wave-era-lullaby-symbolic.svg + assets/icons/wave-era-new-years-tales-symbolic.svg + assets/icons/wave-era-popular-symbolic.svg + assets/icons/wave-era-tales-for-sleeping-symbolic.svg + assets/icons/wave-era-tales-symbolic.svg + assets/icons/wave-era-unfamiliar-symbolic.svg + assets/icons/wave-era-white-noise-symbolic.svg + assets/icons/wave-genre-alternative-symbolic.svg + assets/icons/wave-genre-authors-song-symbolic.svg + assets/icons/wave-genre-bandstand-symbolic.svg + assets/icons/wave-genre-blues-symbolic.svg + assets/icons/wave-genre-chanson-symbolic.svg + assets/icons/wave-genre-childrens-music-of-world-symbolic.svg + assets/icons/wave-genre-childrens-music-symbolic.svg + assets/icons/wave-genre-classic-symbolic.svg + assets/icons/wave-genre-country-symbolic.svg + assets/icons/wave-genre-dance-music-symbolic.svg + assets/icons/wave-genre-electronics-symbolic.svg + assets/icons/wave-genre-folk-symbolic.svg + assets/icons/wave-genre-indie-symbolic.svg + assets/icons/wave-genre-jazz-symbolic.svg + assets/icons/wave-genre-light-music-symbolic.svg + assets/icons/wave-genre-metal-symbolic.svg + assets/icons/wave-genre-music-of-world-symbolic.svg + assets/icons/wave-genre-pop-symbolic.svg + assets/icons/wave-genre-punk-symbolic.svg + assets/icons/wave-genre-rap-and-hip-hop-symbolic.svg + assets/icons/wave-genre-reggae-symbolic.svg + assets/icons/wave-genre-rnb-symbolic.svg + assets/icons/wave-genre-rock-symbolic.svg + assets/icons/wave-genre-ska-symbolic.svg + assets/icons/wave-genre-sounds-of-nature-and-noise-of-city-symbolic.svg + assets/icons/wave-genre-soundtracks-symbolic.svg + assets/icons/wave-genre-soviet-music-symbolic.svg + assets/icons/wave-mood-aggression-symbolic.svg + assets/icons/wave-mood-autumn-symbolic.svg + assets/icons/wave-mood-beauty-symbolic.svg + assets/icons/wave-mood-calmness-symbolic.svg + assets/icons/wave-mood-cool-symbolic.svg + assets/icons/wave-mood-dream-symbolic.svg + assets/icons/wave-mood-energetic-symbolic.svg + assets/icons/wave-mood-epic-symbolic.svg + assets/icons/wave-mood-gloomy-symbolic.svg + assets/icons/wave-mood-joy-symbolic.svg + assets/icons/wave-mood-mystic-symbolic.svg + assets/icons/wave-mood-new-year-symbolic.svg + assets/icons/wave-mood-relax-symbolic.svg + assets/icons/wave-mood-sadness-symbolic.svg + assets/icons/wave-mood-sentimental-symbolic.svg + assets/icons/wave-mood-spring-symbolic.svg + assets/icons/wave-mood-summer-symbolic.svg + assets/icons/wave-mood-winter-symbolic.svg + assets/icons/wave-my-wave-symbolic.svg + assets/icons/window-close-symbolic.svg + + + ui/help-overlay.ui + style.css + ui/account-info-dialog.ui + ui/action-card-custom.ui + ui/action-card-station.ui + ui/begin-view.ui + ui/cache-deletion-preferences.ui + ui/cache-indicator.ui + ui/cant-show-view.ui + ui/cover-image.ui + ui/custom-button.ui + ui/custom-menu-button.ui + ui/custom-page-preferences.ui + ui/custom-pages-preferences.ui + ui/devel-view.ui + ui/disliked-tracks-view.ui + ui/equalaizer.ui + ui/header-bar.ui + ui/headered-scrolled-window.ui + ui/info-marks.ui + ui/job-info-badge.ui + ui/label-button.ui + ui/loadable-widget.ui + ui/lyrics-line.ui + ui/lyrics-panel.ui + ui/main-view.ui + ui/menu-dialog.ui + ui/narrow-toggle-button.ui + ui/no-plus-dialog.ui + ui/player-bar.ui + ui/player-queue.ui + ui/playlist-choose-dialog.ui + ui/playlist-create-button.ui + ui/playlist-micro.ui + ui/playlist-row.ui + ui/playlist-view.ui + ui/playlists-view.ui + ui/preferences-dialog.ui + ui/root-view.ui + ui/save-stack.ui + ui/sidebar.ui + ui/stations-view.ui + ui/track-base-content.ui + ui/track-carousel.ui + ui/track-default-content.ui + ui/track-info.ui + ui/track-info-panel.ui + ui/track-list.ui + ui/track-local-content.ui + ui/track-placeholder.ui + ui/track-queue-content.ui + ui/volume-button.ui + ui/wave-settings.ui + ui/window.ui + + diff --git a/data/io.github.Rirusha.Cassette.gschema.xml b/data/space.rirusha.Cassette.gschema.xml similarity index 61% rename from data/io.github.Rirusha.Cassette.gschema.xml rename to data/space.rirusha.Cassette.gschema.xml index 8c6b345..4586ff7 100644 --- a/data/io.github.Rirusha.Cassette.gschema.xml +++ b/data/space.rirusha.Cassette.gschema.xml @@ -1,34 +1,29 @@ - + + + + + + + + - - - - - - - - - - + - + "begin" - - "off" - - - "off" - + + "0.0.0" + 600 @@ -38,9 +33,6 @@ false - - 0.2 - false @@ -50,30 +42,15 @@ true - - 6 - - - true - - - true - false true - - true - false - - false - false @@ -86,11 +63,56 @@ true - + false - + false + + + + + + + + + + + + + + + + + "off" + + + "off" + + + + 0.2 + + + false + + + 10 + + + true + + + true + + + true + + + false + + + diff --git a/data/io.github.Rirusha.Cassette.appdata.xml.in b/data/space.rirusha.Cassette.metainfo.xml.in.in similarity index 64% rename from data/io.github.Rirusha.Cassette.appdata.xml.in rename to data/space.rirusha.Cassette.metainfo.xml.in.in index 8aab61c..6460fc7 100644 --- a/data/io.github.Rirusha.Cassette.appdata.xml.in +++ b/data/space.rirusha.Cassette.metainfo.xml.in.in @@ -1,9 +1,10 @@ - + Cassette - io.github.Rirusha.Cassette.desktop + @APP_ID@ CC0-1.0 GPL-3.0-or-later + Unofficial Yandex Music client

GTK/Adwaita application that allows to use Yandex Music @@ -34,36 +35,70 @@ Cassette is an unofficial client and is not associated with or endorsed by Yandex.

+ @APP_ID_DYN@.desktop + + Vladimir Vaskov + Владимир Васьков + keyboard pointing touch + + #fee372 + #dd624b + mild moderate mild + @HOMEPAGE@ + @BUGTRACKER@ + @HELP@ - https://github.com/Rirusha/Cassette/blob/master/data/images/first.png?raw=true + https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/1-liked-view.png + Liked view - - https://github.com/Rirusha/Cassette/blob/master/data/images/second.png?raw=true + + https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/2-playlists-view.png + Playlists view - - https://github.com/Rirusha/Cassette/blob/master/data/images/third.png?raw=true + + https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/3-sync-lyrics.png + Sync lyrics - - https://github.com/Rirusha/Cassette/blob/master/data/images/fourth.png?raw=true + + https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/4-playback-queue.png + Playback queue - - https://github.com/Rirusha/Cassette/blob/master/data/images/fifth.png?raw=true + + https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/5-waves-view.png + Waves view + + + https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/6-main-settings.png + Main preferences - Unofficial Yandex.Music client - io.github.Rirusha.Cassette.desktop + + +

Fixed a bug on the stations page and the playlist page in GNOME 48

+
+
+ + +

A release dedicated to My Vibe

+
    +
  • Added My Vibe
  • +
  • Improved appearance
  • +
  • MANY bug fixes
  • +
+
+

Hotfix

@@ -105,7 +140,7 @@

Added new authorization via WebView

- +

First release of Cassette

    @@ -118,8 +153,4 @@ - https://github.com/Rirusha/Cassette - https://github.com/Rirusha/Cassette/issues - https://t.me/CassetteGNOME_Discussion - Rirusha diff --git a/data/style.css b/data/style.css index 02f543f..3b995c3 100644 --- a/data/style.css +++ b/data/style.css @@ -1,37 +1,168 @@ /* @define-color accent_color #ffdb4d; @define-color accent_bg_color #ffdb4d; */ -.big-art { - border-style: none; +/** + * Headered Scrollled Window + */ + +.border-separator { + color: @sidebar_border_color; +} + +.light-background { + background-color: @sidebar_bg_color; +} + +/** + * Rework of default + */ + +listview { + background-color: rgba(0, 0, 0, 0); +} + +listview row { + background-color: rgba(0, 0, 0, 0); +} + +.card-box flowboxchild { border-radius: 12px; - box-shadow: 0px 0px 5px -2px rgb(0, 0, 0); - background-color: alpha(@window_fg_color, 0.08); } -.gray-background { - background-color: alpha(@window_fg_color, 0.08); -} - -.small-art { - border-style: none; - border-radius: 5px; - box-shadow: 0px 0px 5px -2px rgb(0, 0, 0); - background-color: alpha(@window_fg_color, 0.08); +flowbox flowboxchild { + padding: 0px; } frame { - border-radius: 4px; border-style: none; } +.sp-sw overshoot.top { + background-image: none; +} + +.sp-sw overshoot.bottom { + background-image: none; +} + +/** + * Other + */ + +.unbold { + font-weight: normal; +} + +.equalaizer-scale { + padding: 10px; +} + +.small-border-radius { + border-radius: 6px; +} + .transparent-background { background-color: rgba(0, 0, 0, 0); } -.track-row-playing { - background-color: alpha(@accent_bg_color, 0.5); +.plus-button { + color: white; + background-image: linear-gradient(90deg,#ff5c4d,#eb469f 30%,#8341ef 75%,#3f68f9); } -.disliked { - color: #ff1f2a; -} \ No newline at end of file +.button-standart-padding { + padding-left: 5px; + padding-right: 5px; +} + +.menu-button { + font-weight: normal; + padding-top: 3px; + padding-bottom: 3px; + transition: none; +} + +popover contents { + padding: 6px; +} + +/** + * Track row + */ + +track-row { + all: inherit; + + border-radius: 12px; + padding: 6px; + transition: 200ms; +} + +track-row.hover { + box-shadow: 0 0 0 1px rgba(0, 0, 0, .03), + 0 1px 3px 1px rgba(0, 0, 0, .07), + 0 2px 6px 2px rgba(0, 0, 0, .03); + background-color: alpha(@window_fg_color, 0.1); +} + +track-row.active { + background-color: alpha(@window_fg_color, 0.3); +} + +/** + * Track row playing + */ + +track-row.playing { + box-shadow: 0 0 0 1px rgba(0, 0, 0, .03), + 0 1px 3px 1px rgba(0, 0, 0, .07), + 0 2px 6px 2px rgba(0, 0, 0, .03); + color: @accent_fg_color; + background-color: alpha(@accent_bg_color, 0.85); +} + +track-row.playing-hover { + background-color: alpha(@accent_bg_color, 0.70); +} + +track-row.playing-active { + background-color: alpha(@accent_bg_color, 0.54); +} + +/** + * Action card + */ + +.action-card { + transition: 200ms; + box-shadow: 0 0 0 1px rgba(0, 0, 0, .03), + 0 1px 3px 1px rgba(0, 0, 0, .07), + 0 2px 6px 2px rgba(0, 0, 0, .03); + background-color: alpha(@window_fg_color, 0.08); + padding: 8px; +} + +.action-card-hover { + background-color: alpha(@window_fg_color, 0.18); +} + +.action-card-active { + background-color: alpha(@window_fg_color, 0.3); +} + +/** + * Station card playing + */ + +.station-card-playing { + background-color: alpha(@accent_bg_color, 0.85); + color: @accent_fg_color; +} + +.station-card-playing-hover { + background-color: alpha(@accent_bg_color, 0.70); +} + +.station-card-playing-active { + background-color: alpha(@accent_bg_color, 0.54); +} diff --git a/data/ui/account-info-dialog.blp b/data/ui/account-info-dialog.blp new file mode 100644 index 0000000..529a8cb --- /dev/null +++ b/data/ui/account-info-dialog.blp @@ -0,0 +1,77 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteAccountInfoDialog: Adw.Dialog { + title: _("Account information"); + width-request: 360; + content-width: 360; + content-height: 420; + follows-content-size: true; + + Adw.ToolbarView { + [top] + Adw.HeaderBar {} + + content: ScrolledWindow { + hscrollbar-policy: never; + propagate-natural-height: true; + + Adw.Clamp { + margin-top: 24; + margin-bottom: 12; + margin-start: 12; + margin-end: 12; + maximum-size: 360; + + Box { + spacing: 12; + orientation: vertical; + + Adw.Avatar avatar {} + + Label public_name_label { + styles [ + "title-1", + ] + + halign: center; + hexpand: true; + wrap: true; + } + + ListBox { + styles [ + "boxed-list-separate" + ] + + margin-top: 12; + selection-mode: none; + + Adw.ButtonRow user_button { + action-name: "app.open-account"; + title: _("Open in browser"); + } + + Adw.ButtonRow plus_button { + styles [ + "plus-button" + ] + + action-name: "app.open-plus"; + title: _("Plus"); + } + + Adw.ButtonRow logout_button { + styles [ + "destructive-action" + ] + + action-name: "app.log-out"; + title: _("Log out"); + } + } + } + } + }; + } +} diff --git a/data/ui/account_info_window.blp b/data/ui/account_info_window.blp deleted file mode 100644 index 3ecb78b..0000000 --- a/data/ui/account_info_window.blp +++ /dev/null @@ -1,146 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -template $CassetteAccountInfoWindow : Adw.Window { - content: Adw.ToolbarView { - [top] - Adw.HeaderBar { - } - content: - Adw.Clamp { - margin-top: 16; - margin-bottom: 16; - margin-start: 16; - margin-end: 16; - maximum-size: 600; - - Box { - spacing: 32; - - Adw.Avatar avatar { - } - - Box { - valign: center; - orientation: vertical; - spacing: 8; - - Label login_format_label { - styles [ - "title-1", - ] - - halign: start; - hexpand: true; - visible: false; - wrap: true; - label: C_("account info window", "Login: %s"); - } - - Label phone_format_label { - styles [ - "title-2", - ] - - halign: start; - hexpand: true; - visible: false; - ellipsize: middle; - label: C_("account info window", "Phone number: %s"); - } - - Label plus_label { - styles [ - "title-4", - "accent", - ] - - halign: start; - hexpand: true; - visible: false; - wrap: true; - label: C_("account info window", "Has Plus"); - } - - Separator { - styles [ - "spacer", - ] - } - - Label first_name_format_label { - styles [ - "title-4", - ] - - halign: start; - hexpand: true; - visible: false; - wrap: true; - label: C_("account info window", "First name: %s"); - } - - Label second_name_format_label { - styles [ - "title-4", - ] - - halign: start; - hexpand: true; - visible: false; - wrap: true; - label: C_("account info window", "Second name: %s"); - } - - Label display_name_format_label { - styles [ - "title-4", - ] - - halign: start; - hexpand: true; - visible: false; - wrap: true; - label: C_("account info window", "Display name: %s"); - } - - Label birthday_format_label { - styles [ - "title-4", - ] - - halign: start; - hexpand: true; - visible: false; - wrap: true; - label: C_("account info window", "Birthday: %s"); - } - - Separator { - styles [ - "spacer", - ] - } - - Label add_label { - styles [ - "title-4", - ] - - halign: start; - hexpand: true; - visible: false; - wrap: true; - label: C_("account info window", "Additional options:"); - } - - Box options_box { - orientation: vertical; - spacing: 4; - visible: false; - } - } - } - }; - }; -} diff --git a/data/ui/action-card-custom.blp b/data/ui/action-card-custom.blp new file mode 100644 index 0000000..905ef67 --- /dev/null +++ b/data/ui/action-card-custom.blp @@ -0,0 +1,11 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteActionCardCustom: $CassetteReactable { + styles [ + "action-card" + ] + + hexpand: true; + vexpand: true; +} diff --git a/data/ui/action-card-station.blp b/data/ui/action-card-station.blp new file mode 100644 index 0000000..3af3491 --- /dev/null +++ b/data/ui/action-card-station.blp @@ -0,0 +1,38 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteActionCardStation: $CassetteActionCardCustom { + Box content_box { + orientation: vertical; + spacing: 8; + // hexpand: true; + Stack image_stack { + transition-type: crossfade; + transition-duration: 75; + + StackPage { + name: "image"; + + child: Image content_image { + icon-size: large; + }; + } + + StackPage { + name: "play-mark"; + + child: $CassettePlayMarkContext play_mark_context { + context-type: "radio"; + }; + } + } + + Label content_label { + styles [ + "heading" + ] + + ellipsize: end; + } + } +} diff --git a/data/ui/begin_view.ui b/data/ui/begin-view.ui similarity index 98% rename from data/ui/begin_view.ui rename to data/ui/begin-view.ui index 464f6bb..81d0ad9 100644 --- a/data/ui/begin_view.ui +++ b/data/ui/begin-view.ui @@ -118,7 +118,7 @@ false - adwaita-view-refresh-symbolic + view-refresh-symbolic diff --git a/data/ui/cache_deletion_preferences.ui b/data/ui/cache-deletion-preferences.ui similarity index 87% rename from data/ui/cache_deletion_preferences.ui rename to data/ui/cache-deletion-preferences.ui index 12651f3..c29da08 100644 --- a/data/ui/cache_deletion_preferences.ui +++ b/data/ui/cache-deletion-preferences.ui @@ -17,7 +17,8 @@ - Cache dirs size: + + Dirs size: 0 0 @@ -31,7 +32,7 @@ - Temporary + Cache 0 1 @@ -78,10 +79,13 @@ + - adwaita-user-trash-symbolic - Clear cache + user-trash-symbolic + Clear @@ -102,7 +106,7 @@ - Permanent + Data 1 1 @@ -149,10 +153,14 @@ + + Move to cache - adwaita-user-trash-symbolic - Move saved + user-trash-symbolic + Move diff --git a/data/ui/cache-indicator.blp b/data/ui/cache-indicator.blp new file mode 100644 index 0000000..483f6d7 --- /dev/null +++ b/data/ui/cache-indicator.blp @@ -0,0 +1,46 @@ +using Gtk 4.0; +using Adw 1; + +Popover jobs_popover { + width-request: 360; + + ScrolledWindow { + hscrollbar-policy: never; + max-content-height: 400; + propagate-natural-height: true; + + Box jobs_box { + margin-start: 12; + margin-end: 12; + margin-top: 12; + margin-bottom: 12; + spacing: 12; + orientation: vertical; + } + } +} + +template $CassetteCacheIndicator: Adw.Bin { + Revealer indicator_revealer { + halign: center; + valign: center; + transition-type: crossfade; + visible: false; + + MenuButton jobs_button { + styles [ + "flat" + ] + + tooltip-text: _("Show all cache jobs"); + popover: jobs_popover; + + DrawingArea jobs_icon { + width-request: 16; + height-request: 16; + halign: center; + valign: center; + } + } + } +} diff --git a/data/ui/cache_indicator.ui b/data/ui/cache_indicator.ui deleted file mode 100644 index 254a16d..0000000 --- a/data/ui/cache_indicator.ui +++ /dev/null @@ -1,49 +0,0 @@ - - - - 400 - - - never - 400 - True - - - 12 - 12 - 12 - 12 - 12 - vertical - - - - - - - diff --git a/data/ui/cant_show_view.ui b/data/ui/cant-show-view.ui similarity index 76% rename from data/ui/cant_show_view.ui rename to data/ui/cant-show-view.ui index 0cf0587..91c1f09 100644 --- a/data/ui/cant_show_view.ui +++ b/data/ui/cant-show-view.ui @@ -5,7 +5,7 @@ diff --git a/data/ui/cover-image.blp b/data/ui/cover-image.blp new file mode 100644 index 0000000..ec7c5ab --- /dev/null +++ b/data/ui/cover-image.blp @@ -0,0 +1,21 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteCoverImage: Frame { + halign: center; + valign: center; + + Stack stack { + hhomogeneous: true; + + StackPage { + name: "placeholder"; + child: Image placeholder_image { + icon-size: large; + icon-name: "audio-x-generic-symbolic"; + width-request: bind template.image-widget-size; + height-request: bind template.image-widget-size; + }; + } + } +} diff --git a/data/ui/cover_image.blp b/data/ui/cover_image.blp deleted file mode 100644 index 1c11166..0000000 --- a/data/ui/cover_image.blp +++ /dev/null @@ -1,13 +0,0 @@ -using Gtk 4.0; -using Adw 1; - -template $CassetteCoverImage : Adw.Bin { - Frame cover_frame { - valign: center; - halign: center; - - Image real_image { - icon-name: "adwaita-audio-x-generic-symbolic"; - } - } -} \ No newline at end of file diff --git a/data/ui/custom-button.blp b/data/ui/custom-button.blp new file mode 100644 index 0000000..e890946 --- /dev/null +++ b/data/ui/custom-button.blp @@ -0,0 +1,8 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteCustomButton: Adw.Bin { + Button real_button { + Adw.ButtonContent button_content {} + } +} diff --git a/data/ui/custom-menu-button.blp b/data/ui/custom-menu-button.blp new file mode 100644 index 0000000..ce9e336 --- /dev/null +++ b/data/ui/custom-menu-button.blp @@ -0,0 +1,8 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteCustomMenuButton: $CassetteShrinkableBin { + Gtk.MenuButton real_button { + icon-name: "view-more-symbolic"; + } +} diff --git a/data/ui/custom_page_preferences.ui b/data/ui/custom-page-preferences.ui similarity index 95% rename from data/ui/custom_page_preferences.ui rename to data/ui/custom-page-preferences.ui index 9151d63..f116dee 100644 --- a/data/ui/custom_page_preferences.ui +++ b/data/ui/custom-page-preferences.ui @@ -68,7 +68,7 @@ - adwaita-cache-perm-symbolic + cache-perm-symbolic end center false @@ -85,7 +85,7 @@ - adwaita-user-trash-symbolic + user-trash-symbolic end center false diff --git a/data/ui/custom_pages_preferences.ui b/data/ui/custom-pages-preferences.ui similarity index 100% rename from data/ui/custom_pages_preferences.ui rename to data/ui/custom-pages-preferences.ui diff --git a/data/ui/devel-view.blp b/data/ui/devel-view.blp new file mode 100644 index 0000000..5f73b63 --- /dev/null +++ b/data/ui/devel-view.blp @@ -0,0 +1,58 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteDevelView: $CassetteBaseView { + ScrolledWindow { + hscrollbar-policy: never; + propagate-natural-height: true; + + Box { + margin-top: 24; + orientation: vertical; + + ScrolledWindow scrolled_window { + styles [ + "sp-sw" + ] + + propagate-natural-height: true; + hscrollbar-policy: never; + vexpand: true; + vscrollbar-policy: external; + + $CassetteTrackCarousel track_carousel { + interactive: true; + spacing: 16; + panels-width: 270; + vexpand: true; + hexpand: true; + orientation: vertical; + height-request: 500; + } + } + + Separator {} + + Adw.Clamp { + margin-top: 24; + margin-bottom: 24; + margin-start: 12; + margin-end: 12; + maximum-size: 860; + + Box main_box { + orientation: vertical; + spacing: 4; + + ToggleButton hide_player_bar_button { + label: "Hide playerbar"; + } + + Button stations_view_button { + label: "Stations view"; + } + } + } + } + } +} diff --git a/data/ui/disliked_tracks_view.ui b/data/ui/disliked-tracks-view.ui similarity index 100% rename from data/ui/disliked_tracks_view.ui rename to data/ui/disliked-tracks-view.ui diff --git a/data/ui/equalaizer.blp b/data/ui/equalaizer.blp new file mode 100644 index 0000000..1e5cae1 --- /dev/null +++ b/data/ui/equalaizer.blp @@ -0,0 +1,199 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteEqualaizer: Adw.Bin { + Box { + height-request: 230; + homogeneous: true; + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + + Scale { + styles [ + "equalaizer-scale" + ] + + orientation: vertical; + vexpand: true; + inverted: true; + + adjustment: Adjustment { + lower: -100.0; + value: 0.0; + upper: 100.0; + step-increment: 5.0; + page-increment: 5.0; + page-size: 1.0; + }; + } + } +} diff --git a/data/ui/header-bar.blp b/data/ui/header-bar.blp new file mode 100644 index 0000000..13f9cba --- /dev/null +++ b/data/ui/header-bar.blp @@ -0,0 +1,64 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteHeaderBar: $CassetteShrinkableBin { + search-active: bind search_button.active; + + Adw.HeaderBar { + [start] + Button backward_button { + icon-name: "go-previous-symbolic"; + visible: false; + tooltip-text: _("Go back"); + sensitive: bind template.interactive; + } + + [start] + Button refresh_button { + icon-name: "view-refresh-symbolic"; + visible: false; + tooltip-text: _("Refresh"); + sensitive: bind template.interactive; + } + + [start] + ToggleButton search_button { + icon-name: "edit-find-symbolic"; + visible: false; + tooltip-text: _("Yandex Music search"); + // sensitive: bind template.interactive; + } + + title-widget: Adw.ViewSwitcher switcher_title { + policy: wide; + hexpand: false; + sensitive: bind template.interactive; + }; + + [end] + $CassettePrimaryMenuButton menu_button { + visible: bind template.sidebar-shown inverted; + sensitive: bind template.interactive; + } + + [end] + Button avatar_button { + styles [ + "flat" + ] + + visible: false; + sensitive: bind template.interactive; + + Adw.Avatar avatar { + size: 22; + } + } + + [end] + $CassetteCacheIndicator cache_indicator { + visible: bind template.sidebar-shown inverted; + sensitive: bind template.interactive; + } + } +} diff --git a/data/ui/headered-scrolled-window.blp b/data/ui/headered-scrolled-window.blp new file mode 100644 index 0000000..836c9be --- /dev/null +++ b/data/ui/headered-scrolled-window.blp @@ -0,0 +1,34 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteHeaderedScrolledWindow: Adw.Bin { + Box { + orientation: vertical; + + Revealer header_revealer { + transition-type: slide_down; + transition-duration: 150; + + Box { + orientation: vertical; + + Adw.Bin header_bin { + styles [ + "light-background" + ] + } + + Gtk.Separator { + styles [ + "border-separator" + ] + } + } + } + + ScrolledWindow real_scrolled_window { + hscrollbar-policy: never; + propagate-natural-height: true; + } + } +} diff --git a/data/ui/help-overlay.blp b/data/ui/help-overlay.blp new file mode 100644 index 0000000..330142f --- /dev/null +++ b/data/ui/help-overlay.blp @@ -0,0 +1,76 @@ +using Gtk 4.0; + +ShortcutsWindow help_overlay { + modal: true; + + ShortcutsSection { + section-name: "shortcuts"; + max-height: 10; + + ShortcutsGroup { + title: _("Main Actions"); + + ShortcutsShortcut { + title: _("Show Shortcuts"); + action-name: "win.show-help-overlay"; + } + + ShortcutsShortcut { + title: _("Quit"); + action-name: "app.quit"; + } + } + + ShortcutsGroup { + title: _("Playback Control"); + + ShortcutsShortcut { + title: _("Play/Pause playback"); + action-name: "app.play-pause"; + } + + ShortcutsShortcut { + title: _("Play previous track"); + action-name: "app.prev"; + } + + ShortcutsShortcut { + title: _("Play next track"); + action-name: "app.next"; + } + + ShortcutsShortcut { + title: _("Mute app"); + action-name: "app.mute"; + } + } + + ShortcutsGroup { + title: _("Queue control"); + + ShortcutsShortcut { + title: _("Change shuffle mode"); + action-name: "app.change-shuffle"; + } + + ShortcutsShortcut { + title: _("Change repeat mode"); + action-name: "app.change-repeat"; + } + } + + ShortcutsGroup { + title: _("Other"); + + ShortcutsShortcut { + title: _("Share current track"); + action-name: "app.share-current-track"; + } + + ShortcutsShortcut { + title: _("Parse url from clipboard"); + action-name: "app.parse-url"; + } + } + } +} diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui deleted file mode 100644 index 948a894..0000000 --- a/data/ui/help-overlay.ui +++ /dev/null @@ -1,69 +0,0 @@ - - - - True - - - shortcuts - 10 - - - Main Actions - - - Show Shortcuts - win.show-help-overlay - - - - - Quit - app.quit - - - - - - - Media Control - - - Play/Pause playback - app.play-pause - - - - - Play previous track - app.prev - - - - - Play next track - app.next - - - - - - - Queue control - - - Change shuffle mode - app.change-shuffle - - - - - Change repeat mode - app.change-repeat - - - - - - - - diff --git a/data/ui/info_marks.ui b/data/ui/info-marks.ui similarity index 85% rename from data/ui/info_marks.ui rename to data/ui/info-marks.ui index 7667e3b..eef6c84 100644 --- a/data/ui/info_marks.ui +++ b/data/ui/info-marks.ui @@ -10,7 +10,7 @@ 38 38 - adwaita-replaced-symbolic + replaced-symbolic false @@ -19,7 +19,7 @@ 38 38 false - cassette-explicit-symbolic + explicit-symbolic Explicit content @@ -28,7 +28,7 @@ 38 38 false - cassette-child-symbolic + child-symbolic Child content diff --git a/data/ui/job_info_badge.ui b/data/ui/job-info-badge.ui similarity index 96% rename from data/ui/job_info_badge.ui rename to data/ui/job-info-badge.ui index 642241f..810aae4 100644 --- a/data/ui/job_info_badge.ui +++ b/data/ui/job-info-badge.ui @@ -45,7 +45,7 @@ - adwaita-edit-delete-symbolic + edit-delete-symbolic false false center diff --git a/data/ui/label_button.ui b/data/ui/label-button.ui similarity index 100% rename from data/ui/label_button.ui rename to data/ui/label-button.ui diff --git a/data/ui/loadable-widget.blp b/data/ui/loadable-widget.blp new file mode 100644 index 0000000..2399b04 --- /dev/null +++ b/data/ui/loadable-widget.blp @@ -0,0 +1,24 @@ +using Gtk 4.0; +using Adw 1; + +template $CassetteLoadableWidget: $AdwBin { + Stack main_stack { + StackPage { + name: "loading"; + + child: $CassetteLoadingSpinner {}; + } + + StackPage { + name: "result"; + + child: Adw.Bin result_bin {}; + } + + StackPage { + name: "error"; + + child: Adw.Bin error_bin {}; + } + } +} diff --git a/data/ui/lyrics_line.ui b/data/ui/lyrics-line.ui similarity index 100% rename from data/ui/lyrics_line.ui rename to data/ui/lyrics-line.ui diff --git a/data/ui/lyrics_panel.ui b/data/ui/lyrics-panel.ui similarity index 88% rename from data/ui/lyrics_panel.ui rename to data/ui/lyrics-panel.ui index f833370..a626b59 100644 --- a/data/ui/lyrics_panel.ui +++ b/data/ui/lyrics-panel.ui @@ -5,6 +5,7 @@