如果 运行 通过 startx 在 WebKit GTK2+ 小部件中获取 X 光标

Getting X Cursor in WebKit GTK2+ widget if run by startx

我尝试编写 kiosk 网络浏览器,运行 它会在系统启动后自动运行。它是简单的 GTK2+ 应用程序,使用 WebKit 作为浏览器。
它从 ~/.xinitrc:

开始
exec /home/kiosk-user/bin/browser 'http://localhost/'

源代码browser.c:

#include <stdio.h>
#include <signal.h>
#include <stdio.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <gdk/gdkkeysyms.h>
#include <webkit/webkit.h>

int main( int argc, char* argv[] ) {
    WebKitWebView* web_view;
    GtkWidget* window;
    GtkWidget* scrollable_content;

    if( argc < 2 ) {
        fprintf( stderr, "The first argument have to be URI" );
        return 1;
    }
    gchar* uri = argv[1];

    gtk_init( &argc, &argv );

    gint 
        screen_width = gdk_screen_width(),
        screen_height = gdk_screen_height();

    window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
    scrollable_content = gtk_scrolled_window_new( NULL, NULL );

    gtk_window_set_default_size( GTK_WINDOW( window ), screen_width, screen_height );

    web_view = WEBKIT_WEB_VIEW( webkit_web_view_new() );

    gtk_container_add( GTK_CONTAINER( scrollable_content ), GTK_WIDGET( web_view ) );
    gtk_container_add( GTK_CONTAINER( window ), scrollable_content );

    GdkCursor* cursor = gdk_cursor_new( GDK_ARROW );
    gdk_window_set_cursor( window->window, cursor );

    webkit_web_view_load_uri( web_view, uri );

    gtk_widget_show_all( window );
    gtk_main();

    return 0;
}

问题是光标,它在应用程序启动时不显示,直到我点击某个地方。当它出现时,它在文本输入、链接等方面看起来不错,但是当我从那种元素移动时,它会将外观更改为 GDK_X_CURSOR(screenshot) 而不是默认箭头。 运行 它在桌面管理器中正确显示光标。 在网页上的光标是默认的。

测试:虚拟机 => Debian GNU/Linux 8.1 (jessie)

提前感谢您的帮助,如果我的英语不够好,请见谅。

您可以找到解决方案 here。只需将 xsetroot -cursor_name left_ptr 放入您的 ~/.xinitrc.