Subsonic client made with Java, GTK4, and Libadwaita. The project is set up to be built and installed as a Flatpak application.
-
Clone this repository into a local folder.
-
Install the GNOME 50 Sdk and Platform runtime:
flatpak --user install org.gnome.Platform//50 org.gnome.Sdk//50
-
Install the OpenJDK flatpak extension:
flatpak --user install org.freedesktop.Sdk.Extension.openjdk25//25.08
-
Build and install the application:
flatpak-builder --force-clean \ --user \ --install \ --state-dir=/tmp/flatpak-builder \ /tmp/builddir \ moe.seiga.Hypersonic.Devel.ymlThe
--force-cleanoption will delete previous build files, and--userwill install the app for the current user instead of a system-wide installation.The
--state-diroption changes the state directory of flatpak-builder from.flatpak-builderto a directory in/tmp, to prevent IntelliJ IDEA from indexing its contents, which can significantly slow down or freeze the IDE.The
/tmp/builddirlocation can be set to any other directory of your choosing, as long as it is on the same filesystem as the flatpak-builder state directory. -
Run the application:
flatpak run moe.seiga.Hypersonic.Devel
You can open the project folder in IntelliJ IDEA, and it will automatically load the Gradle project. To run the application from the command line or terminal:
./gradlew runBlueprint (.blp) files are located in src/main/blueprints.
When you change them, they must be compiled to XML (.ui) format with blueprint-compiler. The output .ui files are then compiled into a gresource bundle with glib-compile-resources.
The Gradle build script contains the compileBlueprints and compileGResources tasks to automate this. Running ./gradlew compileGResources (or starting the app via ./gradlew run) compiles the blueprints and builds the gresource bundle in the build/ directory automatically.
When you create a new Blueprint file, add the filename in the following locations:
src/main/gresources/hypersonicapp.gresource.xml(change the extension from.blpto.ui)po/POTFILES.inif the file contains translatable strings.
The application is translated with GNU gettext.
All files containing translatable strings must be added to po/POTFILES.in.
To extract new translatable strings and update the hypersonic.pot template file, run:
./gradlew extractPotTo merge template updates into a specific language's .po file (e.g., id.po):
./gradlew mergePo_idDuring build or installation, the Gradle plugin automatically runs compileMo_<lang> to compile the .po files into binary .mo files and stages them under the correct locale directory.
Run the following command to remove the locally installed development application:
flatpak uninstall moe.seiga.Hypersonic.Devel