Skip to content

Commit bfeba1b

Browse files
committed
default light/dark skin/icon alternatives, enable survey
1 parent c682b63 commit bfeba1b

8 files changed

Lines changed: 48 additions & 14 deletions

File tree

resources/text/CHANGELOG

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@
22
-----
33
Released on: 2026-03-03
44

5+
PLEASE, read the text below!
6+
57
This release contains some nice fixes and little enhancements from previous version. Thanks for your patience.
68

9+
For users with dark desktop themes -> make sure to switch to `minimal-dark` skin in your RSS Guard settings. This skin is specifically tailored for users who use dark desktop themes.
10+
11+
As for the discussion around now-removed `QtWebEngine` and web browsing capabilities. There is argument that RSS Guard now cannot display "full" articles. Wrong. There is a setting in `Experimental` section of feed details dialog which can enable fetching full articles, even optionally in plain text format. Also, see below as this feature was even enhanced in this latest app version. I do not plan re-introducing web browsing capabilities because there are technical and (mainly) security implications which I want to avoid at all costs. RSS Guard provides ways to read full articles and if anyone wants to go to source website, just click the link and use the website in dedicated web browser which provides you with right tools to elevate your security in the online environment.
12+
713
Added:
814
* All text is selected when focusing search textbox. (#2061)
915
* Filtering of feed list now takes much more feed data into account like URL, description, etc. (#2059)
@@ -12,7 +18,7 @@ Added:
1218
* You now can drag URLs from article HTML preview to outside of RSS Guard. (#2032)
1319

1420
Fixed:
15-
* Quick note for #2044. If you use dark desktop environment scheme, then use `minimal-dark` skin, please. This one is specifically tailored for dark environments.
21+
* Quick note for #2044. If you use dark desktop environment scheme, then again, use `minimal-dark` skin, please. This one is specifically tailored for dark environments. I added a tweak to make `minimal-dark` (and `Breeze Dark`) default skin for users with dark desktop themes. This only applies when RSS Guard is started with clean config and also is supported only on some platforms.
1622
* Article automatic limit/control and article custom IDs are now also migrated from RSS Guard 4.x. (#2042)
1723
* All menu items can be now properly assigned to shortcuts and added to toolbars. (#2040)
1824
* Fix the bug in loading article pictures when going offline/online and vice versa. (#2033)

src/librssguard/definitions/definitions.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,17 +227,21 @@
227227

228228
#define APP_SKIN_USER_FOLDER "skins"
229229
#define APP_SKIN_DEFAULT "minimal-light"
230+
#define APP_SKIN_DEFAULT_DARK "minimal-dark"
230231
#define APP_SKIN_METADATA_FILE "metadata.xml"
231232

232233
#if defined(FORCE_BUNDLE_ICONS)
233234
// Forcibly bundle icons.
234-
#define APP_ICON_THEME_DEFAULT "Breeze"
235+
#define APP_ICON_THEME_DEFAULT "Breeze"
236+
#define APP_ICON_THEME_DARK_DEFAULT "Breeze Dark"
235237
#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
236238
// Do not force default icon theme on Linux.
237-
#define APP_ICON_THEME_DEFAULT ""
239+
#define APP_ICON_THEME_DEFAULT ""
240+
#define APP_ICON_THEME_DARK_DEFAULT ""
238241
#else
239242
// Use some default theme otherwise.
240-
#define APP_ICON_THEME_DEFAULT "Breeze"
243+
#define APP_ICON_THEME_DEFAULT "Breeze"
244+
#define APP_ICON_THEME_DARK_DEFAULT "Breeze Dark"
241245
#endif
242246

243247
#define APP_LOCAL_ICON_THEME_FOLDER "icons"

src/librssguard/miscellaneous/application.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,11 +293,9 @@ void Application::loadDynamicShortcuts() {
293293
}
294294

295295
void Application::offerPolls() const {
296-
/*
297296
if (isFirstRunCurrentVersion()) {
298-
qApp->web()->openUrlInExternalBrowser(QSL("https://forms.gle/3CZm95W6vrBLfi5K9"));
297+
qApp->web()->openUrlInExternalBrowser(QSL("https://forms.gle/1dCgqi2p1TEGn73d8"));
299298
}
300-
*/
301299
}
302300

303301
void Application::offerChanges() const {

src/librssguard/miscellaneous/iconfactory.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,12 +177,16 @@ void IconFactory::setCurrentIconTheme(const QString& theme_name) {
177177
}
178178

179179
QString IconFactory::currentIconTheme() const {
180-
return qApp->settings()->value(GROUP(GUI), SETTING(GUI::IconTheme)).toString();
180+
return qApp->settings()
181+
->value(GROUP(GUI),
182+
GUI::IconTheme,
183+
SkinFactory::isOsDarkModeEnabled() ? APP_ICON_THEME_DARK_DEFAULT : APP_ICON_THEME_DEFAULT)
184+
.toString();
181185
}
182186

183187
void IconFactory::loadCurrentIconTheme() {
184188
const QStringList installed_themes = installedIconThemes();
185-
const QString theme_name_from_settings = qApp->settings()->value(GROUP(GUI), SETTING(GUI::IconTheme)).toString();
189+
const QString theme_name_from_settings = currentIconTheme();
186190

187191
if (QIcon::themeName() == theme_name_from_settings) {
188192
qDebugNN << LOGSEC_GUI << "Icon theme" << QUOTE_W_SPACE(theme_name_from_settings) << "already loaded.";

src/librssguard/miscellaneous/settings.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,10 +386,8 @@ DKEY GUI::DefaultSortOrderFeeds = "default_sort_order_feeds";
386386
DVALUE(Qt::SortOrder) GUI::DefaultSortOrderFeedsDef = Qt::AscendingOrder;
387387

388388
DKEY GUI::IconTheme = "icon_theme_name";
389-
DVALUE(char*) GUI::IconThemeDef = APP_ICON_THEME_DEFAULT;
390389

391390
DKEY GUI::Skin = "skin";
392-
DVALUE(char*) GUI::SkinDef = APP_SKIN_DEFAULT;
393391

394392
DKEY GUI::Style = "style";
395393
DVALUE(char*) GUI::StyleDef = APP_STYLE_DEFAULT;

src/librssguard/miscellaneous/settings.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,10 +403,8 @@ namespace GUI {
403403
VALUE(Qt::SortOrder) DefaultSortOrderFeedsDef;
404404

405405
KEY IconTheme;
406-
VALUE(char*) IconThemeDef;
407406

408407
KEY Skin;
409-
VALUE(char*) SkinDef;
410408

411409
KEY Style;
412410
VALUE(char*) StyleDef;

src/librssguard/miscellaneous/skinfactory.cpp

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,32 @@ QString SkinFactory::customSkinBaseFolder() const {
213213
return qApp->userDataFolder() + QDir::separator() + APP_SKIN_USER_FOLDER;
214214
}
215215

216+
#if defined(Q_OS_WIN)
217+
bool isWindowsDarkMode() {
218+
QSettings settings(QSL("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"),
219+
QSettings::Format::NativeFormat);
220+
QVariant value = settings.value(QSL("AppsUseLightTheme"));
221+
222+
return !value.isValid() ? false : (value.toInt() == 0);
223+
}
224+
#endif
225+
226+
bool SkinFactory::isOsDarkModeEnabled() {
227+
#if defined(Q_OS_WIN)
228+
return isWindowsDarkMode();
229+
#elif QT_VERSION >= 0x060500 // Qt >= 6.5.0
230+
return qApp->styleHints()->colorScheme() == Qt::ColorScheme::Dark;
231+
#else
232+
return false;
233+
#endif
234+
}
235+
216236
QString SkinFactory::selectedSkinName() const {
217-
return qApp->settings()->value(GROUP(GUI), SETTING(GUI::Skin)).toString();
237+
bool is_dark = isOsDarkModeEnabled();
238+
239+
return qApp->settings()
240+
->value(GROUP(GUI), GUI::Skin, is_dark ? QSL(APP_SKIN_DEFAULT_DARK) : QSL(APP_SKIN_DEFAULT))
241+
.toString();
218242
}
219243

220244
QString SkinFactory::prepareHtml(const QString& inner_html) {

src/librssguard/miscellaneous/skinfactory.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ class RSSGUARD_DLLSPEC SkinFactory : public QObject {
9797

9898
bool isStyleGoodForAlternativeStylePalette(const QString& style_name) const;
9999

100+
static bool isOsDarkModeEnabled();
101+
100102
// Returns the name of the skin, that should be activated
101103
// after application restart.
102104
QString selectedSkinName() const;

0 commit comments

Comments
 (0)