void UpdateAppsScaling(double scale)
{
changing_gnome_settings_ = true;
changing_gnome_settings_timeout_.reset();
unsigned integer_scaling = std::max<unsigned>(1, scale);
double point_scaling = scale / static_cast<double>(integer_scaling);
double text_scale_factor = parent_->font_scaling() * point_scaling;
glib::Variant default_cursor_size(g_settings_get_default_value(gnome_ui_settings_, GNOME_CURSOR_SIZE.c_str()), glib::StealRef());
int cursor_size = std::round(default_cursor_size.GetInt32() * point_scaling * cursor_scale_);
g_settings_set_int(gnome_ui_settings_, GNOME_CURSOR_SIZE.c_str(), cursor_size);
g_settings_set_uint(gnome_ui_settings_, GNOME_SCALE_FACTOR.c_str(), integer_scaling);
g_settings_set_double(gnome_ui_settings_, GNOME_TEXT_SCALE_FACTOR.c_str(), text_scale_factor);
changing_gnome_settings_timeout_.reset(new glib::TimeoutSeconds(GNOME_SETTINGS_CHANGED_WAIT_SECONDS, [this] {
changing_gnome_settings_ = false;
return false;
}, glib::Source::Priority::LOW));
}