st
st is a simple terminal implementation for X.org by suckless. It is intended to serve as a lightweight replacement for xterm or urxvt. It currently supports 256 colors, true colors, most VT10X escape sequences, UTF-8, X11 copy/paste, anti-aliased fonts (using fontconfig), fallback fonts, resizing, shortcuts via config.h, and line drawing.
Installation
Install the stAUR or the st-gitAUR package.
Configuration
st is configured through its config.h file, which is copied over from config.h at compile time. A default config.def.h is included with the source.
Consider maintaining your own PKGBUILD with your config.h.
Shell
To change the default shell for st, edit this line:
static char shell[] = "/bin/sh";
Term
To change the terminal type, edit this line:
static char termname[] = "st-256color";
st will set the TERM variable with the value of termname.
termname to xterm or xterm-256color Font
Edit the following line as you prefer:
static char font[] = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
You can also pass the value of the font in the command line:
$ st -f "Liberation Mono:size=12"
Colors
Edit the following lines to set foreground, background, and cursor colors:
static unsigned int defaultfg = 7; static unsigned int defaultbg = 0; static unsigned int defaultcs = 256;
The values refer to the *colorname[] array in the same file; you can use default color or add yours in #rrggbb, for example:
static const char *colorname[] = {
/* 8 normal colors */
"black",
"red3",
"green3",
"yellow3",
"blue2",
"magenta3",
"cyan3",
"gray90",
/* 8 bright colors */
"gray50",
"red",
"green",
"yellow",
"#5c5cff",
"magenta",
"cyan",
"white",
[255] = 0,
/* more colors can be added after 255 to use with DefaultXX */
"#cccccc",
"#eeeeee",
"#111111",
};
/*
* Default colors (colorname index)
* foreground, background, cursor
*/
static unsigned int defaultfg = 257;
static unsigned int defaultbg = 258;
static unsigned int defaultcs = 256;
Tools exists to facilitate the creation of color palettes. e.g. terminal.sexy that has a set of pre-made ones and exports directly to the st config format.
For those wanting the solarized color scheme, there is a patch that implements it at suckless.org - AUR version here.
Desktop entry
To simplify launching st with a decent font e.g. adobe-source-code-pro-fonts, you can also create a desktop entry:
~/.local/share/applications/simple-terminal.desktop
[Desktop Entry] Name=Simple Terminal GenericName=Terminal Comment=standard terminal emulator for the X window system Exec=st -t "Suckless Terminal" -f "Source Code Pro:style=Semibold:size=12" -g "80x24" Terminal=false Type=Application Encoding=UTF-8 Icon=terminal Categories=System;TerminalEmulator; Keywords=shell;prompt;command;commandline;cmd;
The menu entry will appear as Simple Terminal in the System Tools application list.
Troubleshooting
Keyboard
DEL-Key not working properly in some Application
add following to ~/.inputrc or /etc/inputrc:
set enable-keypad on
Vim
The background colour of text in vim will not fill in anything that is not a character
Try setting the value of termname in your config.h to st-256color and recompiling. And do not set the TERM var in your shell, at least not to st-256color as this seems to cause the issue.
Another solution, perhaps a better one, is to have the following lines in your .vimrc file:
if &term =~ '256color'
" disable Background Color Erase (BCE) so that color schemes
" render properly when inside 256-color tmux and GNU screen.
" see also http://sunaku.github.io/vim-256color-bce.html
set t_ut=
endif
256color and truecolor support not working in tmux or otherwise
First, make sure you are not setting and exporting the value of TERM in your ~/.bashrc as mentioned in this thread
TERM. Do it right by setting the default-terminal setting in your tmux.conf
Second, make sure the version of vim you are using is >=7.4.1799, which is when termguicolors was added.
Finally, add the following to ~/.vimrc:
set t_8f=^[[38;2;%lu;%lu;%lum " set foreground color
set t_8b=^[[48;2;%lu;%lu;%lum " set background color
colorscheme Tomorrow-Night-Eighties
set t_Co=256 " Enable 256 colors
set termguicolors " Enable GUI colors for the terminal to get truecolor
^[ is a literal escape (<Esc>) character that prefixes each of the values for t_8f and t_8b. It is a single character, which can be reproduced in vim. In INSERT mode, press <C-v>-<Esc> (Control+v then press Esc). You will still be in INSERT mode; press <Esc> again to return to NORMAL mode.
t_8f and t_8b prior to setting colorscheme, t_Co and termguicolors.For more information, see the :help in vim for: xterm-true-color, t_8f, t_8b