X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=surf.c;h=1ad5ace70aa58789a6ab44deb1eae899d85e582d;hb=a69c41ccac3141784140852c9d3935049d188d0f;hp=214b9c7b6384ec33b88cde612260957c43e4c1a8;hpb=fe3bd631d4e163e15ab685c22ad70c67f8b94f83;p=surf.git diff --git a/surf.c b/surf.c index 214b9c7..1ad5ace 100644 --- a/surf.c +++ b/surf.c @@ -577,12 +577,13 @@ loaduri(Client *c, const Arg *arg) { char *u, *rp; const char *uri = (char *)arg->v; Arg a = { .b = FALSE }; + struct stat st; if(strcmp(uri, "") == 0) return; /* In case it's a file path. */ - if(uri[0] == '/') { + if(stat(uri, &st) == 0) { rp = realpath(uri, NULL); u = g_strdup_printf("file://%s", rp); free(rp); @@ -644,9 +645,11 @@ newclient(void) { g_signal_connect(G_OBJECT(c->win), "destroy", G_CALLBACK(destroywin), c); - g_signal_connect(G_OBJECT(c->win), - "key-press-event", - G_CALLBACK(keypress), c); + if(!kioskmode) { + g_signal_connect(G_OBJECT(c->win), + "key-press-event", + G_CALLBACK(keypress), c); + } /* Pane */ c->pane = gtk_vpaned_new(); @@ -748,6 +751,10 @@ newclient(void) { enablespatialbrowsing, NULL); g_object_set(G_OBJECT(settings), "enable-developer-extras", enableinspector, NULL); + g_object_set(G_OBJECT(settings), "enable-default-context-menu", + kioskmode ^ 1, NULL); + g_object_set(G_OBJECT(settings), "default-font-size", + defaultfontsize, NULL); if(enableinspector) { c->inspector = WEBKIT_WEB_INSPECTOR( @@ -790,7 +797,7 @@ newclient(void) { static void newwindow(Client *c, const Arg *arg, gboolean noembed) { guint i = 0; - const char *cmd[11], *uri; + const char *cmd[12], *uri; const Arg a = { .v = (void *)cmd }; char tmp[64]; @@ -804,6 +811,8 @@ newwindow(Client *c, const Arg *arg, gboolean noembed) { } if(!loadimages) cmd[i++] = "-i"; + if(kioskmode) + cmd[i++] = "-k"; if(!enableplugins) cmd[i++] = "-p"; if(!enablescripts) @@ -881,11 +890,12 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d) { if(ev->atom == atoms[AtomFind]) { arg.b = TRUE; find(c, &arg); + return GDK_FILTER_REMOVE; - } - else if(ev->atom == atoms[AtomGo]) { + } else if(ev->atom == atoms[AtomGo]) { arg.v = getatom(c, AtomGo); loaduri(c, &arg); + return GDK_FILTER_REMOVE; } } @@ -1180,7 +1190,7 @@ updatewinid(Client *c) { static void usage(void) { - die("usage: %s [-binpsvx] [-c cookiefile] [-e xid] [-r scriptfile]" + die("usage: %s [-biknpsvx] [-c cookiefile] [-e xid] [-r scriptfile]" " [-t stylefile] [-u useragent] [uri]\n", basename(argv0)); } @@ -1226,6 +1236,9 @@ main(int argc, char *argv[]) { case 'i': loadimages = 0; break; + case 'k': + kioskmode = 1; + break; case 'n': enableinspector = 0; break;