如果 运行 通过 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.
我尝试编写 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.