Add tmux capabilities to st.info
[st.git] / config.def.h
index 5e7caaf..7f465d1 100644 (file)
@@ -5,10 +5,20 @@
  *
  * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
  */
-static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
+static char font[] = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
 static int borderpx = 2;
+
+/*
+ * What program is execed by st depends of these precedence rules:
+ * 1: program passed with -e
+ * 2: utmp option
+ * 3: SHELL environment variable
+ * 4: value of shell in /etc/passwd
+ * 5: value of shell in config.h
+ */
 static char shell[] = "/bin/sh";
 static char *utmp = NULL;
+static char stty_args[] = "stty raw pass8 nl -echo -iexten -cstopb 38400";
 
 /* identification sequence returned in DA and DECID */
 static char vtiden[] = "\033[?6c";
@@ -29,7 +39,7 @@ static unsigned int doubleclicktimeout = 300;
 static unsigned int tripleclicktimeout = 600;
 
 /* alt screens */
-static bool allowaltscreen = true;
+static int allowaltscreen = 1;
 
 /* frames per second st should at maximum draw to the screen */
 static unsigned int xfps = 120;
@@ -52,12 +62,26 @@ static unsigned int cursorthickness = 2;
  */
 static int bellvolume = 0;
 
-/* TERM value */
+/* default TERM value */
 static char termname[] = "st-256color";
 
+/*
+ * spaces per tab
+ *
+ * When you are changing this value, don't forget to adapt the »it« value in
+ * the st.info and appropriately install the st.info in the environment where
+ * you use this st version.
+ *
+ *     it#$tabspaces,
+ *
+ * Secondly make sure your kernel is not expanding tabs. When running `stty
+ * -a` »tab0« should appear. You can tell the terminal to not expand tabs by
+ *  running following command:
+ *
+ *     stty tabs
+ */
 static unsigned int tabspaces = 8;
 
-
 /* Terminal colors (16 first used in escape sequence) */
 static const char *colorname[] = {
        /* 8 normal colors */
@@ -84,28 +108,46 @@ static const char *colorname[] = {
 
        /* more colors can be added after 255 to use with DefaultXX */
        "#cccccc",
+       "#555555",
 };
 
 
 /*
  * Default colors (colorname index)
- * foreground, background, cursor
+ * foreground, background, cursor, reverse cursor
  */
 static unsigned int defaultfg = 7;
 static unsigned int defaultbg = 0;
 static unsigned int defaultcs = 256;
+static unsigned int defaultrcs = 257;
+
+/*
+ * Default shape of cursor
+ * 2: Block ("█")
+ * 4: Underline ("_")
+ * 6: Bar ("|")
+ * 7: Snowman ("☃")
+ */
+static unsigned int cursorshape = 2;
 
 /*
- * Colors used, when the specific fg == defaultfg. So in reverse mode this
- * will reverse too. Another logic would only make the simple feature too
- * complex.
+ * Default colour and shape of the mouse cursor
  */
-static unsigned int defaultitalic = 11;
-static unsigned int defaultunderline = 7;
+static unsigned int mouseshape = XC_xterm;
+static unsigned int mousefg = 7;
+static unsigned int mousebg = 0;
 
-/* Internal mouse shortcuts. */
-/* Beware that overloading Button1 will disable the selection. */
-static Mousekey mshortcuts[] = {
+/*
+ * Color used to display font attributes when fontconfig selected a font which
+ * doesn't match the ones requested.
+ */
+static unsigned int defaultattr = 11;
+
+/*
+ * Internal mouse shortcuts.
+ * Beware that overloading Button1 will disable the selection.
+ */
+static MouseShortcut mshortcuts[] = {
        /* button               mask            string */
        { Button4,              XK_ANY_MOD,     "\031" },
        { Button5,              XK_ANY_MOD,     "\005" },
@@ -116,17 +158,19 @@ static Mousekey mshortcuts[] = {
 
 static Shortcut shortcuts[] = {
        /* mask                 keysym          function        argument */
+       { XK_ANY_MOD,           XK_Break,       sendbreak,      {.i =  0} },
        { ControlMask,          XK_Print,       toggleprinter,  {.i =  0} },
        { ShiftMask,            XK_Print,       printscreen,    {.i =  0} },
        { XK_ANY_MOD,           XK_Print,       printsel,       {.i =  0} },
-       { MODKEY|ShiftMask,     XK_Prior,       xzoom,          {.i = +1} },
-       { MODKEY|ShiftMask,     XK_Next,        xzoom,          {.i = -1} },
-       { MODKEY|ShiftMask,     XK_Home,        xzoomreset,     {.i =  0} },
+       { MODKEY|ShiftMask,     XK_Prior,       xzoom,          {.f = +1} },
+       { MODKEY|ShiftMask,     XK_Next,        xzoom,          {.f = -1} },
+       { MODKEY|ShiftMask,     XK_Home,        xzoomreset,     {.f =  0} },
        { ShiftMask,            XK_Insert,      selpaste,       {.i =  0} },
        { MODKEY|ShiftMask,     XK_Insert,      clippaste,      {.i =  0} },
        { MODKEY|ShiftMask,     XK_C,           clipcopy,       {.i =  0} },
        { MODKEY|ShiftMask,     XK_V,           clippaste,      {.i =  0} },
        { MODKEY,               XK_Num_Lock,    numlock,        {.i =  0} },
+       { MODKEY,               XK_Control_L,   iso14755,       {.i =  0} },
 };
 
 /*
@@ -166,11 +210,17 @@ static KeySym mappedkeys[] = { -1 };
  */
 static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
 
-/* Override mouse-select while mask is active (when MODE_MOUSE is set).
+/*
+ * Override mouse-select while mask is active (when MODE_MOUSE is set).
  * Note that if you want to use ShiftMask with selmasks, set this to an other
- * modifier, set to 0 to not use it. */
+ * modifier, set to 0 to not use it.
+ */
 static uint forceselmod = ShiftMask;
 
+/*
+ * This is the huge key array which defines all compatibility to the Linux
+ * world. Please decide about changes wisely.
+ */
 static Key key[] = {
        /* keysym           mask            string      appkey appcursor crlf */
        { XK_KP_Home,       ShiftMask,      "\033[2J",       0,   -1,    0},
@@ -267,6 +317,7 @@ static Key key[] = {
        { XK_Delete,        XK_ANY_MOD,     "\033[P",       -1,    0,    0},
        { XK_Delete,        XK_ANY_MOD,     "\033[3~",      +1,    0,    0},
        { XK_BackSpace,     XK_NO_MOD,      "\177",          0,    0,    0},
+       { XK_BackSpace,     Mod1Mask,       "\033\177",      0,    0,    0},
        { XK_Home,          ShiftMask,      "\033[2J",       0,   -1,    0},
        { XK_Home,          ShiftMask,      "\033[1;2H",     0,   +1,    0},
        { XK_Home,          XK_ANY_MOD,     "\033[H",        0,   -1,    0},
@@ -381,3 +432,12 @@ static uint selmasks[] = {
        [SEL_RECTANGULAR] = Mod1Mask,
 };
 
+/*
+ * Printable characters in ASCII, used to estimate the advance width
+ * of single wide characters.
+ */
+static char ascii_printable[] =
+       " !\"#$%&'()*+,-./0123456789:;<=>?"
+       "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
+       "`abcdefghijklmnopqrstuvwxyz{|}~";
+