X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=7b4ca7406066034c010b8c353c63642466d8dfe8;hb=5074d902aa215a2a656980d31b19574a5db1f795;hp=e5a9af3b809c86d642b5134c0519cfbde2b5e41c;hpb=c726a1f709484da690a6fbcc7f6b8b4934660290;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index e5a9af3b..7b4ca740 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -52,6 +52,7 @@ static gboolean screen_validate_layout(ObDesktopLayout *l); static gboolean replace_wm(); +static void screen_tell_ksplash(); guint screen_num_desktops; guint screen_num_monitors; @@ -302,9 +303,45 @@ gboolean screen_annex() net_supported, atom, supported, num_support); g_free(supported); + screen_tell_ksplash(); + return TRUE; } +static void screen_tell_ksplash() +{ + XEvent e; + char **argv; + + argv = g_new(gchar*, 6); + argv[0] = g_strdup("dcop"); + argv[1] = g_strdup("ksplash"); + argv[2] = g_strdup("ksplash"); + argv[3] = g_strdup("upAndRunning(QString)"); + argv[4] = g_strdup("wm started"); + argv[5] = NULL; + + /* tell ksplash through the dcop server command line interface */ + g_spawn_async(NULL, argv, NULL, + G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD | + G_SPAWN_STDERR_TO_DEV_NULL | G_SPAWN_STDOUT_TO_DEV_NULL, + NULL, NULL, NULL, NULL); + g_strfreev(argv); + + /* i'm not sure why we do this, kwin does it, but ksplash doesn't seem to + hear it anyways. perhaps it is for old ksplash. or new ksplash. or + something. oh well. */ + e.xclient.type = ClientMessage; + e.xclient.display = ob_display; + e.xclient.window = RootWindow(ob_display, ob_screen); + e.xclient.message_type = + XInternAtom(ob_display, "_KDE_SPLASH_PROGRESS", False ); + e.xclient.format = 8; + strcpy(e.xclient.data.b, "wm started"); + XSendEvent(ob_display, RootWindow(ob_display, ob_screen), + False, SubstructureNotifyMask, &e ); +} + void screen_startup(gboolean reconfig) { gchar **names = NULL;