Avoid creating gtkrc-2.0 if it does not exist
This MR would fix the following 2 bugs: Plasma does not follow GTK2_RC_FILES
environment variable and would create ~/.gtkrc-2.0
every time on login.
Here is the more detailed explanation:
gmenu-dbusmenu-proxy
hardcoded gtkrcPath
as QDir::homePath() + QLatin1String("/.gtkrc-2.0")
:
but it's not creating the file if it's not present. kde-gtk-config
's Gtk2ConfigEditor::removeLegacyStrings()
is the cause:
https://invent.kde.org/plasma/kde-gtk-config/-/blob/v5.27.1/kded/config_editor/gtk2.cpp#L54
it uses Utils::readFileContents(QFile &file)
https://invent.kde.org/plasma/kde-gtk-config/-/blob/v5.27.1/kded/config_editor/utils.cpp#L19
which calls file.open(QIODevice::ReadWrite | QIODevice::Text)
, and the mode ReadWrite
means to create the file if it's not exist:
https://doc.qt.io/qt-5/qfile.html#open
So at startup, kde-gtk-config
launches and a empty ~/.gtkrc-2.0
file is created, then gmenu-dbusmenu-proxy
watchs the file creation
and write the content to the file.
Furthermore, even if ~/.gtkrc-2.0
does not exist, Gtk2ConfigEditor::removeLegacyStrings()
would still write "modified" content to the file
https://invent.kde.org/plasma/kde-gtk-config/-/blob/v5.27.1/kded/config_editor/gtk2.cpp#L76
but in that case, it would just create an empty file, for gmenu-dbusmenu-proxy
to watch and write something to it.