diff options
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | docs/TODO | 2 | ||||
-rw-r--r-- | examples/configs/sampleconfig-dev | 5 | ||||
-rw-r--r-- | uzbl.c | 60 | ||||
-rw-r--r-- | uzbl.h | 7 |
5 files changed, 34 insertions, 42 deletions
@@ -77,7 +77,7 @@ TODO ### VARIABLE REPLACEMENT Some of the variables are interpreted: -* title bar: variable replacement (not yet actually) +* title bar: variable replacement (long and short version, depending if statusbar is visible or not) * user agent: variable replacement * statusbar: variable replacement + pango markup @@ -14,6 +14,7 @@ More or less in order of importance/urgency * 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 @@ -34,7 +35,6 @@ More or less in order of importance/urgency * 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? diff --git a/examples/configs/sampleconfig-dev b/examples/configs/sampleconfig-dev index 7653407..71fc46e 100644 --- a/examples/configs/sampleconfig-dev +++ b/examples/configs/sampleconfig-dev @@ -25,8 +25,11 @@ set shell_cmd = sh -c %s '' set show_status = 1 # you can optionally use this setting to override the background color of the statusbar from your GTK theme. set status_background = #303030 -set status_format = <span font_family="monospace"><span background="khaki" foreground="black">MODE</span> [<span weight="bold" foreground="red">KEYCMD</span>] <span foreground="#606060"> LOAD_PROGRESSBAR </span><span foreground="#99FF66">URI</span> <span foreground="khaki">NAME</span> <span foreground="orange">MSG</span></span> +set status_format = <span font_family="monospace"><span background="khaki" foreground="black">MODE</span> [<span weight="bold" foreground="red">KEYCMD</span>] <span foreground="#606060"> LOAD_PROGRESSBAR </span><span foreground="#99FF66">URI</span> <span foreground="khaki">NAME</span> <span foreground="orange">MSG</span><span foreground="#606060">SELECTED_URI</span></span> set status_top = 0 +# define how your titlebar should look like. (short = statusbar is also shown, long = show everything you must see if statusbar is off) +set title_format_short = TITLE - Uzbl browser <NAME> +set title_format_long = KEYCMD MODE TITLE - Uzbl browser <NAME> > SELECTED_URI set modkey = Mod1 # reset to command mode when new page is loaded @@ -69,6 +69,8 @@ const struct { { "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 }, @@ -301,7 +303,7 @@ link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpoin (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); @@ -632,6 +634,11 @@ expand_template(const char *template) { 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, @@ -795,7 +802,9 @@ get_var_value(gchar *name) { 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); } @@ -856,6 +865,8 @@ set_var_value(gchar *name, gchar *val) { 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) @@ -1249,42 +1260,11 @@ init_socket(gchar *dir) { /* return dir or, on error, free dir and return NULL * 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); @@ -1296,11 +1276,8 @@ update_title (void) { } 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 @@ -1591,6 +1568,11 @@ settings_init () { } 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); } @@ -12,12 +12,16 @@ */ #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, @@ -33,6 +37,7 @@ const struct { {"NAME", SYM_NAME}, {"URI", SYM_URI}, {"TITLE", SYM_TITLE}, + {"SELECTED_URI", SYM_SELECTED_URI}, {"KEYCMD", SYM_KEYCMD}, {"MODE", SYM_MODE}, {"MSG", SYM_MSG}, @@ -124,6 +129,8 @@ typedef struct { 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; |