st (Português)

From ArchWiki

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