Jump to content

st (Русский)

From ArchWiki

st — это простая реализация терминала для Xorg от suckless. Изначально он задумывался как лёгковесная замена для xterm или urxvt. На данный момент поддерживаются 256 цветов, true color, многие VT10X escape-последовательности, UTF-8, копирование/вставка в X11, сглаженные (anti-aliased) шрифты, fallback-шрифты, изменение размера, комбинации клавиш и линейная графика.

Установка

Установите пакет stAUR. В Wayland st использует Xwayland; на текущий момент активной портировки под Wayland нет, поэтому занимаемый объём памяти Xwayland неизбежен.

Конфигурация

st настраивается через файл config.h, который считывается во время компиляции. Стандартные настройки хранятся в config.def.h — этот файл входит в исходный код. Рассмотрите возможность внесения собственных настроек в config.h и PKGBUILD.

Shell

Чтобы сменить стандартную оболочку (shell) для st, внесите правки в следующую строку:

static char *shell = "/bin/sh";

Или запустите st с нужной оболочкой, указав её последним аргументом:

$ st options fish

Term

Чтобы изменить тип терминала, внесите правки в следующую строку:

static char *termname = "st-256color";

st будет использовать значение переменной TERM в качестве termname.

Шрифт

Чтобы сменить шрифт, внесите необходимые правки в эту строку:

static char *font = "Liberation Mono:pixelsize=12:antialias=false:autohint=false";

Вы также можете передать значение шрифта при запуске терминала:

$ st -f "Liberation Mono:size=12"
$ st -f 'Liberation Mono-12'

Имена шрифтов можно узнать с помощью fc-list.

Курсор

По умолчанию курсор мыши — XC_xterm;, который зачастую трудно заметить. Чтобы изменить курсор на более привычный, внесите правки в следующую строку:

static unsigned int mouseshape = XC_left_ptr;

Цвета

Внесите правки в следующие строки, чтобы изменить фон, передний план и цвета курсора:

unsigned int defaultfg = 7;
unsigned int defaultbg = 0;
static unsigned int defaultcs = 256;

Эти значения находятся в массиве *colorname[] в вашем конфигурационном файле. Вы можете использовать стандартные цвета или добавить свои в формате #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;

Существуют различные утилиты, упрощающие создание цветовых сочетаний. Например, terminal.sexy содержит наборы уже готовых схем и может отображать их в формате st (см. комментарий в проблеме 22).

Существует патч для соляризованных цветовых схем. См. https://st.suckless.org/patches/solarized/, чтобы установить его.

Патчи

Доступно множество патчей с веб-сайта suckless. Чтобы применить патч, скачайте нужный вам diff и примените его с помощью patch -i patch.diff. Это внесёт правки в файл конфигурации по умолчанию config.def.h; если вы используете собственный config.h, скопируйте свои настройки из config.def.h в config.h и затем выполните make clean install.

Запись рабочего стола

Чтобы упростить запуск st с вашим шрифтом (например, adobe-source-code-pro-fonts) в среде рабочего стола, вы также можете создать запись рабочего стола:

~/.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;

Эта запись меню будет отображаться как Simple Terminal в списке программ System Tools.

Устранение неполадок

Клавиатура

Добавьте следующее в ~/.inputrc или /etc/inputrc, если Delete не работает корректно в некоторых программах:

set enable-keypad on

Если всё вышеперечисленное не работает с такими приложениями, как IPython, при использовании bash, вместо этого выключите enable-keypad и добавьте следующее в ваш ~/.bashrc, как указано в st FAQ:

printf '\033[?1h\033=' >/dev/tty

Vim

Фоновый цвет текста в «vim» не заполняет ничего, кроме символов

Попробуйте установить значение termname в файле config.h на st-256color и перекомпилировать. Также не устанавливайте переменную TERM в shell, по крайней мере не в st-256color, так как это, по-видимому, вызывает проблему.

Другое, возможно более удачное решение — добавить следующие строки в файл .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

Поддержка 256color и truecolor не работает в tmux или других

Сначала убедитесь, что вы не устанавливаете и не экспортируете значение TERM в вашем ~/.bashrc, как упомянуто в этом треде.

Note Не устанавливайте TERM явно. Сделайте это правильно, установив параметр default-terminal в вашем tmux.conf.

Во-вторых, убедитесь, что версия vim, которую вы используете, — ">=7.4.1799", так как именно в ней была добавлена поддержка termguicolors.

Наконец, добавьте следующее в ~/.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
Note ^[ — это буквальная escape-последовательность символа (Esc), который является префиксом для каждого из значений t_8f и t_8b. Это отдельный символ, который можно ввести в vim. В режиме «INSERT» нажмите Ctrl+v, а затем Esc. Вы по-прежнему будете находиться в режиме «INSERT»; нажмите Esc ещё раз, чтобы вернуться в режим «NORMAL».
Tip Рекомендуется установить значения для t_8f и t_8b перед установкой colorscheme, t_Co и termguicolors.

Для получения дополнительной информации см. :help в vim для: xterm-true-color, t_8f, t_8b

Поддержка арабских символов

Как объясняется в Vim#Bidirectional support, для полной поддержки арабских символов вам понадобится fallback-шрифт, охватывающий записи Unicode для арабских форм B. Для этого добавьте патч font2 и отредактируйте свою конфигурацию следующим образом:

static char *font = "Cascadia Code:size=12:pixelsize=13:antialias=true:autohint=true";
static char *font2[] = { "DejaVu Sans Mono:size=12:pixelsize=13:antialias=true:autohint=true" };

Затем запустите st с помощью st -f 'Vazir Code:pixelsize=15'. Эта настройка охватывает большинство случаев формирования арабских символов: без формирования, курсив без формирования, Forms-B и курсив Forms-B.

Cм. также