X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=surf.c;h=7ba892e732649968a50f2f7037694048dadfb917;hb=adc650f3999aeb9a781efad10b91b74ae5371f11;hp=16bde9ccf398f4ad489e2cd1032fdaba3e55dac7;hpb=b5096b1c8f0416395758ab033e87b249b09b7a36;p=surf.git diff --git a/surf.c b/surf.c index 16bde9c..7ba892e 100644 --- a/surf.c +++ b/surf.c @@ -112,6 +112,7 @@ static char pagestats[2]; static GTlsDatabase *tlsdb; static int cookiepolicy; static char *stylefile = NULL; +static const char *useragent; static void addaccelgroup(Client *c); static char *buildfile(const char *path); @@ -899,7 +900,6 @@ newview(Client *c, WebKitWebView *rv) WebKitSettings *settings; WebKitUserContentManager *contentmanager; WebKitWebContext *context; - char *ua; /* Webview */ if (rv) { @@ -918,12 +918,17 @@ newview(Client *c, WebKitWebView *rv) "enable-javascript", enablescripts, "enable-plugins", enableplugins, NULL); - if (!(ua = getenv("SURF_USERAGENT"))) - ua = useragent; - webkit_settings_set_user_agent(settings, ua); /* Have a look at http://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html * for more interesting settings */ + if (strcmp(fulluseragent, "")) { + webkit_settings_set_user_agent(settings, fulluseragent); + } else if (surfuseragent) { + webkit_settings_set_user_agent_with_application_details( + settings, "Surf", VERSION); + } + useragent = webkit_settings_get_user_agent(settings); + contentmanager = webkit_user_content_manager_new(); context = webkit_web_context_new_with_website_data_manager( @@ -1047,45 +1052,56 @@ showview(WebKitWebView *v, Client *c) } void -newwindow(Client *c, const Arg *arg, gboolean noembed) +newwindow(Client *c, const Arg *a, int noembed) { - guint i = 0; - const char *cmd[18], *uri; - const Arg a = { .v = (void *)cmd }; + int i = 0; char tmp[64]; + const char *cmd[26], *uri; + const Arg arg = { .v = cmd }; cmd[i++] = argv0; cmd[i++] = "-a"; cmd[i++] = cookiepolicies; - if (!enablescrollbars) - cmd[i++] = "-b"; + cmd[i++] = enablescrollbars ? "-B" : "-b"; + if (cookiefile && g_strcmp0(cookiefile, "")) { + cmd[i++] = "-c"; + cmd[i++] = cookiefile; + } + cmd[i++] = enablecache ? "-D" : "-d"; if (embed && !noembed) { cmd[i++] = "-e"; - snprintf(tmp, LENGTH(tmp), "%u", (int)embed); + snprintf(tmp, LENGTH(tmp), "%lu", embed); cmd[i++] = tmp; } - if (!allowgeolocation) - cmd[i++] = "-g"; - if (!loadimages) - cmd[i++] = "-i"; - if (kioskmode) - cmd[i++] = "-k"; - if (!enableplugins) - cmd[i++] = "-p"; - if (!enablescripts) - cmd[i++] = "-s"; + cmd[i++] = runinfullscreen ? "-F" : "-f"; + cmd[i++] = allowgeolocation ? "-G" : "-g"; + cmd[i++] = loadimages ? "-I" : "-i"; + cmd[i++] = kioskmode ? "-K" : "-k"; + cmd[i++] = enablestyle ? "-M" : "-m"; + cmd[i++] = enableinspector ? "-N" : "-n"; + cmd[i++] = enableplugins ? "-P" : "-p"; + if (scriptfile && g_strcmp0(scriptfile, "")) { + cmd[i++] = "-r"; + cmd[i++] = scriptfile; + } + cmd[i++] = enablescripts ? "-S" : "-s"; + if (stylefile && g_strcmp0(stylefile, "")) { + cmd[i++] = "-t"; + cmd[i++] = stylefile; + } + if (fulluseragent && g_strcmp0(fulluseragent, "")) { + cmd[i++] = "-u"; + cmd[i++] = fulluseragent; + } if (showxid) cmd[i++] = "-x"; - if (enablecache) - cmd[i++] = "-D"; - cmd[i++] = "-c"; - cmd[i++] = cookiefile; + /* do not keep zoom level */ cmd[i++] = "--"; - uri = arg->v ? (char *)arg->v : c->linkhover; - if (uri) + if ((uri = a->v)) cmd[i++] = uri; - cmd[i++] = NULL; - spawn(NULL, &a); + cmd[i] = NULL; + + spawn(c, &arg); } GtkWidget * @@ -1414,29 +1430,27 @@ getpagestats(Client *c) void updatetitle(Client *c) { - char *t; + char *title; if (showindicators) { gettogglestats(c); getpagestats(c); - if (c->linkhover) { - t = g_strdup_printf("%s:%s | %s", togglestats, pagestats, - c->linkhover); - } else if (c->progress != 100) { - t = g_strdup_printf("[%i%%] %s:%s | %s", c->progress, - togglestats, pagestats, - c->title == NULL ? "" : c->title); + if (c->progress != 100) { + title = g_strdup_printf("[%i%%] %s:%s | %s", + c->progress, togglestats, pagestats, + c->targeturi ? c->targeturi : c->title); } else { - t = g_strdup_printf("%s:%s | %s", togglestats, pagestats, - c->title == NULL ? "" : c->title); + title = g_strdup_printf("%s:%s | %s", + togglestats, pagestats, + c->targeturi ? c->targeturi : c->title); } - gtk_window_set_title(GTK_WINDOW(c->win), t); - g_free(t); + gtk_window_set_title(GTK_WINDOW(c->win), title); + g_free(title); } else { - gtk_window_set_title(GTK_WINDOW(c->win), (c->title == NULL) ? - "" : c->title); + gtk_window_set_title(GTK_WINDOW(c->win), c->title ? + c->title : ""); } }