aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--README2
-rw-r--r--docs/TODO2
-rw-r--r--examples/configs/sampleconfig-dev5
-rw-r--r--uzbl.c60
-rw-r--r--uzbl.h7
5 files changed, 34 insertions, 42 deletions
diff --git a/README b/README
index bc5baca..bdc7fa1 100644
--- a/README
+++ b/README
@@ -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
diff --git a/docs/TODO b/docs/TODO
index 6258432..d501643 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -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
diff --git a/uzbl.c b/uzbl.c
index aa5e440..c2a6bd9 100644
--- a/uzbl.c
+++ b/uzbl.c
@@ -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);
}
diff --git a/uzbl.h b/uzbl.h
index 506f1d3..368ad46 100644
--- a/uzbl.h
+++ b/uzbl.h
@@ -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;