aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2019-05-23 14:58:08 +0200
committerGerd Hoffmann <kraxel@redhat.com>2019-05-23 14:58:08 +0200
commit30b6cf449fdb84f0bc89d4db681164735c38767a (patch)
tree36164c43139573d8be80f26e20cfcbdbf56e907e
parent2257b575c17b16ce4fd0f92ced035d101beb0197 (diff)
downloadgterm-30b6cf449fdb84f0bc89d4db681164735c38767a.tar.gz
add -bc option
-rw-r--r--gterm.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/gterm.c b/gterm.c
index 0d3e578..7246293 100644
--- a/gterm.c
+++ b/gterm.c
@@ -22,6 +22,7 @@
#define GTERM_CFG_KEY_FONT_SIZE "faceSize"
#define GTERM_CFG_KEY_GEOMETRY "geometry"
#define GTERM_CFG_KEY_TITLE "title"
+#define GTERM_CFG_KEY_CURSOR_BLINK "cursorBlink"
typedef struct gterm_opt {
char *opt;
@@ -29,12 +30,20 @@ typedef struct gterm_opt {
bool is_bool;
} gterm_opt;
+typedef enum gterm_bool {
+ GTERM_BOOL_UNSET = -1,
+ GTERM_BOOL_FALSE = 0,
+ GTERM_BOOL_TRUE = 1,
+} gterm_bool;
+
static const gterm_opt gterm_opts[] = {
{ .opt = "fa", .key = GTERM_CFG_KEY_FONT_FACE },
{ .opt = "fs", .key = GTERM_CFG_KEY_FONT_SIZE },
{ .opt = "geometry", .key = GTERM_CFG_KEY_GEOMETRY },
{ .opt = "T", .key = GTERM_CFG_KEY_TITLE },
{ .opt = "title", .key = GTERM_CFG_KEY_TITLE },
+
+ { .opt = "bc", .key = GTERM_CFG_KEY_CURSOR_BLINK, .is_bool = true },
};
static const gterm_opt *gterm_opt_find(char *arg)
@@ -77,6 +86,25 @@ static char *gterm_cfg_get(GKeyFile *cfg, char *key)
return NULL;
}
+static gterm_bool gterm_cfg_get_bool(GKeyFile *cfg, char *key)
+{
+ char *value;
+
+ value = gterm_cfg_get(cfg, key);
+ if (!value)
+ return GTERM_BOOL_UNSET;
+
+ if (strcasecmp(value, "true") == 0 ||
+ strcasecmp(value, "on") == 0)
+ return GTERM_BOOL_TRUE;
+
+ if (strcasecmp(value, "false") == 0 ||
+ strcasecmp(value, "off") == 0)
+ return GTERM_BOOL_FALSE;
+
+ return GTERM_BOOL_UNSET;
+}
+
/* ------------------------------------------------------------------------ */
typedef struct gterm {
@@ -158,6 +186,7 @@ static void gterm_vte_configure(gterm *gt)
char *fontname;
char *fontsize;
char *str;
+ gterm_bool b;
unsigned int cols, rows;
fontname = gterm_cfg_get(gt->cfg, GTERM_CFG_KEY_FONT_FACE);
@@ -182,6 +211,15 @@ static void gterm_vte_configure(gterm *gt)
if (str && sscanf(str, "%dx%d", &cols, &rows) == 2) {
vte_terminal_set_size(VTE_TERMINAL(gt->terminal), cols, rows);
}
+
+ b = gterm_cfg_get_bool(gt->cfg, GTERM_CFG_KEY_CURSOR_BLINK);
+ if (b == GTERM_BOOL_TRUE) {
+ vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(gt->terminal),
+ VTE_CURSOR_BLINK_ON);
+ } else if (b == GTERM_BOOL_FALSE) {
+ vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(gt->terminal),
+ VTE_CURSOR_BLINK_OFF);
+ }
}
static void gterm_window_destroy(GtkWidget *widget, gpointer data)