Um in C den Desktophintergrund in ein dann anderweitig nutzbares wxBitmap zu bekommen, kann man so vorgehen:
wxBitmap* backImage = new wxBitmap();
WnckScreen *screen = wnck_screen_get_default ();
backImage->SetPixmap(
gdk_pixmap_foreign_new(
wnck_screen_get_background_pixmap(screen)
)
);
wnckScreen aus der libwnck, gdk-pixmap-foreign-new, SetPixmap fand ich nicht in der Doku.
Den Wechsel des Hintergrunds kann man mit GSignals so fangen:
g_signal_connect (G_OBJECT(defaultScreen), "background-changed",
G_CALLBACK (callback),
ca);
Wenig Code, doch gar nicht so einfach zu finden.