"Config file (this is pretty much equivalent to uzbl < FILE )", "FILE" },
{ "socket", 's', 0, G_OPTION_ARG_INT, &uzbl.state.socket_id,
"Socket ID", "SOCKET" },
+ { "version", 'V', 0, G_OPTION_ARG_NONE, &uzbl.behave.print_version,
+ "Print the version and exit", NULL },
{ NULL, 0, 0, 0, NULL, NULL, NULL }
};
{ "history_handler", PTR(uzbl.behave.history_handler, STR, 1, NULL)},
{ "download_handler", PTR(uzbl.behave.download_handler, STR, 1, NULL)},
{ "cookie_handler", PTR(uzbl.behave.cookie_handler, STR, 1, cmd_cookie_handler)},
+ { "new_window", PTR(uzbl.behave.new_window, STR, 1, cmd_new_window)},
{ "fifo_dir", PTR(uzbl.behave.fifo_dir, STR, 1, cmd_fifo_dir)},
{ "socket_dir", PTR(uzbl.behave.socket_dir, STR, 1, cmd_socket_dir)},
{ "http_debug", PTR(uzbl.behave.http_debug, INT, 1, cmd_http_debug)},
const gchar* uri = webkit_network_request_get_uri (request);
if (uzbl.state.verbose)
printf("New window requested -> %s \n", uri);
- new_window_load_uri(uri);
- return (FALSE);
+ webkit_web_policy_decision_use(policy_decision);
+ return TRUE;
}
static gboolean
static void
new_window_load_uri (const gchar * uri) {
+ if (uzbl.behave.new_window) {
+ GString *s = g_string_new ("");
+ g_string_printf(s, "'%s'", uri);
+ run_handler(uzbl.behave.new_window, s->str);
+ return;
+ }
GString* to_execute = g_string_new ("");
g_string_append_printf (to_execute, "%s --uri '%s'", uzbl.state.executable_path, uri);
int i;
} else {
g_printerr ("Icon \"%s\" not found. ignoring.\n", uzbl.gui.icon);
}
- g_free (uzbl.gui.icon);
}
static void
}
static void
+cmd_new_window() {
+ gchar **split = g_strsplit(uzbl.behave.new_window, " ", 2);
+ /* pitfall: doesn't handle chain actions; must the sync_ action manually */
+ if ((g_strcmp0(split[0], "sh") == 0) ||
+ (g_strcmp0(split[0], "spawn") == 0)) {
+ g_free (uzbl.behave.new_window);
+ uzbl.behave.new_window =
+ g_strdup_printf("%s %s", split[0], split[1]);
+ }
+ g_strfreev (split);
+}
+
+static void
cmd_fifo_dir() {
uzbl.behave.fifo_dir = init_fifo(uzbl.behave.fifo_dir);
}
if (b->status_background) {
GdkColor color;
gdk_color_parse (b->status_background, &color);
- //labels and hboxes do not draw their own background. applying this on the window/vbox is ok as the statusbar is the only affected widget. (if not, we could also use GtkEventBox)
- if (uzbl.gui.main_window)
- gtk_widget_modify_bg (uzbl.gui.main_window, GTK_STATE_NORMAL, &color);
- else if (uzbl.gui.plug)
- gtk_widget_modify_bg ((GtkWidget * ) uzbl.gui.plug, GTK_STATE_NORMAL, &color);
+ //labels and hboxes do not draw their own background. applying this on the vbox/main_window is ok as the statusbar is the only affected widget. (if not, we could also use GtkEventBox)
+ if (uzbl.gui.main_window)
+ gtk_widget_modify_bg (uzbl.gui.main_window, GTK_STATE_NORMAL, &color);
+ else if (uzbl.gui.plug)
+ gtk_widget_modify_bg (GTK_WIDGET(uzbl.gui.plug), GTK_STATE_NORMAL, &color);
}
} else {
if (b->title_format_long) {
uzbl.state.selected_url = NULL;
uzbl.state.searchtx = NULL;
- GOptionContext* context = g_option_context_new ("- some stuff here maybe someday");
+ GOptionContext* context = g_option_context_new ("[ uri ] - load a uri by default");
g_option_context_add_main_entries (context, entries, NULL);
g_option_context_add_group (context, gtk_get_option_group (TRUE));
g_option_context_parse (context, &argc, &argv, NULL);
g_option_context_free(context);
+ if (uzbl.behave.print_version) {
+ printf("Commit: %s\n", COMMIT);
+ exit(0);
+ }
+
gchar *uri_override = (uzbl.state.uri ? g_strdup(uzbl.state.uri) : NULL);
+ if (argc > 1 && !uzbl.state.uri)
+ uri_override = g_strdup(argv[1]);
gboolean verbose_override = uzbl.state.verbose;
/* initialize hash table */