st (Русский) - ArchWiki

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м. также

- Домашняя страница
- Часто задаваемые вопросы
- Офицальная репозитория git

Categories:

- Terminal emulators (Русский)
- Suckless (Русский)

st (Русский)
Add topic