// BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser // Copyright © 2019 Haelwenn (lanodan) Monnier // SPDX-License-Identifier: BSD-3-Clause #include #include static gboolean WebViewCb_close(WebKitWebView *_webView, GtkWidget *window) { gtk_widget_destroy(window); return TRUE; } static gboolean WebViewCb_notify__uri(WebKitWebView *webView, GtkWidget *location) { const gchar *location_uri; location_uri = webkit_web_view_get_uri(WEBKIT_WEB_VIEW(webView)); gtk_entry_set_text(GTK_ENTRY(location), location_uri); return TRUE; } int main(int argc, char *argv[]) { char *target_url = "about:blank"; GtkWidget *main_window, *box, *location; WebKitWebView *webView; if(argv[1]) target_url = argv[1]; gtk_init(0, 0); main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); location = gtk_entry_new(); box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); gtk_container_add(GTK_CONTAINER(main_window), box); gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(location), FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(box), GTK_WIDGET(webView), TRUE, TRUE, 0); gtk_entry_set_text(GTK_ENTRY(location), target_url); g_signal_connect(main_window, "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(webView, "close", G_CALLBACK(WebViewCb_close), main_window); g_signal_connect(webView, "notify::uri", G_CALLBACK(WebViewCb_notify__uri), location); WebKitSettings *settings = webkit_web_view_get_settings(webView); webkit_settings_set_javascript_can_access_clipboard(settings, FALSE); webkit_settings_set_enable_developer_extras(settings, TRUE); webkit_settings_set_default_charset(settings, "utf-8"); webkit_web_view_set_settings(webView, settings); webkit_web_view_load_uri(webView, target_url); gtk_widget_grab_focus(GTK_WIDGET(webView)); gtk_widget_show_all(main_window); gtk_main(); return 0; }