st (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Status de tradução: Esse artigo é uma tradução de st. Data da última tradução: 2020-06-17. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

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 [2] ou st-solarizedAUR[link quebrado: package not found] 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)

Nota: Por favor, não defina explicitamente a variável 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
Nota: ^[ é 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 <C-v>-<Esc> (Control+v e então aperte Esc). Você ainda estará no modo INSERT; pressione <Esc> novamente para retornar ao modo NORMAL.
Dica: Recomenda-se definir os valores para 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

Falha se a página contiver caracteres emoji

O st pode travar se você tentar carregar uma página com emojis coloridos sem glifo associado (EN), visto especificamente com fontes como ttf-joypixels, retornando algo semelhante a este se executado a partir de outro terminal:

X Error of failed request:  BadLength (poly request too large or internal Xlib length error)
 Major opcode of failed request:  139 (RENDER)
 Minor opcode of failed request:  20 (RenderAddGlyphs)
 Serial number of failed request:  5118
 Current serial number in output stream:  5209

Para corrigi-lo, basta instalar ttf-symbolaAUR para unicode.

Outra solução é instalar o pacote libxft-bgraAUR. Isso fornece uma versão corrigida do libXft que suporta emoji colorido.

Veja também