lwindolf / liferea

Liferea (Linux Feed Reader), a news reader for GTK/GNOME
https://lzone.de/liferea
GNU General Public License v2.0
804 stars 131 forks source link

Support org.freedesktop.appearance API for dark/light theme switching #1313

Open RushingAlien opened 8 months ago

RushingAlien commented 8 months ago

Hello, GNOME, KDE, and other DEs have adopted a standard, desktop agnostic API for deciding themes, GNOME even goes so far as to make their dark settings that's not in gnome-tweaks only set dark/light this way. gambar gambar Both of these toggle set dark theme only via the org.freedesktop.appearance API, hence issue #1275, the API used in gnome-tweaks is not touched through these toggles and is considered unsupported usecase The API: https://flatpak.github.io/xdg-desktop-portal/docs/#gdbus-org.freedesktop.portal.Settings And don't worry, the API works outside of Flatpak Apps that have implemented this API

lwindolf commented 8 months ago

This is already implemented. Relevant code can be found in src/conf.c:286

1275 is a strange issue, but not caused by not implementing the FreeDesktop portal support.

RushingAlien commented 8 months ago

I also experience issue #1275 .

Okay, seeing the code, doesn't look like it consults with portal and d-bus to fetch theme values? As far as I am aware, the portal settings is not a gschema, but communicated through d-bus

to reproduce

lwindolf commented 8 months ago

@RushingAlien I was maybe naivly expecting both interfaces GDBUS endpoint and GSettings schema to report the same setting value. If both places report different values how is the app to behave?

About reproducing: can you elaborate a bit more? Do you run in Flatpak or is the effect visible without Flatpak too?

RushingAlien commented 8 months ago

Hello again, Sorry for the late reply.

I don't think portals has a GSettings schema endpoint at all

And to answer your question:

About reproducing: can you elaborate a bit more? Do you run in Flatpak or is the effect visible without Flatpak too?

I have reproduced issue in both flatpak and non-flatpak

I'm guessing you are using Ubuntu? Ubuntu downstreams a lot hacks to make things work

RushingAlien commented 8 months ago

I don't think portals has a GSettings schema endpoint at all

This confirms my suspicion

liferea/src on  fdo-dark [!?] via C v13.2.1-gcc 
  ➜ LANG=en_US.UTF-8 ./liferea 
(net.sourceforge.liferea:182875): GLib-GIO-ERROR **: 16:54:38.741: Settings schema 'org.freedesktop.appearance' is not installed
Jejak/titik-putus jebakan (core didump)

I remove the conditional for the fdo codepath in liferea

I can't see anything in dconf-editor either

What we have however is /org/gnome/desktop/interface/color-scheme which is a gnome gsettings schema that controls the fdo settings(dbus) apps then are expected to read the fdo settings

Of course, thiss means KDE has a different trigger for fdo settings probably doesn't use gsettings at all

lwindolf commented 2 months ago

Given the implementation by libadwaita (https://gitlab.gnome.org/GNOME/libadwaita/-/blob/main/src/adw-settings-impl-portal.c) we should entirely switch to DBUS only too. It is easier to maintain.