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