diff options
-rw-r--r-- | settings.c | 2 | ||||
-rw-r--r-- | xxxterm.1 | 8 | ||||
-rw-r--r-- | xxxterm.c | 30 | ||||
-rw-r--r-- | xxxterm.conf | 1 | ||||
-rw-r--r-- | xxxterm.h | 1 |
5 files changed, 33 insertions, 9 deletions
diff --git a/settings.c b/settings.c index 6cd208e..9ff0137 100644 --- a/settings.c +++ b/settings.c @@ -51,6 +51,7 @@ gfloat default_zoom_level = 1.0; char default_script[PATH_MAX]; int window_height = 768; int window_width = 1024; +int window_maximize = 0; int icon_size = 2; /* 1 = smallest, 2+ = bigger */ int refresh_interval = 10; /* download refresh interval */ int enable_plugin_whitelist = 0; @@ -302,6 +303,7 @@ struct settings rs[] = { { "url_regex", XT_S_STR, 0, NULL, &url_regex, NULL }, { "window_height", XT_S_INT, 0, &window_height, NULL, NULL }, { "window_width", XT_S_INT, 0, &window_width, NULL, NULL }, + { "window_maximize", XT_S_INT, 0, &window_maximize, NULL, NULL }, { "work_dir", XT_S_STR, 0, NULL, NULL,&s_work_dir }, { "xterm_workaround", XT_S_INT, 0, &xterm_workaround, NULL, NULL }, { "user_agent_roundrobin", XT_S_INT, 0, &user_agent_roundrobin, NULL, NULL, NULL, set_ua_roundrobin }, diff --git a/xxxterm.1 b/xxxterm.1 index 04d3ea2..9133be0 100644 --- a/xxxterm.1 +++ b/xxxterm.1 @@ -674,14 +674,16 @@ go to the percent of the page .It Cm zz go to 50% of the page -.It Cm [0-9]*gU +.It Cm [0-9]*gu go .Cm arg levels up. If .Cm arg is missing, 1 is assumed. Going a -level up means going to a uri obtained from the current one by removing +level up means going to a URI obtained from the current one by removing the last slash ('/') character and everything that follows it +.It Cm gU +go to the root level, i.e. going up as many levels as possible. .It Cm gh open the home page in the current tab .It Cm m[a-zA-Z0-9] @@ -1220,6 +1222,8 @@ If enabled, switches between specified user-agents for each new request. Set the default height of the browser window. .It Cm window_width Set the default width of the browser window. +.It Cm window_maximize +Maximize the browser window at startup. .It Cm work_dir Set the work directory where all .Nm diff --git a/xxxterm.c b/xxxterm.c index 61254e8..2efff3d 100644 --- a/xxxterm.c +++ b/xxxterm.c @@ -148,6 +148,8 @@ TAILQ_HEAD(command_list, command_entry); #define XT_MARK_SET (0) #define XT_MARK_GOTO (1) +#define XT_GO_UP_ROOT (999) + #define XT_TAB_LAST (-4) #define XT_TAB_FIRST (-3) #define XT_TAB_PREV (-2) @@ -588,6 +590,9 @@ buffers_make_list(void) void show_buffers(struct tab *t) { + if (gtk_widget_get_visible(GTK_WIDGET(t->buffers))) + return; + buffers_make_list(); gtk_widget_show(t->buffers); gtk_widget_grab_focus(GTK_WIDGET(t->buffers)); @@ -4763,17 +4768,21 @@ qmark(struct tab *t, struct karg *arg) int go_up(struct tab *t, struct karg *args) { - int levels; + int levels; char *uri; char *tmp; + char *p; - levels = atoi(args->s); - if (levels == 0) + if (args->i == XT_GO_UP_ROOT) + levels = XT_GO_UP_ROOT; + else if ((levels = atoi(args->s)) == 0) levels = 1; - uri = g_strdup(webkit_web_view_get_uri(t->wv)); + uri = g_strdup(get_uri(t)); + if ((tmp = strstr(uri, XT_PROTO_DELIM)) == NULL) return (1); + tmp += strlen(XT_PROTO_DELIM); /* if an uri starts with a slash, leave it alone (for file:///) */ @@ -4781,8 +4790,6 @@ go_up(struct tab *t, struct karg *args) tmp++; while (levels--) { - char *p; - p = strrchr(tmp, '/'); if (p != NULL) *p = '\0'; @@ -4858,6 +4865,7 @@ struct buffercmd { regex_t cregex; } buffercmds[] = { { "^[0-9]*gu$", XT_PRE_MAYBE, "gu", go_up, 0 }, + { "^gU$", XT_PRE_NO, "gU", go_up, XT_GO_UP_ROOT }, { "^gg$", XT_PRE_NO, "gg", move, XT_MOVE_TOP }, { "^gG$", XT_PRE_NO, "gG", move, XT_MOVE_BOTTOM }, { "^[0-9]+%$", XT_PRE_YES, "%", move, XT_MOVE_PERCENT }, @@ -4927,6 +4935,11 @@ buffercmd_addkey(struct tab *t, guint keyval) int i, c, match ; char s[XT_BUFCMD_SZ]; + if (gtk_widget_get_visible(GTK_WIDGET(t->buffers))) { + buffercmd_abort(t); + return (XT_CB_PASSTHROUGH); + } + if (keyval == GDK_Escape) { buffercmd_abort(t); return (XT_CB_HANDLED); @@ -5924,7 +5937,10 @@ create_window(const gchar *name) GtkWidget *w; w = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_default_size(GTK_WINDOW(w), window_width, window_height); + if (window_maximize) + gtk_window_maximize(GTK_WINDOW(w)); + else + gtk_window_set_default_size(GTK_WINDOW(w), window_width, window_height); gtk_widget_set_name(w, name); gtk_window_set_wmclass(GTK_WINDOW(w), name, "XXXTerm"); diff --git a/xxxterm.conf b/xxxterm.conf index 635a885..ee90756 100644 --- a/xxxterm.conf +++ b/xxxterm.conf @@ -58,6 +58,7 @@ # icon_size = 2 # window_width = 1024 # window_height = 768 +# window_maximize = 0 # # user_agent can bet set to just about anything diff --git a/xxxterm.h b/xxxterm.h index 5e9f0ec..ae03f5e 100644 --- a/xxxterm.h +++ b/xxxterm.h @@ -503,6 +503,7 @@ extern gfloat default_zoom_level; extern char default_script[PATH_MAX]; extern int window_height; extern int window_width; +extern int window_maximize; extern int icon_size; extern int refresh_interval; extern int enable_plugin_whitelist; |