Я пытаюсь написать короткую программу на C, которая заставляет все программы перезагружать тему GTK + 2, как это делает LXAppearance, когда вы нажимаете на apply.
Глядя на исходный код LXAppearance, я нашел функцию, которая делает именно это. Эта же функция (без if-else, которая применяется только к LXSession) также находится в gtk-theme-switch .
Это код, написанный отдельной программой:
#include <gtk/gtk.h>
int main()
{
GdkEventClient event;
event.type = GDK_CLIENT_EVENT;
event.send_event = TRUE;
event.window = NULL;
event.message_type = gdk_atom_intern("_GTK_READ_RCFILES", FALSE);
event.data_format = 8;
gdk_event_send_clientmessage_toall((GdkEvent*)&event);
}
При запуске программы I возникает следующая ошибка:
(process:3428): Gdk-CRITICAL **: 21:38:49.599: IA__gdk_screen_get_root_window: assertion 'GDK_IS_SCREEN (screen)' failed
Segmentation fault (core dumped)
Что я делаю не так?