* implement getting feedback from socket
* scrolling: make page up and page down configurable.
* show % of location in statusbar/title if page doesn't fit entirely on view.
+* conditionals in format strings: eg if(SELECTED_URI) { "-> SELECTED_URI" } or another smart way to achieve the same.
* make default window size configurable, and optional
* on uzbl.org commits overview: add date+time and repository
* how to handle different content types? (text-plain, image/png, application/pdf,... maybe a map of content-type to uzbl/command
* improve DCOMMIT macro. what if WC is dirty? what if user downloaded tarball without .git?
* DARCH is not correct (should be at runtime)
* keybinds to open "next" or "previous" by looking for next/prev links and/or looking for numbers in the uri we can inc/decrement
-* variable replacing for title bar in "statusbar_visible" and statusbar_invisible states
* settings iterating "state generator" so we can "open in new window" again.
* handler for (broken) ssl certs.
* handlers for mailto: and maybe other thingies?
{ "status_top", (void *)&uzbl.behave.status_top },
{ "status_format", (void *)&uzbl.behave.status_format },
{ "status_background", (void *)&uzbl.behave.status_background },
+ { "title_format_long", (void *)&uzbl.behave.title_format_long },
+ { "title_format_short", (void *)&uzbl.behave.title_format_short },
{ "insert_mode", (void *)&uzbl.behave.insert_mode },
{ "always_insert_mode", (void *)&uzbl.behave.always_insert_mode },
{ "reset_command_mode", (void *)&uzbl.behave.reset_command_mode },
(void) page;
(void) title;
(void) data;
- //ADD HOVER URL TO WINDOW TITLE
+ //Set selected_url state variable
uzbl.state.selected_url[0] = '\0';
if (link) {
strcpy (uzbl.state.selected_url, link);
uzbl.gui.main_title?
g_markup_printf_escaped("%s", uzbl.gui.main_title):"");
break;
+ case SYM_SELECTED_URI:
+ g_string_append(ret,
+ uzbl.state.selected_url?
+ g_markup_printf_escaped("%s", uzbl.state.selected_url):"");
+ break;
case SYM_NAME:
buf = itos(uzbl.xwin);
g_string_append(ret,
if( (p = g_hash_table_lookup(uzbl.comm.proto_var, name)) ) {
if(var_is("status_format", name)
- || var_is("useragent", name)) {
+ || var_is("useragent", name)
+ || var_is("title_format_short", name)
+ || var_is("title_format_long", name)) {
printf("VAR: %s VALUE: %s\n", name, (char *)*p);
} else printf("VAR: %s VALUE: %d\n", name, (int)*p);
}
if(var_is("status_message", name)
|| var_is("status_background", name)
|| var_is("status_format", name)
+ || var_is("title_format_long", name)
+ || var_is("title_format_short", name)
|| var_is("load_finish_handler", name)
|| var_is("history_handler", name)
|| var_is("download_handler", name)
static void
update_title (void) {
- GString* string_long = g_string_new ("");
- GString* string_short = g_string_new ("");
- char* iname = NULL;
- gchar *statln;
- int iname_len;
- State *s = &uzbl.state;
Behaviour *b = &uzbl.behave;
- if(s->instance_name) {
- iname_len = strlen(s->instance_name)+4;
- iname = malloc(iname_len);
- snprintf(iname, iname_len, "<%s> ", s->instance_name);
-
- g_string_prepend(string_long, iname);
- g_string_prepend(string_short, iname);
- free(iname);
- }
-
- g_string_append_printf(string_long, "%s ", s->keycmd->str);
- if (!b->always_insert_mode)
- g_string_append (string_long, (b->insert_mode ? "[I] " : "[C] "));
- if (uzbl.gui.main_title) {
- g_string_append (string_long, uzbl.gui.main_title);
- g_string_append (string_short, uzbl.gui.main_title);
- }
- g_string_append (string_long, " - Uzbl browser");
- g_string_append (string_short, " - Uzbl browser");
- if (s->selected_url[0]!=0) {
- g_string_append_printf (string_long, " -> (%s)", s->selected_url);
- }
-
- gchar* title_long = g_string_free (string_long, FALSE);
- gchar* title_short = g_string_free (string_short, FALSE);
-
if (b->show_status) {
- gtk_window_set_title (GTK_WINDOW(uzbl.gui.main_window), title_short);
+ gchar *statln;
+ gtk_window_set_title (GTK_WINDOW(uzbl.gui.main_window), expand_template(b->title_format_short));
// TODO: we should probably not do this every time we want to update the title..?
statln = expand_template(uzbl.behave.status_format);
gtk_label_set_markup(GTK_LABEL(uzbl.gui.mainbar_label), statln);
}
g_free(statln);
} else {
- gtk_window_set_title (GTK_WINDOW(uzbl.gui.main_window), title_long);
+ gtk_window_set_title (GTK_WINDOW(uzbl.gui.main_window), expand_template(b->title_format_long));
}
-
- g_free (title_long);
- g_free (title_short);
}
static gboolean
}
if (!uzbl.behave.status_format)
uzbl.behave.status_format = g_strdup(STATUS_DEFAULT);
+ if (!uzbl.behave.title_format_long)
+ uzbl.behave.title_format_long = g_strdup(TITLE_LONG_DEFAULT);
+ if (!uzbl.behave.title_format_short)
+ uzbl.behave.title_format_short = g_strdup(TITLE_SHORT_DEFAULT);
+
g_signal_connect(n->soup_session, "request-queued", G_CALLBACK(handle_cookies), NULL);
}
*/
#define STATUS_DEFAULT "<span background=\"darkblue\" foreground=\"white\"> MODE </span> <span background=\"red\" foreground=\"white\">KEYCMD</span> (LOAD_PROGRESS%) <b>TITLE</b> - Uzbl browser"
+#define TITLE_LONG_DEFAULT "KEYCMD MODE TITLE - Uzbl browser <NAME> > SELECTED_URI"
+#define TITLE_SHORT_DEFAULT "TITLE - Uzbl browser <NAME>"
+
enum {
/* statusbar symbols */
SYM_TITLE, SYM_URI, SYM_NAME,
SYM_LOADPRGS, SYM_LOADPRGSBAR,
SYM_KEYCMD, SYM_MODE, SYM_MSG,
+ SYM_SELECTED_URI,
/* useragent symbols */
SYM_WK_MAJ, SYM_WK_MIN, SYM_WK_MIC,
SYM_SYSNAME, SYM_NODENAME,
{"NAME", SYM_NAME},
{"URI", SYM_URI},
{"TITLE", SYM_TITLE},
+ {"SELECTED_URI", SYM_SELECTED_URI},
{"KEYCMD", SYM_KEYCMD},
{"MODE", SYM_MODE},
{"MSG", SYM_MSG},
typedef struct {
gchar* load_finish_handler;
gchar* status_format;
+ gchar* title_format_short;
+ gchar* title_format_long;
gchar* status_background;
gchar* history_handler;
gchar* fifo_dir;