I’m writing a gtk4 application in C. The main window uses WebkitWebView. everything is fine until the method webkit_web_view_load_uri(browser, “https://youtube.com”) is called;
When calling this method, the error “bwrap: setting up uid map: Permission denied” occurs. If I run the application under sudo everything works.
#include <gtk/gtk.h>
#include <webkitgtk-6.0/webkit/webkit.h>
#include <X11/Xlib.h>
#include <glib-2.0/glib.h>
static void
activate (GtkApplication *app,
gpointer user_data)
{
GtkWidget *window;
GtkWidget *box;
WebKitWebView *browser;
window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Заголовок");
GdkDisplay *display = gdk_display_get_default();
GListModel *list = gdk_display_get_monitors( display );
g_object_unref (display);
guint size = g_list_model_get_n_items( list );
int monitor_width = 0, monitor_height = 0, window_x = 0, window_y = 0;
GdkMonitor *biggest_monitor = NULL;
for( guint i=0; i<size; i++ )
{
GdkMonitor *temp_monitor = GDK_MONITOR( g_list_model_get_item( list, i ));
GdkRectangle rect;
gdk_monitor_get_geometry( temp_monitor, &rect );
if( monitor_width < rect.width )
{
monitor_width = rect.width;
monitor_height = rect.height;
window_x = rect.x;
window_y = rect.y;
biggest_monitor = temp_monitor;
}
g_object_unref (temp_monitor);
}
g_object_unref (biggest_monitor);
gtk_window_set_default_size (GTK_WINDOW (window), monitor_width, monitor_height);
box=gtk_box_new(GTK_ORIENTATION_VERTICAL,10);
gtk_window_set_child (GTK_WINDOW (window), box);
browser = WEBKIT_WEB_VIEW( webkit_web_view_new());
gtk_widget_set_size_request(GTK_WIDGET(browser),monitor_width,monitor_height);
gtk_box_append(GTK_BOX(box),GTK_WIDGET(browser));
gtk_window_present (GTK_WINDOW (window));
WebKitSettings *settings= webkit_web_view_get_settings(browser);
webkit_settings_set_enable_media(settings, 1);
webkit_settings_set_enable_webaudio(settings,1);
webkit_settings_set_enable_media_stream(settings,1);
webkit_settings_set_media_playback_allows_inline(settings,1);
webkit_settings_set_enable_media_capabilities(settings,1);
webkit_settings_set_enable_javascript(settings,1);
webkit_settings_set_allow_universal_access_from_file_urls(settings,1);
webkit_settings_set_media_playback_requires_user_gesture(settings,1);
webkit_web_view_load_uri(browser, "https://youtube.com");
gtk_widget_grab_focus(GTK_WIDGET(browser));
`
Why does webkitwebview need root rights?
New contributor
Роман Бубнов is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.