diff --git a/docs/linux_build_guide.md b/docs/linux_build_guide.md new file mode 100644 index 0000000..a1c729b --- /dev/null +++ b/docs/linux_build_guide.md @@ -0,0 +1,45 @@ +# Linux Build Guide + +## Determining Package Size +To determine the installed size for your Linux package configuration, you can use the following script: + +```bash +#!/bin/bash + +# Build the Linux app +flutter build linux + +# Get size in KB and add 17% buffer for runtime dependencies +SIZE_KB=$(du -sk build/linux/x64/release/bundle | cut -f1) +BUFFER_SIZE_KB=$(($SIZE_KB + ($SIZE_KB * 17 / 100))) + +echo "Actual bundle size: $SIZE_KB KB" +echo "Recommended installed_size (with 17% buffer): $BUFFER_SIZE_KB KB" +``` + +Save this as `get_package_size.sh` in your project root and make it executable: +```bash +chmod +x get_package_size.sh +``` + +### Usage +1. Run the script: + ```bash + ./get_package_size.sh + ``` +2. Use the output value for `installed_size` in your `linux/packaging/deb/make_config.yaml` file: + ```yaml + installed_size: 75700 # Replace with the value from the script + ``` + +### Why add a buffer? +The 17% buffer is added to account for: +- Runtime dependencies +- Future updates +- Potential additional assets +- Prevent installation issues on systems with limited space + +### Notes +- The installed size should be specified in kilobytes (KB) +- Always round up the buffer size to be safe +- Re-run this script after significant changes to your app (new assets, dependencies, etc.) \ No newline at end of file diff --git a/linux/my_application.cc b/linux/my_application.cc index ca1287d..4c7da0c 100644 --- a/linux/my_application.cc +++ b/linux/my_application.cc @@ -17,6 +17,14 @@ G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); + + GList *windows = gtk_application_get_windows(GTK_APPLICATION(application)); + if (windows) + { + gtk_window_present(GTK_WINDOW(windows->data)); + return; + } + GtkWindow* window = GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); @@ -78,7 +86,7 @@ static gboolean my_application_local_command_line(GApplication* application, gch g_application_activate(application); *exit_status = 0; - return TRUE; + return FALSE; } // Implements GApplication::startup. @@ -119,6 +127,6 @@ static void my_application_init(MyApplication* self) {} MyApplication* my_application_new() { return MY_APPLICATION(g_object_new(my_application_get_type(), "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, + "flags", G_APPLICATION_HANDLES_COMMAND_LINE | G_APPLICATION_HANDLES_OPEN, nullptr)); } diff --git a/linux/packaging/deb/make_config.yaml b/linux/packaging/deb/make_config.yaml index 3367263..5579be4 100644 --- a/linux/packaging/deb/make_config.yaml +++ b/linux/packaging/deb/make_config.yaml @@ -15,6 +15,20 @@ essential: false icon: assets/icon/logo.png +description: + short: Beautiful, Fast and Functional Audiobook Player for your Audiobookshelf server. + long: | + Vaani is a client for your (self-hosted) Audiobookshelf server. + + Features: + - Functional Player: Speed Control, Sleep Timer, Shake to Control Player + - Save data with Offline listening and caching + - Material Design + - Extensive Settings to customize every tiny detail + + Note: you need an Audiobookshelf server setup for this app to work. + Please see https://www.audiobookshelf.org/ on how to setup one if not already. + postuninstall_scripts: - echo "Sorry to see you go." @@ -26,7 +40,12 @@ keywords: generic_name: Audiobook Player categories: - - Media - - Utility + - AudioVideo + - Audio + - Player startup_notify: true + +# https://github.com/llfbandit/app_links/blob/051f53fa6039cbfaef0fcde73df20fef9e248cab/doc/README_linux.md +supported_mime_type: + - x-scheme-handler/vaani