Hey guys!
I was thinking about resurrecting the Redshift Control Widget, as
apparently there are users (including me) that find it very convenient
to be able to enable/disable Night Color with just a click.
Anyway.... I have some questions that I hope you might be able to
answer. Currently Redshift Control Widget interacts with the redshift
command through cli commands using an executable datasource engine [1].
Given the fact that kwin exposes a dbus interface for the Night Color
functionality [2], I was thinking that the most straightforward approach
would be to change the cli commands executed by the executable
datasource engine and instead of interacting with the redshift command,
I could use something like qdbus [3], or dbus-send [4] to send messages
to the kwin's DBus interface.
So my first question is whether I'm right with the above approach. Might
it be better to communicate with the DBus at some other way? How? Can
you point me to some documentation, or example implementation?
Furthermore, in case that I want to call setNightColorConfig which
requires a QHash<QString, QVariant> argument [5], how can I encode it
for either qdbus or dbus-send?
Finally, I'm not sure if it is better to just create a new git repo and
create a new widget from scratch borrowing/duplicating most of the
existing code, or if it is better to continue with the existing
repo/code and rename the widget from Redshift Control Widget to Night
Color Widget, or whatever! (btw I'm one of the maintainers of Redshift
Control Widget) :\
Thank you in advance!
John Salatas
References
[1]
https://phabricator.kde.org/source/plasma-redshift-control/browse/master/package/contents/ui/main.qml$123
[2]
https://phabricator.kde.org/source/kwin/browse/master/colorcorrection/colorcorrectdbusinterface.h
[3] https://manpages.ubuntu.com/manpages/bionic/en/man1/qdbus.1.html
[4] https://dbus.freedesktop.org/doc/dbus-send.1.html
[5]
https://phabricator.kde.org/source/kwin/browse/master/colorcorrection/colorcorrectdbusinterface.h$97