[software development] 普通用户权限运行webkit加载url出现白板 Resolved
Tofloor
poster avatar
Stars
deepin
2025-02-21 11:06
Author

使用gtk和webkit(webkit_web_view_new)写了一个demo,用来加载url页面.代码如下。但是使用普通用户运行无法加载出页面,使用sudo运行却可以。

有什么方法可以在普通用户权限下运行webkit加载出页面吗?是环境变量的问题吗 ?

#include 
#include 
static void load_uri_with_headers(WebKitWebView *webview, const gchar *uri) {
    WebKitURIRequest *request = webkit_uri_request_new(uri);
    webkit_web_view_load_request(webview, request);

    // 释放资源
    g_object_unref(request);
}

int main() {
    gtk_init(NULL, NULL);

    // 创建窗口和 WebView
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    GtkWidget *webview = webkit_web_view_new();
    gtk_container_add(GTK_CONTAINER(window), webview);

    // 加载 URI
    load_uri_with_headers(WEBKIT_WEB_VIEW(webview), "https://www.baidu.com");

    // 显示窗口
    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

运行报错如下:

(test:34299): GLib-DEBUG: 11:57:38.576: posix_spawn avoided (child_setup specified)
(test:34299): GLib-DEBUG: 11:57:38.578: posix_spawn avoided (child_setup specified)

(test:34299): GLib-GObject-WARNING **: 11:57:38.583: g_object_get_is_valid_property: object class 'GtkSettings' has no property named 'gtk-overlay-scrolling'
(test:34299): fcitx-connection-DEBUG: 11:57:38.595: _fcitx_connection_create_ic
(test:34299): fcitx-connection-DEBUG: 11:57:38.615: _fcitx_connection_connection_finished
(process:34306): GLib-GIO-DEBUG: 11:57:38.709: Failed to initialize portal (GNetworkMonitorPortal) for gio-network-monitor: Not using portals
(test:34299): GLib-DEBUG: 11:57:38.734: posix_spawn avoided (child_setup specified)
(process:34323): GLib-GIO-DEBUG: 11:57:38.784: Failed to initialize portal (GNetworkMonitorPortal) for gio-network-monitor: Not using portals
(test:34299): GLib-DEBUG: 11:57:38.896: posix_spawn avoided (child_setup specified)
(process:34331): GLib-GIO-DEBUG: 11:57:38.945: Failed to initialize portal (GNetworkMonitorPortal) for gio-network-monitor: Not using portals
(test:34299): GLib-DEBUG: 11:57:38.993: posix_spawn avoided (child_setup specified)
(process:34341): GLib-GIO-DEBUG: 11:57:39.051: Failed to initialize portal (GNetworkMonitorPortal) for gio-network-monitor: Not using portals
(test:34299): GLib-DEBUG: 11:57:39.170: posix_spawn avoided (child_setup specified)
(process:34353): GLib-GIO-DEBUG: 11:57:39.228: Failed to initialize portal (GNetworkMonitorPortal) for gio-network-monitor: Not using portals

原因:之前使用sudo运行,导致系统缓存文件是root权限,所以使用普通用户执行的时候,无法读取缓存文件。

缓存地址:/home/xxxxx/.local/share/webkitgtk; /home/xxxxx/.cache/相关文件

解决方法: 使用chown改下权限

Reply Favorite View the author
All Replies
把一切操作变成GUI
deepin
Backbone of ecological co-construction group
2025-02-22 01:40
#1

你可以加一段代码来申请提权,让用户输入密码获得权限允许。

Reply View the author