diff --git a/include/convolver.hpp b/include/convolver.hpp index 8c095d0ac..9f64e91b0 100644 --- a/include/convolver.hpp +++ b/include/convolver.hpp @@ -58,8 +58,8 @@ class Convolver : public PluginBase { auto search_irs_path(const std::string& name) -> std::string; private: - std::string local_irs_dir; - std::vector system_data_irs_dir; + std::string local_dir_irs; + std::vector system_data_dir_irs; bool kernel_is_initialized = false; bool n_samples_is_power_of_2 = true; diff --git a/include/rnnoise.hpp b/include/rnnoise.hpp index ded266a13..8b216bf8b 100644 --- a/include/rnnoise.hpp +++ b/include/rnnoise.hpp @@ -70,8 +70,8 @@ class RNNoise : public PluginBase { sigc::signal model_changed; private: - std::string local_model_dir; - std::vector system_data_model_dir; + std::string local_dir_rnnoise; + std::vector system_data_dir_rnnoise; bool resample = false; bool notify_latency = false; diff --git a/src/convolver.cpp b/src/convolver.cpp index 4828c723e..fd27eadb7 100644 --- a/src/convolver.cpp +++ b/src/convolver.cpp @@ -55,16 +55,20 @@ Convolver::Convolver(const std::string& tag, do_autogain(g_settings_get_boolean(settings, "autogain") != 0), ir_width(g_settings_get_int(settings, "ir-width")) { // Initialize directories for local and community irs - local_irs_dir = std::string{g_get_user_config_dir()} + "/easyeffects/irs"; + local_dir_irs = std::string{g_get_user_config_dir()} + "/easyeffects/irs"; - const gchar* const* xdg_data_dirs = g_get_system_data_dirs(); + // Flatpak specific path (.flatpak-info always present for apps running in the flatpak sandbox) + if (std::filesystem::is_regular_file("/.flatpak-info")) { + system_data_dir_irs.push_back("/app/extensions/Presets/irs"); + } - while (*xdg_data_dirs != nullptr) { + // Regular paths + for (const gchar* const* xdg_data_dirs = g_get_system_data_dirs(); *xdg_data_dirs != nullptr;) { std::string dir = *xdg_data_dirs++; dir += dir.ends_with("/") ? "" : "/"; - system_data_irs_dir.push_back(dir + "easyeffects/irs"); + system_data_dir_irs.push_back(dir + "easyeffects/irs"); } gconnections.push_back(g_signal_connect(settings, "changed::ir-width", @@ -295,7 +299,7 @@ auto Convolver::search_irs_path(const std::string& name) -> std::string { const auto irs_filename = name + irs_ext; // First check local directory - const auto local_irs_file = std::filesystem::path{local_irs_dir + "/" + irs_filename}; + const auto local_irs_file = std::filesystem::path{local_dir_irs + "/" + irs_filename}; if (std::filesystem::exists(local_irs_file)) { return local_irs_file.c_str(); @@ -304,7 +308,7 @@ auto Convolver::search_irs_path(const std::string& name) -> std::string { // If the file is not found locally, try to search it under system directories. std::string community_irs_file; - for (const auto& xdg_irs_dir : system_data_irs_dir) { + for (const auto& xdg_irs_dir : system_data_dir_irs) { if (util::search_filename(std::filesystem::path{xdg_irs_dir}, irs_filename, community_irs_file, 3U)) { break; } diff --git a/src/presets_manager.cpp b/src/presets_manager.cpp index 8e9608ebf..aef9a522c 100644 --- a/src/presets_manager.cpp +++ b/src/presets_manager.cpp @@ -82,11 +82,17 @@ PresetsManager::PresetsManager() settings(g_settings_new(tags::app::id)), soe_settings(g_settings_new(tags::schema::id_output)), sie_settings(g_settings_new(tags::schema::id_input)) { - // initialize input and output directories for community presets - - const gchar* const* xdg_data_dirs = g_get_system_data_dirs(); + // Initialize input and output directories for community presets. + // Flatpak specific path (.flatpak-info always present for apps running in the flatpak sandbox). + if (std::filesystem::is_regular_file("/.flatpak-info")) { + system_data_dir_input.push_back("/app/extensions/Presets/input"); + system_data_dir_output.push_back("/app/extensions/Presets/output"); + system_data_dir_irs.push_back("/app/extensions/Presets/irs"); + system_data_dir_rnnoise.push_back("/app/extensions/Presets/rnnoise"); + } - while (*xdg_data_dirs != nullptr) { + // Regular paths. + for (const gchar* const* xdg_data_dirs = g_get_system_data_dirs(); *xdg_data_dirs != nullptr;) { std::string dir = *xdg_data_dirs++; dir += dir.ends_with("/") ? "" : "/"; @@ -97,14 +103,6 @@ PresetsManager::PresetsManager() system_data_dir_rnnoise.push_back(dir + "easyeffects/rnnoise"); } - // flatpak always creates this file for apps running in the flatpak sandbox - if (std::filesystem::is_regular_file("/.flatpak-info")) { - system_data_dir_input.push_back("/app/extensions/Presets/input"); - system_data_dir_output.push_back("/app/extensions/Presets/output"); - system_data_dir_irs.push_back("/app/extensions/Presets/irs"); - system_data_dir_rnnoise.push_back("/app/extensions/Presets/rnnoise"); - } - // create user presets directories create_user_directory(user_input_dir); diff --git a/src/rnnoise.cpp b/src/rnnoise.cpp index 6a403e1f0..d8f9ada8e 100644 --- a/src/rnnoise.cpp +++ b/src/rnnoise.cpp @@ -52,16 +52,20 @@ RNNoise::RNNoise(const std::string& tag, data_tmp.reserve(blocksize); // Initialize directories for local and community models - local_model_dir = std::string{g_get_user_config_dir()} + "/easyeffects/rnnoise"; + local_dir_rnnoise = std::string{g_get_user_config_dir()} + "/easyeffects/rnnoise"; - const gchar* const* xdg_data_dirs = g_get_system_data_dirs(); + // Flatpak specific path (.flatpak-info always present for apps running in the flatpak sandbox) + if (std::filesystem::is_regular_file("/.flatpak-info")) { + system_data_dir_rnnoise.push_back("/app/extensions/Presets/rnnoise"); + } - while (*xdg_data_dirs != nullptr) { + // Regular paths + for (const gchar* const* xdg_data_dirs = g_get_system_data_dirs(); *xdg_data_dirs != nullptr;) { std::string dir = *xdg_data_dirs++; dir += dir.ends_with("/") ? "" : "/"; - system_data_model_dir.push_back(dir + "easyeffects/rnnoise"); + system_data_dir_rnnoise.push_back(dir + "easyeffects/rnnoise"); } const auto key_v = g_settings_get_double(settings, "wet"); @@ -314,7 +318,7 @@ auto RNNoise::search_model_path(const std::string& name) -> std::string { const auto model_filename = name + rnnn_ext; // First check local directory - const auto local_model_file = std::filesystem::path{local_model_dir + "/" + model_filename}; + const auto local_model_file = std::filesystem::path{local_dir_rnnoise + "/" + model_filename}; if (std::filesystem::exists(local_model_file)) { return local_model_file.c_str(); @@ -323,7 +327,7 @@ auto RNNoise::search_model_path(const std::string& name) -> std::string { // If the file is not found locally, try to search it under system directories. std::string community_model_file; - for (const auto& xdg_model_dir : system_data_model_dir) { + for (const auto& xdg_model_dir : system_data_dir_rnnoise) { if (util::search_filename(std::filesystem::path{xdg_model_dir}, model_filename, community_model_file, 3U)) { break; } diff --git a/util/NEWS.yaml b/util/NEWS.yaml index 225458c19..06f225811 100644 --- a/util/NEWS.yaml +++ b/util/NEWS.yaml @@ -5,6 +5,7 @@ Date: UNRELEASED_DATE Description: - Features∶ - Community Presets have been implemented. Users can install packages containing multiple Easy Effects presets to be imported and applied inside the application. These packages will be maintained and shipped by volunteers. You can search them on Flathub or the repositories of your favorite distribution. +- Added the ability of collapsing the sidebar to hide the effects list and expand the area of the effects user interface. - Bug fixes∶ - A change in GTK 4.14.1 prevented to apply the values inserted into the text field of our SpinButton widgets. This issue is now resolved.