O st é uma implementação simples de terminal para Xorg do suckless. Destina-se a servir como um substituto leve para O xterm ou urxvt. Atualmente, ele suporta 256 cores, cores verdadeiras, a maioria das seqüências de escape do VT10X, copiar/colar UTF-8, X11, fontes sem serrilhado (usando fontconfig), fontes de fallback, redimensionamento, atalhos via config.h e desenho de linha.
Instalação
Instale o pacote stAUR ou st-gitAUR para a versão de desenvolvimento.
- No Wayland o st usa Xwayland, se você quiser um terminal semelhante, evitando a verificação da pegada de memória Xwayland wterm-gitAUR
Configuração
O st é configurado através do arquivo config.h que é copiado no momento da compilação. Os padrões são armazenados em config.def.h que está incluído na fonte. Considere manter seu próprio config.h e PKGBUILD.
Shell
Para alterar o shell padrão para o st, edite esta linha:
static char *shell = "/bin/sh";
Ou iniciar o st com o shell desejado como último argumento:
$ st options fish
Terminal
Para alterar o tipo de terminal, edite esta linha:
static char *termname = "st-256color";
O st irá definir a variável TERM com o valor de termname.
Fonte
Edite a seguinte linha como preferir:
static char *font = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";
Você também pode passar o valor da fonte na linha de comando:
$ st -f "Liberation Mono:size=12" $ st -f 'Liberation Mono-12'
Os nomes das fontes podem ser encontrados com fc-list.
Cursor
Por padrão, o ponteiro do mouse é XC_xterm; o que geralmente pode ser difícil de encontrar. Para alterá-lo para o tema normal do seu cursor, edite o seguinte:
static unsigned int mouseshape = XC_left_ptr;
Cores
Edite as seguintes linhas para definir as cores de primeiro plano, plano de fundo e cursor:
unsigned int defaultfg = 7; unsigned int defaultbg = 0; static unsigned int defaultcs = 256;
Os valores referem-se ao *colorname[] no arquivo de configuração. Você pode usar as cores padrão ou adicionar as suas #rrggbb:
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
*/
unsigned int defaultfg = 257;
unsigned int defaultbg = 258;
static unsigned int defaultcs = 256;
Existem ferramentas para facilitar a criação de paletas de cores. Por exemplo terminal sexy possui um conjunto de cores pré-fabricadas e exporta diretamente para o formato do st (veja [1]).
Existe um patch para o esquema de cores Solarized. Veja https://st.suckless.org/patches/solarized/ para instalá-lo.
Modificações
Existem muitos patches disponíveis no site da suckless (EN). Para aplicar um patch, faça o download do diff e aplique-o com patch -i patch.diff. Isso altera o arquivo de configuração padrão config.def.h; se você estiver mantendo seu próprio config.h, copie suas configurações da config.h em uma cópia da config.def.h e renomeie config.h, e então make clean install.
Entrada na área de trabalho
Para simplificar o lançamento st with a decent font (por exemplo o pacote adobe-source-code-pro-fonts) em um desktop environment, você também pode criar um desktop entries:
~/.local/share/applications/st.desktop
[Desktop Entry] Name=Simple Terminal GenericName=Terminal Comment=Suckless terminal emulator for X Exec=st -t "Simple Terminal" -f "Source Code Pro:style=Semibold:size=12" Terminal=false Type=Application Encoding=UTF-8 Icon=utilities-terminal Categories=System;TerminalEmulator; Keywords=shell;prompt;command;commandline;cmd;
A entrada do menu aparecerá como um Terminal Simples na lista de aplicativos e na Ferramentas do sistema.
Solução de problemas
Teclado
Adicione o seguinte ao ~/.inputrc ou /etc/inputrc e se o Delete não estiver funcionando corretamente em alguns aplicativos:
set enable-keypad on
Se o acima não funcionar com algumas aplicações, como IPython usando bash, em vez disso, desligue enable-keypad e adicione o seguinte ao seu ~/.bashrc, como mencionado no st FAQ:
printf '\033[?1h\033=' >/dev/tty
Vim
A cor de fundo do texto em vim não preencherá nada que não seja um caracter
Tente definir o valor de termname no seu config.h para st-256color e recompile. E não defina a variável TERM no seu shell, pelo menos para não st-256color pois isso parece causar um problema.
Outra solução, talvez a melhor, é ter as seguintes linhas no seu arquivo .vimrc:
if &term =~ '256color'
" disable Background Color Erase (BCE) so that color schemes
" render properly when inside 256-color tmux and GNU screen.
" see also https://sunaku.github.io/vim-256color-bce.html
set t_ut=
endif
O suporte 256color e truecolor não funciona no tmux
Primeiro, verifique se você não está definindo e exportando o valor da variável TERM no seu ~/.bashrc como mencionado neste tópico (EN)
TERM. Faça o certo, definindo a configurado default-terminal no seu tmux.conf
Segundo, verifique se a versão do vim você tem que está usando a versão >=7.4.1799, que é quando o termguicolors foi adicionado.
Por fim, adicione o seguinte ao ~/.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
^[ é um escape literale (Esc) caractere que prefixa cada um dos valores para t_8f e t_8b. É um caractere único, que pode ser reproduzido em vim. O modo INSERT, pressiona Ctrl+v e então aperte Esc. Você ainda estará no modo INSERT; pressione Esc novamente para retornar ao modo NORMAL.
t_8f e t_8b antes da configuração colorscheme, t_Co e termguicolors.Para mais informações, consulte o :help no vim para: xterm-true-color, t_8f, t_8b