# Расширенная конфигурация Хотя Starship - это универсальная оболочка, иногда вам нужно сделать больше, чем просто редактировать `starship.toml`, для того чтобы сделать определенные вещи. Эта страница описывает некоторые из дополнительных техник конфигурации, используемых в Starship. ::: warning Конфигурации в этом разделе могут быть изменены в будущих выпусках Starship. ::: ## Пользовательские команды перед командной строкой и перед запуском Bash Bash не имеет формальной среды preexec/precmd, как и большинство других оболочек. Из-за этого трудно предоставить полностью настраиваемые хуки в `bash`. Тем не менее, Starship дает вам ограниченную возможность вставить собственные функции в процедуру отображения подсказки: - Чтобы запустить пользовательскую функцию прямо перед отображением подсказки, определите новую функцию и затем назначьте ей имя `starship_precmd_user_func`. Например, чтобы нарисовать ракету перед появлением подсказки, сделайте ```bash function blastoff(){ echo "🚀" } starship_precmd_user_func="blastoff" ``` - Чтобы запустить пользовательскую функцию перед запуском команды, вы можете использовать [механизм ловушки `DEBUG`](https://jichu4n.com/posts/debug-trap-and-prompt_command-in-bash/). Тем не менее, вы **должны** поймать сигнал DEBUG *перед* инициализацией Starship! Starship может сохранить значение ловушки DEBUG, но если ловушка перезаписана после запуска Starship, некоторая функциональность сломается. ```bash function blastoff(){ echo "🚀" } trap blastoff DEBUG # Trap DEBUG *before* running starship eval $(starship init bash) ``` ## Изменение заголовка окна Некоторые подсказки к оболочке автоматически меняют заголовок окна для вас (например, отражая ваш рабочий каталог). Fish даже делает это по умолчанию. Starship не делает этого, но достаточно легко добавить эту функциональность к `bash` или `zsh`. Сначала задайте функцию изменения заголовка окна (идентичную в bash и zsh): ```bash function set_win_title(){ echo -ne "\033]0; YOUR_WINDOW_TITLE_HERE \007" } ``` Вы можете использовать переменные для настройки этого заголовка (`$USER`, `$HOSTNAME`, и `$PWD` являются популярными вариантами). В `bash`, установите эту функцию как функцию precmd в Starship: ```bash starship_precmd_user_func="set_win_title" ``` В `zsh`, добавьте это в массив `precmd_functions`: ```bash precmd_functions+=(set_win_title) ``` Если вам нравится результат, добавьте эти строки в конфигурационный файл оболочки (`~/.bashrc` или `~/.zsrhc`), чтобы оставить это навсегда. Например, если вы хотите отобразить ваш текущий каталог в заголовке вкладки терминала, добавьте следующие строки в `~/. bashrc` или `~/.zshrc`: ```bash function set_win_title(){ echo -ne "\033]0; $(basename "$PWD") \007" } starship_precmd_user_func="set_win_title" ``` ## Строки стиля Строки стиля - это список слов, разделенных пробелами. Слова не чувствительны к регистру (то есть `bold` и `BoLd` считаются одной строкой). Каждое слово может быть одним из следующих: - `bold` - `underline` - `dimmed` - `bg:` - `fg:` - `` - `none` где `` является цветовым спецификатором (обсуждается ниже). `fg:` и `` в настоящее время делают одно и то же, хотя это может измениться в будущем. Порядок слов в строке не имеет значения. Токен `none` переопределяет все остальные токены в строке, если он не является частью спецификатора `bg:` так, например, `fg:red none fg:blue` все равно создаст строку без стиля. `bg:none` устанавливает цвет фона по умолчанию, поэтому `fg:red bg:none` эквивалентен `red` или `fg:red` и `bg:green fg:red bg:none` тоже самое, что `fg:red` или `red`. Использование `none` в сочетании с другими токенами может стать ошибкой в будущем. Цветовой спецификатор может быть одним из следующих: - Некоторые из стандартных цветов терминалов: `black`, `red`, `green`, `blue`, `gellow`, `purple`, `cyan`, `white`. Вы можете по желанию добавить префикс `bright-`, чтобы получить яркую версию (например, `bright-white`). - `#`, за которой следует шестизначное шестнадцатеричное число. Это определяет [шестнадцатеричный код цвета RGB](https://www.w3schools.com/colors/colors_hexadecimal.asp). - Число от 0 до 255. Это определяет [8-битный код цвета ANSI](https://i.stack.imgur.com/KTSQa.png). Если для переднего плана/фона задано несколько цветов, то последняя из строк будет иметь приоритет.