Как поменять цвет текста в терминале windows

Как менять цвета в Командной строке. Вам надоело постоянно видеть стандартный белый текст на черном фоне в командной строке? Если да, тогда читайте дальше, чтобы узнать, как изменить цвет текста и фона. Нажмите сочетание клавиш Windows + R...


Загрузить PDF


Загрузить PDF

Вам надоело постоянно видеть стандартный белый текст на черном фоне в командной строке? Если да, тогда читайте дальше, чтобы узнать, как изменить цвет текста и фона.

Шаги

  1. Изображение с названием Change Colours in Command Prompt Step 1

    1

    Нажмите сочетание клавиш Windows + R для открытия окна «Выполнить».

  2. Изображение с названием Change Colours in Command Prompt Step 2

    2

    Введите cmd и нажмите «OK».

  3. Изображение с названием Change Colours in Command Prompt Step 3

    3

    Введите color z, чтобы получить список всех цветов и цифры или буквы, которые им соответствуют. Первые буква/цифра — это цвет фона, а вторая — цвет текста.

  4. Изображение с названием Change Colours in Command Prompt Step 4

    4

    Введите букву/цифру цвета, чтобы изменить цвет текста. Например, введите color 6, чтобы получился желтый текст, color 4 для красного цвета, color A для изменения текста в светло-зеленую окраску и так далее.

  5. Изображение с названием Change Colours in Command Prompt Step 5

    5

    Для изменения цвета текста, а также его фона, введите color ce, чтобы получился светло-желтый текст на светло-красном фоне, или любую другую комбинацию. Первая буква/цифра обозначает цвет фона, а вторая соотносится с цветом текста.

    Реклама

  1. Изображение с названием Change Colours in Command Prompt Step 6

    1

    Запустите командную строку.

  2. Изображение с названием Change Colours in Command Prompt Step 7

    2

    Щелкните сверху правой кнопкой мыши.

  3. Изображение с названием Change Colours in Command Prompt Step 8

    3

    Выберите «Свойства».

  4. Изображение с названием Change Colours in Command Prompt Step 9

    4

    Перейдите на вкладку «Цвета».

  5. Изображение с названием Change Colours in Command Prompt Step 10

    5

    Выберите свойства текста или фона и отредактируйте цветовые значения.

    • Поэкспериментируйте с различными комбинациями!
  6. Изображение с названием Change Colours in Command Prompt Step 11

    6

    Щелкните по кнопке «OK» для сохранения изменений.

    Реклама

Список возможных расцветок

  • 0 = Черный
  • 1 = Синий
  • 2 = Зеленый
  • 3 = Аквамарин
  • 4 = Красный
  • 5 = Фиолетовый
  • 6 = Желтый
  • 7 = Белый
  • 8 = Серый
  • 9 = Светло-голубой
  • A = Светло-зеленый
  • В = Светлый аквамарин
  • С = Светло-красный
  • D = Светло-фиолетовый
  • E = Светло-желтый
  • F = Ярко-белый

Советы

  • Будьте осторожны в правописании слова «color» и не введите по ошибке «colour». В противном случае изменения не сработают.

Реклама

Об этой статье

Эту страницу просматривали 82 026 раз.

Была ли эта статья полезной?

Windows Terminal — это новое и улучшенное программное обеспечение терминала Microsoft, предназначенное для запуска командной строки, Powershell и Azure Cloud Shell под одной крышей. Терминал Windows был наделен рядом параметров настройки, чтобы сделать его еще более приятным в использовании.

Используя редактор исходного кода, например Код Visual Studio значительно упрощает внесение изменений в строки кода. Просто скачайте приложение и установите его. Приложение автоматически свяжет все ваши файлы .json, чтобы открыть их. В противном случае вы можете просто использовать легкий, но многофункциональный текстовый редактор, например Блокнот ++.

Прежде чем продолжить, хорошо сделать Visual Studio Code или Notepad ++ в качестве своего программное обеспечение по умолчанию для файлов .json. Для этого создайте на своем компьютере фиктивный файл .json, переименуйте его в test.json, щелкните его правой кнопкой мыши и выберите «Открыть с помощью», а затем выберите программное обеспечение Visual Studio Code или Notepad ++.

Теперь, когда у вас есть редактор кода, давайте погрузимся прямо в него и посмотрим, как отредактировать файл .json по умолчанию Терминала Windows, чтобы изменить цвет вашего Терминала Windows.

Как использовать цветовые схемы

Терминал Windows поставляется со своими собственными цветовыми схемами. По умолчанию для Windows Terminal используется схема «Кэмпбелл». Если вы хотите изменить схему, вы можете сделать это с помощью опции «Настройки». Щелкните стрелку раскрывающегося списка рядом со значком «Новая вкладка» и выберите «Настройки».

Вас встретит файл settings.json. Внесение изменений в этот файл напрямую повлияет на внешний вид и функции Терминала.

Если вы хотите применить схему ко всем профилям, то есть к командной строке, Powershell и Azure Cloud Shell, убедитесь, что вы добавили строки под «значениями по умолчанию» в разделе «профили». Чтобы установить схему для определенного профиля, просто добавьте ее в соответствующий профиль.

Теперь в файле settings.json добавьте строку, приведенную ниже в разделе «По умолчанию», чтобы изменить цвет фона для всех окон на «Половина темного». Вы можете выбрать любую цветовую схему, но об этом ниже. (Не добавляйте команду или что-либо еще после нее.)

"colorScheme": "One Half Dark"

Командная строка должна выглядеть так:

Теперь перейдите в Файл> Сохранить или нажмите Ctrl + s на клавиатуре. Если ваш терминал Windows открыт, вы должны сразу увидеть новый фон. В противном случае запустите приложение, чтобы просмотреть изменения.

Изменить цвет Windows Terminal

Как вы можете видеть на гифке выше, мы использовали три цветовые схемы: одна половина светлая, одна половина темная и Кэмпбелл. Но доступно гораздо больше цветовых схем. Читать дальше.

Всего в Терминале Windows доступно девять цветовых схем. Чтобы посмотреть, как выглядят эти цветовые схемы, посетите эту страницу от Microsoft, где они перечислили каждую из цветовых схем с их цветами шрифта и всем остальным.

Однако вот простой список из девяти цветовых схем, доступных в Терминале Windows по умолчанию:

  • Кэмпбелл
  • Кэмпбелл Пауэршелл
  • Винтаж
  • Половина темноты
  • Одна половина света
  • Соляризованная тьма
  • Соляризованный свет
  • Танго Темное
  • Танго Свет

Как изменить любую цветовую схему по умолчанию

Что ж, вы легко можете изменить цвета любой цветовой схемы по умолчанию.

Но для этого вам нужно открыть файл defaults.json, в котором есть настройки по умолчанию для цветовых схем.

Как открыть defaults.json

Чтобы открыть defaults.json, щелкните стрелку раскрывающегося списка рядом со значком «Новая вкладка» в Терминале Windows и на этот раз удерживая клавишу «alt», нажмите «Настройки».. Откроется файл defaults.json. Здесь вы можете просмотреть все настройки по умолчанию, которые поставляются с терминалом.

Если вы прокрутите вниз до «схем» (строка 66 на скриншоте ниже), вы заметите ряд схем, перечисленных вместе с их цветовой палитрой в шестнадцатеричном формате. Вам нужно только название схемы, чтобы применить ее в файле settings.json. Скопируйте только название схемы. Например, «Кэмпбелл».

Как настроить цветовые схемы

Если цветовых схем по умолчанию вам недостаточно, вы даже можете настроить их по своему усмотрению! Для этого откройте файл defaults.json и файл settings.json. Лучше не вносить изменения в файл default.json. Так что скопируйте цветовую схему из файла. Убедитесь, что вы не добавили скобки, поскольку они уже есть в файле settings.json. Следуйте изображению ниже, чтобы скопировать цветовую схему.

После того, как вы скопировали цветовую схему, перейдите в файл settings.json и вставьте его под «значениями по умолчанию» (строка 30). Примечание: тема будет применена ко всем профилям. Чтобы применить схему к определенному профилю, вставьте схему под этим профилем.

Теперь, когда вы вставили схему в файл settings.json, вы можете продолжить и отредактировать шестнадцатеричные значения цветов, чтобы настроить схему. Не волнуйтесь, эти изменения не повлияют на ваши цветовые схемы. Перейдите в Файл> Сохранить, когда закончите.

Как изменить цвет курсора

Включенный в список настраиваемого внешнего вида, вы также можете изменить цвет мигающего курсора. Это довольно легко сделать. Используя приведенное выше руководство, откройте файл setting.json и перейдите к строке в разделе «значения по умолчанию» (строка 30). Начните вводить «cursorColor:», чтобы получить подсказку для команды. Введите шестнадцатеричное значение желаемого цвета и затем сохраните файл. Команда должна выглядеть так.

"cursorColor": "#790e8b"

Добавляем акриловый эффект

Вместо простого скучного цветного фона вы можете настроить его так, чтобы получился красивый блестящий акриловый эффект! Кроме того, вы меняете значение, чтобы сделать фон непрозрачным, чтобы вы могли видеть сквозь него!

Чтобы придать фону акриловый эффект, откройте файл settings.json и в разделе «По умолчанию» (строка 30) начните вводить «useAcrylic». Вы должны получить приглашение для команды. По умолчанию для этой команды установлено значение «false», поэтому смените его на «true».

"useAcrylic": true

Как только вы сохраните файл, вы увидите, что изменения вступят в силу немедленно!

Как изменить уровень прозрачности акрилового эффекта

Чтобы настроить непрозрачность, чтобы видеть сквозь окно, в разделе «По умолчанию» введите «acrylicOpacity». По умолчанию для этой команды установлено значение 0,5. Вы можете изменить это значение на любое значение от 0 до 1. Чем меньше число, тем более прозрачным будет окно. Не забудьте сохранить файл!

"acrylicOpacity": 0.3

Примечание. Чтобы использовать acrylicOpacity, команда useacrylic должна иметь значение «true».


Мы надеемся, что это помогло вам легко изменить цвет фона вашего Windows Terminal. Если вам нужна помощь, дайте нам знать.

Outputting text in a terminal can result in a monochrome experience for the user. Adding color is easy, so here I provide a script that includes helper methods for outputting text, using defined colors, and handling contrast

  • Download color.zip — 1.9 KB

Introduction

The default text output to a terminal is monochromatic and doesn’t provide a simple method to provide context. For instance you may want an error to appear in red, success in green, or important info to be output in bold.

Adding color to your terminal output is straightforward and involves outputting the correct control characters before your text.

This is a companion article to How to change text color in a Linux terminal

Terminal colors

To output colored text you need to echo the control characters for the required color, then output your text, and then (to be tidy) reset the output back to defaults. The following table lists the codes

Color Foreground Background
Default ESC[39m ESC[49m
Black ESC[30m ESC[40m
Dark red ESC[31m ESC[41m
Dark green ESC[32m ESC[42m
Dark yellow (Orange-ish) ESC[33m ESC[43m
Dark blue ESC[34m ESC[44m
Dark magenta ESC[35m ESC[45m
Dark cyan ESC[36m ESC[46m
Light gray ESC[37m ESC[47m
Dark gray ESC[90m ESC[100m
Red ESC[91m ESC[101m
Green ESC[92m ESC[101m
Orange ESC[93m ESC[103m
Blue ESC[94m ESC[104m
Magenta ESC[95m ESC[105m
Cyan ESC[96m ESC[106m
White ESC[97m ESC[107m

and the reset code is ESC[0m where ESC is the escape code.

The format of the string for foreground color is:

"ESC[" + "<0 or 1, meaning normal or bold>;" + "<color code> + "m"

and for background:

"ESC[" + "<color code>" + "m"

These codes can be output together in order to change fore- and back-ground colors simultaneously.

Using the code

Before you can output the color code you need to generate the ESC sequence. It’s probably easiest to do that once and store it for later:

:: Sets up the ESC string for use later in this script
:setESC
    for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
      set ESC=%%b
      exit /B 0
    )
    exit /B 0

This will set a variable ESC with the correct sequence

A simple example of outputting red text

setlocal enabledelayedexpansion
call :setESC
echo !ESC![91mThis is red text!ESC![0m

An example of outputting  red text on a white background

setlocal enabledelayedexpansion
call :setESC
echo !ESC![91m!ESC![107mThis is red text on a white background!ESC![0m"

This is a little cumbersome so I’ve created some simple subroutines that provide the means to output text in a more civilised manner

Helper functions

The following helper functions allow you to do stuff like

call :WriteLine "This is red text" "Red"
call :WriteLine "This is red text on a white background" "Red" "White"

Much easier.

set useColor=true



:setESC
    for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
      set ESC=%%b
      exit /B 0
    )
    exit /B 0








:setColor

    
    
    

    set foreground=%~1
    set background=%~2

    if "!foreground!"=="" set foreground=White
    if /i "!foreground!"=="Default" set foreground=White
    if "!background!"=="" set background=Black
    if /i "!background!"=="Default" set background=Black

    if "!ESC!"=="" call :setESC

    
    if /i "!foreground!"=="Contrast" (
        call :setContrastForeground !background!
        set foreground=!contrastForeground!
    )

    set currentColor=

    
    if /i "!foreground!"=="Black"       set currentColor=!ESC![30m
    if /i "!foreground!"=="DarkRed"     set currentColor=!ESC![31m
    if /i "!foreground!"=="DarkGreen"   set currentColor=!ESC![32m
    if /i "!foreground!"=="DarkYellow"  set currentColor=!ESC![33m
    if /i "!foreground!"=="DarkBlue"    set currentColor=!ESC![34m
    if /i "!foreground!"=="DarkMagenta" set currentColor=!ESC![35m
    if /i "!foreground!"=="DarkCyan"    set currentColor=!ESC![36m
    if /i "!foreground!"=="Gray"        set currentColor=!ESC![37m
    if /i "!foreground!"=="DarkGray"    set currentColor=!ESC![90m
    if /i "!foreground!"=="Red"         set currentColor=!ESC![91m
    if /i "!foreground!"=="Green"       set currentColor=!ESC![92m
    if /i "!foreground!"=="Yellow"      set currentColor=!ESC![93m
    if /i "!foreground!"=="Blue"        set currentColor=!ESC![94m
    if /i "!foreground!"=="Magenta"     set currentColor=!ESC![95m
    if /i "!foreground!"=="Cyan"        set currentColor=!ESC![96m
    if /i "!foreground!"=="White"       set currentColor=!ESC![97m
    if "!currentColor!"=="" set currentColor=!ESC![97m
    
    if /i "!background!"=="Black"       set currentColor=!currentColor!!ESC![40m
    if /i "!background!"=="DarkRed"     set currentColor=!currentColor!!ESC![41m
    if /i "!background!"=="DarkGreen"   set currentColor=!currentColor!!ESC![42m
    if /i "!background!"=="DarkYellow"  set currentColor=!currentColor!!ESC![43m
    if /i "!background!"=="DarkBlue"    set currentColor=!currentColor!!ESC![44m
    if /i "!background!"=="DarkMagenta" set currentColor=!currentColor!!ESC![45m
    if /i "!background!"=="DarkCyan"    set currentColor=!currentColor!!ESC![46m
    if /i "!background!"=="Gray"        set currentColor=!currentColor!!ESC![47m
    if /i "!background!"=="DarkGray"    set currentColor=!currentColor!!ESC![100m
    if /i "!background!"=="Red"         set currentColor=!currentColor!!ESC![101m
    if /i "!background!"=="Green"       set currentColor=!currentColor!!ESC![102m
    if /i "!background!"=="Yellow"      set currentColor=!currentColor!!ESC![103m
    if /i "!background!"=="Blue"        set currentColor=!currentColor!!ESC![104m
    if /i "!background!"=="Magenta"     set currentColor=!currentColor!!ESC![105m
    if /i "!background!"=="Cyan"        set currentColor=!currentColor!!ESC![106m
    if /i "!background!"=="White"       set currentColor=!currentColor!!ESC![107m

    exit /B 0







:WriteLine
    SetLocal EnableDelayedExpansion
    
    if "!ESC!"=="" call :setESC    
    set resetColor=!ESC![0m

    set str=%~1

    if "!str!"=="" (
        echo:
        exit /b 0
    )
    if "!str: =!"=="" (
        echo:
        exit /b 0
    )

    if /i "%useColor%"=="true" (
        call :setColor %2 %3
        echo !currentColor!!str!!resetColor!
    ) else (
        echo !str!
    )
    exit /b 0






:Write
    SetLocal EnableDelayedExpansion
    
    if "!ESC!"=="" call :setESC
    set resetColor=!ESC![0m

    set str=%~1

    if "!str!"=="" exit /b 0
    if "!str: =!"=="" exit /b 0

    if /i "%useColor%"=="true" (
        call :setColor %2 %3
        <NUL set /p =!currentColor!!str!!resetColor!
    ) else (
        <NUL set /p =!str!
    )
    exit /b 0

Image 1

Handling Contrast

Suppose we have defined a set of predefined colors and we want to use them to ensure consistency 

set color_primary=Blue
set color_mute=Gray
set color_info=Yellow
set color_success=Green
set color_warn=DarkYellow
set color_error=Red

If we output text using these as background colors we get

call :WriteLine
call :WriteLine "Default color on predefined background"
call :WriteLine

call :WriteLine "  Default colored background" "Default"
call :WriteLine "  Primary colored background" "Default" %color_primary%
call :WriteLine "  Mute colored background"    "Default" %color_mute%
call :WriteLine "  Info colored background"    "Default" %color_info%
call :WriteLine "  Success colored background" "Default" %color_success%
call :WriteLine "  Warning colored background" "Default" %color_warn%
call :WriteLine "  Error colored background"   "Default" %color_error%

Image 2

Things are a bit murky so let’s add one more function that will provide a contrasting foreground on whatever background we choose

:: Sets the name of a color that will providing a contrasting foreground




:setContrastForeground

    set background=%~1

    if "!background!"=="" background=Black

    if /i "!background!"=="Black"       set contrastForeground=White
    if /i "!background!"=="DarkRed"     set contrastForeground=White
    if /i "!background!"=="DarkGreen"   set contrastForeground=White
    if /i "!background!"=="DarkYellow"  set contrastForeground=White
    if /i "!background!"=="DarkBlue"    set contrastForeground=White
    if /i "!background!"=="DarkMagenta" set contrastForeground=White
    if /i "!background!"=="DarkCyan"    set contrastForeground=White
    if /i "!background!"=="Gray"        set contrastForeground=Black
    if /i "!background!"=="DarkGray"    set contrastForeground=White
    if /i "!background!"=="Red"         set contrastForeground=White
    if /i "!background!"=="Green"       set contrastForeground=White
    if /i "!background!"=="Yellow"      set contrastForeground=Black
    if /i "!background!"=="Blue"        set contrastForeground=White
    if /i "!background!"=="Magenta"     set contrastForeground=White
    if /i "!background!"=="Cyan"        set contrastForeground=Black
    if /i "!background!"=="White"       set contrastForeground=Black

    exit /B 0

We’ve already wired this up in the Write methods: If the foreground color is set as «Contrast» then the foreground will be seet as something that has a decent contrast to the given background.

To use we simply do

call :WriteLine "  Primary colored background" "Contrast" %color_primary%
call :WriteLine "  Mute colored background"    "Contrast" %color_mute%
call :WriteLine "  Info colored background"    "Contrast" %color_info%
call :WriteLine "  Success colored background" "Contrast" %color_success%
call :WriteLine "  Warning colored background" "Contrast" %color_warn%
call :WriteLine "  Error colored background"   "Contrast" %color_error%

Image 3

Interesting points

A challenge in this was outputting text via a CMD shell without a newline. The echo command, by default, adds a line feed. To output text in a CMD script without including a line feed simply use

<NUL set /p ="My string goes here"

Current passion project: CodeProject.AI Server. Please join in!

Chris is the Co-founder of the popular code-sharing site CodeProject.com, the digital advertising agency DeveloperMedia.com and the content marketing agency ContentLab.IO.

He’s been programming way too long and has been, in various guides, an astrophysicist, mechanic, mathematician, physicist, breeder of carnivorous plants, hydrologist, geomorphologist, defence intelligence researcher and then, when all that got a bit rough on the nerves, a serial entrepreneur.

Chris has programmed everything from FORTRAN on a CRAY to Python on a Pi, but generally leans on TypeScript, C#, and SQL for the front, middle and back bits of his applications. His current focus is on ensuring developers know enough about Artificial Intelligence to be dangerous.

Outputting text in a terminal can result in a monochrome experience for the user. Adding color is easy, so here I provide a script that includes helper methods for outputting text, using defined colors, and handling contrast

  • Download color.zip — 1.9 KB

Introduction

The default text output to a terminal is monochromatic and doesn’t provide a simple method to provide context. For instance you may want an error to appear in red, success in green, or important info to be output in bold.

Adding color to your terminal output is straightforward and involves outputting the correct control characters before your text.

This is a companion article to How to change text color in a Linux terminal

Terminal colors

To output colored text you need to echo the control characters for the required color, then output your text, and then (to be tidy) reset the output back to defaults. The following table lists the codes

Color Foreground Background
Default ESC[39m ESC[49m
Black ESC[30m ESC[40m
Dark red ESC[31m ESC[41m
Dark green ESC[32m ESC[42m
Dark yellow (Orange-ish) ESC[33m ESC[43m
Dark blue ESC[34m ESC[44m
Dark magenta ESC[35m ESC[45m
Dark cyan ESC[36m ESC[46m
Light gray ESC[37m ESC[47m
Dark gray ESC[90m ESC[100m
Red ESC[91m ESC[101m
Green ESC[92m ESC[101m
Orange ESC[93m ESC[103m
Blue ESC[94m ESC[104m
Magenta ESC[95m ESC[105m
Cyan ESC[96m ESC[106m
White ESC[97m ESC[107m

and the reset code is ESC[0m where ESC is the escape code.

The format of the string for foreground color is:

"ESC[" + "<0 or 1, meaning normal or bold>;" + "<color code> + "m"

and for background:

"ESC[" + "<color code>" + "m"

These codes can be output together in order to change fore- and back-ground colors simultaneously.

Using the code

Before you can output the color code you need to generate the ESC sequence. It’s probably easiest to do that once and store it for later:

:: Sets up the ESC string for use later in this script
:setESC
    for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
      set ESC=%%b
      exit /B 0
    )
    exit /B 0

This will set a variable ESC with the correct sequence

A simple example of outputting red text

setlocal enabledelayedexpansion
call :setESC
echo !ESC![91mThis is red text!ESC![0m

An example of outputting  red text on a white background

setlocal enabledelayedexpansion
call :setESC
echo !ESC![91m!ESC![107mThis is red text on a white background!ESC![0m"

This is a little cumbersome so I’ve created some simple subroutines that provide the means to output text in a more civilised manner

Helper functions

The following helper functions allow you to do stuff like

call :WriteLine "This is red text" "Red"
call :WriteLine "This is red text on a white background" "Red" "White"

Much easier.

set useColor=true



:setESC
    for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
      set ESC=%%b
      exit /B 0
    )
    exit /B 0








:setColor

    
    
    

    set foreground=%~1
    set background=%~2

    if "!foreground!"=="" set foreground=White
    if /i "!foreground!"=="Default" set foreground=White
    if "!background!"=="" set background=Black
    if /i "!background!"=="Default" set background=Black

    if "!ESC!"=="" call :setESC

    
    if /i "!foreground!"=="Contrast" (
        call :setContrastForeground !background!
        set foreground=!contrastForeground!
    )

    set currentColor=

    
    if /i "!foreground!"=="Black"       set currentColor=!ESC![30m
    if /i "!foreground!"=="DarkRed"     set currentColor=!ESC![31m
    if /i "!foreground!"=="DarkGreen"   set currentColor=!ESC![32m
    if /i "!foreground!"=="DarkYellow"  set currentColor=!ESC![33m
    if /i "!foreground!"=="DarkBlue"    set currentColor=!ESC![34m
    if /i "!foreground!"=="DarkMagenta" set currentColor=!ESC![35m
    if /i "!foreground!"=="DarkCyan"    set currentColor=!ESC![36m
    if /i "!foreground!"=="Gray"        set currentColor=!ESC![37m
    if /i "!foreground!"=="DarkGray"    set currentColor=!ESC![90m
    if /i "!foreground!"=="Red"         set currentColor=!ESC![91m
    if /i "!foreground!"=="Green"       set currentColor=!ESC![92m
    if /i "!foreground!"=="Yellow"      set currentColor=!ESC![93m
    if /i "!foreground!"=="Blue"        set currentColor=!ESC![94m
    if /i "!foreground!"=="Magenta"     set currentColor=!ESC![95m
    if /i "!foreground!"=="Cyan"        set currentColor=!ESC![96m
    if /i "!foreground!"=="White"       set currentColor=!ESC![97m
    if "!currentColor!"=="" set currentColor=!ESC![97m
    
    if /i "!background!"=="Black"       set currentColor=!currentColor!!ESC![40m
    if /i "!background!"=="DarkRed"     set currentColor=!currentColor!!ESC![41m
    if /i "!background!"=="DarkGreen"   set currentColor=!currentColor!!ESC![42m
    if /i "!background!"=="DarkYellow"  set currentColor=!currentColor!!ESC![43m
    if /i "!background!"=="DarkBlue"    set currentColor=!currentColor!!ESC![44m
    if /i "!background!"=="DarkMagenta" set currentColor=!currentColor!!ESC![45m
    if /i "!background!"=="DarkCyan"    set currentColor=!currentColor!!ESC![46m
    if /i "!background!"=="Gray"        set currentColor=!currentColor!!ESC![47m
    if /i "!background!"=="DarkGray"    set currentColor=!currentColor!!ESC![100m
    if /i "!background!"=="Red"         set currentColor=!currentColor!!ESC![101m
    if /i "!background!"=="Green"       set currentColor=!currentColor!!ESC![102m
    if /i "!background!"=="Yellow"      set currentColor=!currentColor!!ESC![103m
    if /i "!background!"=="Blue"        set currentColor=!currentColor!!ESC![104m
    if /i "!background!"=="Magenta"     set currentColor=!currentColor!!ESC![105m
    if /i "!background!"=="Cyan"        set currentColor=!currentColor!!ESC![106m
    if /i "!background!"=="White"       set currentColor=!currentColor!!ESC![107m

    exit /B 0







:WriteLine
    SetLocal EnableDelayedExpansion
    
    if "!ESC!"=="" call :setESC    
    set resetColor=!ESC![0m

    set str=%~1

    if "!str!"=="" (
        echo:
        exit /b 0
    )
    if "!str: =!"=="" (
        echo:
        exit /b 0
    )

    if /i "%useColor%"=="true" (
        call :setColor %2 %3
        echo !currentColor!!str!!resetColor!
    ) else (
        echo !str!
    )
    exit /b 0






:Write
    SetLocal EnableDelayedExpansion
    
    if "!ESC!"=="" call :setESC
    set resetColor=!ESC![0m

    set str=%~1

    if "!str!"=="" exit /b 0
    if "!str: =!"=="" exit /b 0

    if /i "%useColor%"=="true" (
        call :setColor %2 %3
        <NUL set /p =!currentColor!!str!!resetColor!
    ) else (
        <NUL set /p =!str!
    )
    exit /b 0

Image 1

Handling Contrast

Suppose we have defined a set of predefined colors and we want to use them to ensure consistency 

set color_primary=Blue
set color_mute=Gray
set color_info=Yellow
set color_success=Green
set color_warn=DarkYellow
set color_error=Red

If we output text using these as background colors we get

call :WriteLine
call :WriteLine "Default color on predefined background"
call :WriteLine

call :WriteLine "  Default colored background" "Default"
call :WriteLine "  Primary colored background" "Default" %color_primary%
call :WriteLine "  Mute colored background"    "Default" %color_mute%
call :WriteLine "  Info colored background"    "Default" %color_info%
call :WriteLine "  Success colored background" "Default" %color_success%
call :WriteLine "  Warning colored background" "Default" %color_warn%
call :WriteLine "  Error colored background"   "Default" %color_error%

Image 2

Things are a bit murky so let’s add one more function that will provide a contrasting foreground on whatever background we choose

:: Sets the name of a color that will providing a contrasting foreground




:setContrastForeground

    set background=%~1

    if "!background!"=="" background=Black

    if /i "!background!"=="Black"       set contrastForeground=White
    if /i "!background!"=="DarkRed"     set contrastForeground=White
    if /i "!background!"=="DarkGreen"   set contrastForeground=White
    if /i "!background!"=="DarkYellow"  set contrastForeground=White
    if /i "!background!"=="DarkBlue"    set contrastForeground=White
    if /i "!background!"=="DarkMagenta" set contrastForeground=White
    if /i "!background!"=="DarkCyan"    set contrastForeground=White
    if /i "!background!"=="Gray"        set contrastForeground=Black
    if /i "!background!"=="DarkGray"    set contrastForeground=White
    if /i "!background!"=="Red"         set contrastForeground=White
    if /i "!background!"=="Green"       set contrastForeground=White
    if /i "!background!"=="Yellow"      set contrastForeground=Black
    if /i "!background!"=="Blue"        set contrastForeground=White
    if /i "!background!"=="Magenta"     set contrastForeground=White
    if /i "!background!"=="Cyan"        set contrastForeground=Black
    if /i "!background!"=="White"       set contrastForeground=Black

    exit /B 0

We’ve already wired this up in the Write methods: If the foreground color is set as «Contrast» then the foreground will be seet as something that has a decent contrast to the given background.

To use we simply do

call :WriteLine "  Primary colored background" "Contrast" %color_primary%
call :WriteLine "  Mute colored background"    "Contrast" %color_mute%
call :WriteLine "  Info colored background"    "Contrast" %color_info%
call :WriteLine "  Success colored background" "Contrast" %color_success%
call :WriteLine "  Warning colored background" "Contrast" %color_warn%
call :WriteLine "  Error colored background"   "Contrast" %color_error%

Image 3

Interesting points

A challenge in this was outputting text via a CMD shell without a newline. The echo command, by default, adds a line feed. To output text in a CMD script without including a line feed simply use

<NUL set /p ="My string goes here"

Current passion project: CodeProject.AI Server. Please join in!

Chris is the Co-founder of the popular code-sharing site CodeProject.com, the digital advertising agency DeveloperMedia.com and the content marketing agency ContentLab.IO.

He’s been programming way too long and has been, in various guides, an astrophysicist, mechanic, mathematician, physicist, breeder of carnivorous plants, hydrologist, geomorphologist, defence intelligence researcher and then, when all that got a bit rough on the nerves, a serial entrepreneur.

Chris has programmed everything from FORTRAN on a CRAY to Python on a Pi, but generally leans on TypeScript, C#, and SQL for the front, middle and back bits of his applications. His current focus is on ensuring developers know enough about Artificial Intelligence to be dangerous.

title description author ms.author ms.date ms.topic

Windows Terminal Color Schemes

Learn how to create color schemes for Windows Terminal.

cinnamon-msft

cinnamon

04/14/2021

how-to

Color schemes in Windows Terminal

Windows Terminal lets you define your own color schemes, either by using the built-in preset schemes, or by creating your own scheme from scratch. To change schemes, you’ll need to edit the settings.json file in an editor such as Visual Studio Code.

Switching to a different color scheme

Launch Windows Terminal and then select the small downward-facing arrow in the title bar. This will open a pull-down menu that lists the available profiles on your system (for example, Windows PowerShell and Command Prompt) and some other options. Select Settings, and the settings.json file will open in your default text editor.

This file is where you can define various options per window or per profile. To demonstrate, let’s change the color scheme for the Command Prompt profile.

Look down the JSON file until you find the section that includes:

"commandline": "cmd.exe",
"hidden": false

Change it to read:

"commandline": "cmd.exe",
"hidden": false,
"colorScheme": "Tango Light"

Notice the extra comma in the hidden line. Once you save this file, Windows Terminal will update any open window. Open a Command Prompt tab if you haven’t already, and you’ll immediately see that the colors have changed.

Creating your own color scheme

The «Tango Light» scheme is included as a default option, but you can create your own scheme from scratch or by copying an existing scheme.

Color schemes can be defined in the schemes array of your settings.json file. They are written in the following format:

{
    "name" : "Campbell",

    "cursorColor": "#FFFFFF",
    "selectionBackground": "#FFFFFF",

    "background" : "#0C0C0C",
    "foreground" : "#CCCCCC",

    "black" : "#0C0C0C",
    "blue" : "#0037DA",
    "cyan" : "#3A96DD",
    "green" : "#13A10E",
    "purple" : "#881798",
    "red" : "#C50F1F",
    "white" : "#CCCCCC",
    "yellow" : "#C19C00",
    "brightBlack" : "#767676",
    "brightBlue" : "#3B78FF",
    "brightCyan" : "#61D6D6",
    "brightGreen" : "#16C60C",
    "brightPurple" : "#B4009E",
    "brightRed" : "#E74856",
    "brightWhite" : "#F2F2F2",
    "brightYellow" : "#F9F1A5"
},

Every setting, aside from name, accepts a color as a string in hex format: "#rgb" or "#rrggbb". The cursorColor and selectionBackground settings are optional.


Included color schemes

Windows Terminal includes these color schemes inside the defaults.json file, which can be accessed by holding alt and selecting the settings button. Color schemes can not be changed in the defaults.json file. For a color scheme to apply across all profiles, change it in the defaults section of your settings.json file.

[!NOTE]
You can print the current color scheme to the Terminal using colortool, with the commandline colortool -c

Campbell

Windows Terminal Campbell color scheme

Campbell Powershell

Windows Terminal Campbell Powershell color scheme

Vintage

Windows Terminal Vintage color scheme

One Half Dark

Windows Terminal One Half Dark color scheme

One Half Light

Windows Terminal One Half Light color scheme

Tango Dark

Windows Terminal Tango Dark color scheme

Tango Light

Windows Terminal Tango Light color scheme

More schemes

For more schemes, see the Custom Terminal Gallery section.

Терминал Windows поставляется с множеством функций, которые позволяют настраивать его и взаимодействовать с ним наиболее удобным для вас способом. Давайте рассмотрим несколько советов и приемов, которые помогут вам настроить свой терминал так, чтобы он идеально вам подходил. На момент публикации этого сообщения в блоге Windows Terminal имел версию 1.3, а Windows Terminal Preview — версию 1.4.

При первом запуске

При первой установке Windows Terminal вы будете поприветствованы строкой Windows PowerShell. Терминал Windows по умолчанию поставляется с профилями Windows PowerShell, командной строки и Azure Cloud Shell.

В дополнение к этим профилям, если у вас установлены какие-либо дистрибутивы Подсистемы Windows для Linux (WSL), терминал также автоматически создаст профили для этих дистрибутивов. Если вы хотите установить дополнительные дистрибутивы WSL на свой компьютер, вы можете сделать это после установки терминала и при следующем запуске терминала профили для этих дистрибутивов должны появиться автоматически. Эти профили будут иметь значок Tux, однако вы можете изменить значок дистрибутива в своих настройках, чтобы он соответствовал любому дистрибутиву, который у вас есть. Вы можете найти дополнительную информацию о WSL на сайте с документацией WSL.

Примечание. Вам нужно будет загрузить значки дистрибутивов, поскольку они не поставляются внутри терминала.

Кастомизация

Терминал Windows поставляется с большим набором настроек по умолчанию, включая цветовые схемы и сочетания клавиш. Если вы хотите просмотреть файл настроек по умолчанию, удерживайте Alt и нажмите кнопку «Настройки» в раскрывающемся меню.

Глобальные настройки профиля

Терминал Windows предоставляет вам возможность применить настройку к каждому профилю без необходимости дублировать настройку для каждой записи профиля. Это можно сделать, добавив параметр в массив "defaults" внутри объекта "profiles". Список всех возможных настроек профиля можно найти на странице настроек профиля в нашей документации.

"profiles":
    {
        "defaults":
        {
            // Поместите здесь настройки, которые вы хотите применить ко всем профилям.
            "fontFace": "Cascadia Code"
        },
        "list":
        []
    }

Кастомные цветовые схемы

Терминал Windows по умолчанию поставляется с набором цветовых схем. Однако, когда дело касается цветовых схем, есть неограниченные возможности. Отличное место для поиска дополнительных схем терминалов — terminalplash.com.

Если вы хотите создать свою собственную цветовую схему, terminal.sexy — отличный инструмент для создания и визуализации ваших собственных цветовых схем.

Совет. Вы можете сопоставить свою цветовую схему с фоновым изображением, используя палитру цветов PowerToys, чтобы получить коды цветов для использования в вашей схеме. PowerToys можно установить с помощью winget с winget install powertoys.

Настраиваемая командная строка

Вы можете придать стиль своей командной строке с помощью Oh my Posh и Terminal-Icons. Эти инструменты позволяют настроить внешний вид вашей командной строки с помощью цветов, глифов и смайликов. Чтобы запустить Oh my Posh с Posh-Git и PSReadline, следуйте этому руководству.

Oh my Posh недавно выпустили Oh my Posh 3, который имеет гораздо больше возможностей настройки и не является эксклюзивным только для PowerShell. Пройдя руководство, указанное выше, вы можете перейти на V3 с помощью следующей команды:

Update-Module -Name oh-my-posh -AllowPrerelease -Scope CurrentUser

Вы можете добавить немного изюминки своей оболочке, добавив пользовательские значки с помощью значков терминала. На изображении ниже также используется настраиваемая тема Posh для добавления смайлов в строку.

Примечание. Для отображения значков терминала вам необходимо установить шрифт Nerd Font.

Олдскульный шрифт

Для тех из вас, кто является поклонником эффекта ретро-терминала, отличное место для поиска шрифтов старой школы находится на странице https://int10h.org/oldschool-pc-fonts/.

Места для фоновых изображений

Обои для рабочего стола часто отлично смотрятся в Windows Terminal в качестве фоновых изображений. Отличные места для поиска фоновых изображений — это темы Windows, а также WallpaperHub. Терминал Windows поддерживает как изображения, так и гифки для фоновых изображений.

Другой популярный вариант — размещение логотипа оболочки, которую вы используете в качестве фонового изображения, чтобы помочь определить, в какой оболочке вы находитесь. Вы можете указать, где будет размещаться фоновое изображение, с помощью "backgroundImageAlignment" в настройках. Дополнительную информацию о настройках фонового изображения можно найти в нашей документации.

Функции

аргументы командной строки wt.exe

Вы можете запустить свой терминал в определенной конфигурации с помощью команды wt.exe. Некоторые параметры, которые вы можете установить, — это расположение вкладок и панелей, а также их начальные каталоги и профили. Вы можете сохранить настраиваемую команду как ярлык и закрепить ее на панели задач, чтобы открыть желаемую конфигурацию.

Если вы используете команду wt.exe внутри палитры команд, она вступит в силу в вашем текущем окне терминала, вместо того, чтобы запускать новый экземпляр терминала.

В этом примере профиль PowerShell откроется в текущем рабочем каталоге на новой вкладке с вертикальной панелью, на которой будет запущен ваш профиль по умолчанию.

wt -p "PowerShell" -d . ; split-pane -V

Full documentation about wt command line arguments can be found on our docs site.

Панели

Терминал Windows поддерживает панель для профилей. Вы можете открыть новую панель профиля, удерживая Alt и щелкнув профиль в раскрывающемся списке, или используя следующие сочетания клавиш:

  • Автоматическое разделение панели текущего профиля: Alt+Shift+D
  • Горизонтальное разделение панели профиля по умолчанию: Alt+Shift+Minus
  • Вертикальное разделение панели профиля по умолчанию: Alt+Shift+Plus

Вы также можете перемещать фокус по панелям, удерживая Alt и используя клавиши со стрелками. Наконец, вы можете изменить размер панелей, удерживая Alt + Shift и используя клавиши со стрелками. Дополнительную информацию о панелях можно найти на нашем сайте документации.

Копи-паст

В Терминале Windows по умолчанию используются сочетания клавиш для копирования и вставки Ctrl+C и Ctrl+V, соответственно. Если у вас нет выделения, Ctrl + C будет действовать как обычно, как команда break.

Вы можете настроить, какие клавиши вы хотите использовать для "копировать" и "вставить", редактируя привязки клавиш. Если вы удалите эти привязки клавиш из файла settings.json, терминал по умолчанию будет использовать Ctrl + Shift + C и Ctrl + Shift + V. Это может быть особенно полезно для пользователей WSL, которым нужны свободные Ctrl + C и Ctrl + V для своих оболочек.

Вы также можете выбрать, какое форматирование копируется в буфер обмена вместе с символами новой строки с помощью действий "copyFormatting" и "singleLine", связанных с командой копирования. Полную документацию по командам интеграции с буфером обмена можно найти на нашем сайте документации.

Определение привязок клавиш и действий

Большая часть настраиваемых свойств внутри Windows Terminal зависит от привязок клавиш и действий. Команды внутри массива "actions" будут автоматически добавлены в вашу палитру команд. Если вы хотите также использовать их с привязками клавиш, вы можете добавить к ним «ключи», чтобы вызывать их с клавиатуры. Полный список всех возможных команд можно найти на странице действий нашего сайта документации.

Отправка команд input

Терминал Windows дает вам возможность отправлять input в вашу оболочку с привязкой клавиш. Это можно сделать с помощью следующей структуры внутри массива "actions" .

{ "command": {"action": "sendInput", "input": ""}, "keys": "" }

Отправка ввода в оболочку с помощью сочетания клавиш может быть полезна для часто выполняемых команд. Одним из примеров может быть очистка экрана:

{ "command": {"action": "sendInput", "input": "clearr"}, "keys": "alt+k" }

Также может быть полезен переход к родительскому каталогу с привязкой клавиш.

{ "command": {"action": "sendInput", "input": "cd ..r"}, "keys": "ctrl+up" }

Вы также можете использовать эту функцию для запуска сборок или тестовых сценариев.

Начальный каталог WSL

На данный момент Терминал Windows по умолчанию устанавливает начальный каталог профилей WSL в качестве папки профиля пользователя Windows. Чтобы настроить запуск вашего профиля WSL в папке ~, вы можете добавить следующую строку в настройки своего профиля, заменив DISTRONAME и USERNAME соответствующими полями.

"startingDirectory": "//wsl$/DISTRONAME/home/USERNAME"

Многие пользователи Windows даже не подозревают о всех способностях этой операционной системы, когда дело касается настройки пользовательского интерфейса. Сегодня мы хотим рассказать о том, как поменять цвет в командной строке со стандартного на любой другой.

Кто-то из пользователей вообще не пользуется командной строкой, а кто-то использует ее постоянно. Категория последних пользователей знает, что стандартные цвета довольно скучные и очень быстро надоедают. В стандартном исполнении командная строка имеет черный фон и белый шрифт.

Как поменять цвет в командной строке?

Чтобы поменять cmd, можно воспользоваться двумя способами:

  • можно использовать специальные инструкции внутри командной строки;

  • можно использовать пользовательский интерфейс.

Как поменять цвет в командной строке при помощи инструкций

В данном случае алгоритм действий такой:

  1. Откройте командную строку любым удобным способом. Это можно сделать через основное меню или через командное окно «Выполнить», если ввести в нем команду: «cmd».

  2. В командной строке введите команду: «color -help». С помощью этой команды вы выведите список доступных цветов, поддерживаемых командной строкой. Но самое главное, что каждому цвету будет закреплено обозначение в виде цифры и буквы латинского алфавита.

  3. После того как вы определитесь с идентификаторами цветов для шрифта и фона, можете в командной строке задать команду, которая сменит цвета. Команда строится по такому шаблону: «color <идентификатор цвета фона> <идентификатор цвета шрифта>». 

К примеру команда может выглядеть так:

  • «color 46» будет задан красный фон и желтый цвет текста;

  • «color 02» будет задан черный фон и зеленый цвет текста;

  • «color 24» будет задан зеленый фон и красный цвет текста;

  • и другие комбинации.

Как видно, ничего сложного в таком способе изменить цвет командной строки нет, однако он может показаться сложным. Поэтому можно использовать другой способ — задействовать пользовательский интерфейс командной строки.

Как поменять цвет командной строки с помощью пользовательского интерфейса

В данном случае алгоритм действий будет следующий:

  1. Запустите командную строку любым удобным способом.

  2. Кликните по рамке командной строки правым кликом мыши, чтобы вызвать меню.

  3. В открывшемся меню выберите пункт «Свойства», чтобы вам открылось дополнительное окно настройки.

  4. В открывшемся окне настроек выберите вкладку «Цвета». В этой вкладке можно будет поменять цвет фона и текста командной строки. Причем, все доступные цвета будут располагаться тут же. Вам останется только выбрать что вы хотите отредактировать: фон или шрифт и определить им цвет. Тут же будет располагаться небольшое демонстрационное окно, где вы сможете сразу увидеть созданную комбинацию цветов в деле. 

  5. После всех манипуляций нужно будет сохранить изменения. 

Заключение

После прочтения этой статьи до конца, перед вами уже не будет стоять вопрос, как поменять цвет фона или текста командной строки. Если вы отлично дружите с командной строкой, тогда можете воспользоваться первым способом, который состоит специальны командных инструкций. Если вам «ближе» пользовательский интерфейс, тогда можете поменять цвет в cmd вторым способом.

Перевод статьи «PowerShell Themes and Windows Terminal Color Schemes – How to Customize Your Command Line».

Недавно я настраивал Windows Terminal для своей локальной среды разработки. В этой статье, написанной по горячим следам, я расскажу, как это делается.

Скачать Windows Terminal можно из Microsoft Store. Сделайте это, если еще не сделали и если у вас Windows 10. В более ранних версиях Windows Terminal недоступен.

Как настроить меню PowerShell

Одно из самых больших преимуществ Windows Terminal — возможность использовать несколько оболочек в одном окне, переключаясь между вкладками.

Вкладки Windows Terminal

Установив приложение, откройте терминал и нажмите на значок v вверху (рядом с открытой вкладкой). Вы увидите список доступных терминалов, но их мы пока проигнорируем.

В выпадающем меню выберите опцию «Settings» («Настройки»). Это откроет файл settings.json в вашем дефолтном текстовом редакторе.

В этом файле вы найдете довольно много настроек. Первое, на что нужно обратить внимание, — свойство profiles. Оно содержит все опции выбора терминала. Вложенное свойство defaults содержит дефолтные настройки для всех профилей, а свойство list — профили ваших терминалов.

Давайте рассмотрим свойство list. В настоящий момент оно содержит примерно такие значения:

    [
        {
            "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "name": "Windows PowerShell",
            "commandline": "powershell.exe",
            "hidden": false
        },
        {
            "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
            "name": "cmd",
            "commandline": "cmd.exe",
            "hidden": false
        }
    ],

Свойство list — это массив объектов. Оно определяет, какие исполняемые файлы могут загружаться через Windows Terminal. В нашем примере доступные опции — Windows PowerShell и приглашение командной строки CMD.

Давайте разберем свойства в этих объектах:

  • guid — уникальный идентификатор (Globally Unique Identifier). Используется исключительно для настройки defaultProfile, которую мы рассмотрим позже.
  • name — имя, отображаемое в выпадающем списке, когда вы открываете новую вкладку в Windows Terminal.
  • commandline — исполняемый файл, который загружается при открытии вкладки этого профиля.
  • hidden — булево значение, определяющее, появляется ли данный профиль в выпадающем списке для новой вкладки. Если вы нечасто пользуетесь каким-нибудь терминалом, можно поставить для него значение true, чтобы он не показывался в списке. Таким образом вы сохраните настройки этого терминала, но в выпадающем списке будете видеть только те терминалы, которые вам нужны.
В выпадающем меню есть только два терминала: Ubuntu-20.04 и Git Bash

Пример пользовательской настройки PowerShell Windows Terminal

Вполне вероятно, что вы сможете обойтись дефолтными настройками (это зависит от вашей среды разработки). Я большую часть работы выполняю в Windows Subsystems for Linux (WSL 2), но периодически пользуюсь Git Bash, поэтому у меня есть пара дополнительных опций.

      {
        "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
        "hidden": false,
        "name": "Ubuntu-20.04",
        "source": "Windows.Terminal.Wsl",
        "startingDirectory": "//wsl$/Ubuntu-20.04/home/nhcarrigan",
      },
      {
        "guid": "{00000000-0000-0000-ba54-000000000002}",
        "commandline": "%PROGRAMFILES%/git/usr/bin/bash.exe -i -l",
        "icon": "%PROGRAMFILES%/Git/mingw64/share/git/git-for-windows.ico",
        "name": "Git Bash",
        "startingDirectory": "%USERPROFILE%",
      },

Здесь вы видите несколько новых свойств:

  • source: Это свойство генерируется автоматически, когда Windows Terminal обнаруживает и генерирует профиль для исполняемого файла нового терминала. Не нужно добавлять это свойство, если вы конструируете профиль вручную.
  • icon: Используется для выбора, какой .ico-файл значка должен появляться рядом с именем в выпадающем списке новой вкладки.
  • startingDirectory: Путь к файлу, на который будет указывать Windows Terminal при загрузке новой вкладки с этим профилем.

Как создать пользовательский профиль в PowerShell

Windows Terminal не сгенерировал настройки профиля для Git Bash, так что мне пришлось сделать это вручную. Если вам нужно сделать то же самое, вот инструкция.

Сначала нужно сгенерировать значение guid. Оно имеет формат {00000000-0000-0000-0000-000000000000}. Сгенерировать его можно в Windows PowerShell, запустив [guid]::NewGuid(), или в WSL, запустив uuidgen.

Затем определите путь к исполняемому файлу в свойстве commandline. Значение %PROGRAMFILES% указывает на вашу директорию «Program Files» («Файлы программ») и учитывает разницу между путями для 32 и 64-битных приложений.

Если же ваша инсталляция расположена в вашей директории пользователя, вы можете использовать значение %USERPROFILE%. Флаги -i -l используются для того, чтобы Windows Terminal корректно загружал ваш файл .bashrc.

Свойство icon можно пропустить. Но если вы хотите, чтобы в выпадающем списке рядом с названием терминала отображался значок, здесь нужно указать путь к файлу изображения.

Свойство name указывать обязательно, оно определяет имя, которое будет показываться в выпадающем списке. Здесь я использовал «Git Bash», чтобы четко понимать, какой терминал откроет эта опция.

Наконец, для свойства startingDirectory нужно установить путь к директории, которую терминал будет «считать» дефолтной. У себя я поставил %USERPROFILE%, что указывает терминалу на мою директорию пользователя Windows. Благодаря этому я могу быстро переходить в мою папку «Документы» и прочие папки.

Как настроить ваш дефолтный профиль в PowerShell Windows Terminal

Если вы прокрутите назад файл settings.json, вы увидите свойство defaultProfile. Эта опция принимает значение guid, которое должно совпадать с одним из значений guid в вашем массиве list. Вкладка профиля, guid которого вы здесь укажете, будет загружаться при старте Windows Terminal.

Поскольку большую часть своей работы я делаю в WSL, я установил именно его guid в качестве значения для свойства defaultProfile.

 "defaultProfile": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",

Теперь при открытии приложения Windows Terminal сразу загружается экземпляр WSL.

Как составить собственную цветовую схему в PowerShell Windows Terminal

После настройки приложений можно сфокусироваться на стилях текста, чтобы сделать его покрасивее.

Под свойством profiles в файле settings.json вы найдете свойство schemes. Оно содержат массив объектов цветовых схем, выглядит это примерно так:

{
    "name" : "Campbell",

    "cursorColor": "#FFFFFF",
    "selectionBackground": "#FFFFFF",

    "background" : "#0C0C0C",
    "foreground" : "#CCCCCC",

    "black" : "#0C0C0C",
    "blue" : "#0037DA",
    "cyan" : "#3A96DD",
    "green" : "#13A10E",
    "purple" : "#881798",
    "red" : "#C50F1F",
    "white" : "#CCCCCC",
    "yellow" : "#C19C00",
    "brightBlack" : "#767676",
    "brightBlue" : "#3B78FF",
    "brightCyan" : "#61D6D6",
    "brightGreen" : "#16C60C",
    "brightPurple" : "#B4009E",
    "brightRed" : "#E74856",
    "brightWhite" : "#F2F2F2",
    "brightYellow" : "#F9F1A5"
},

Если вы использовали инструменты вроде пакета chalk в npm, вы можете узнать некоторые из значений цветов (purple здесь — это magenta в chalk).

Цвет строк демонстрирует указанные выше цветовые настройки.

Остальные свойства:

  • name: используется для назначения цветовой схемы одному из профилей, созданных нами ранее.
  • cursorColor: определяет цвет курсора.
  • selectionBackground: определяет цвет фона для выделенного текста.
  • background: задает цвет фона в вашем терминале.
  • foreground: задает цвет переднего плана для терминала. В моей текущей конфигурации я не ощутил никаких отличий при изменении этого значения.

Свойства цветов определяют конкретные цветовые коды. Для своего цветового профиля я установил следующие настройки:

    {
      "name": "Duotone Dark",
      "black": "#1f1d27",
      "red": "#d9393e",
      "green": "#2dcd73",
      "yellow": "#d9b76e",
      "blue": "#2488ff",
      "purple": "#de8d40",
      "cyan": "#6ad7d9",
      "white": "#b7a1ff",
      "brightBlack": "#353147",
      "brightRed": "#d9393e",
      "brightGreen": "#2dcd73",
      "brightYellow": "#d9b76e",
      "brightBlue": "#2488ff",
      "brightPurple": "#de8d40",
      "brightCyan": "#6ad7d9",
      "brightWhite": "#dfd1ed",
      "background": "#1f1d27",
      "foreground": "#b7a1ff"
    },

Советую поиграться с этими значениями, пока не подберете набор цветов, полностью удовлетворяющий ваши требования.

Цвета, соответствующие моим настройкам

Как связать цветовую схему с профилем

Настроив цвета, нужно как-то привязать их к профилю терминала. Эти настройки можно применить в свойстве defaults (свойство, вложенное в свойство profiles). Таким образом настроенная цветовая схема применится ко всем вашим терминалам. Но я предпочитаю настраивать разные цвета для разных терминалов, чтобы было удобно определять, в правильной ли вкладке я нахожусь.

Давайте применим эту цветовую схему для профиля WSL. Добавьте ключ colorScheme в ваш объект профиля и задайте ему значение — name вашей схемы. У вас должно получиться что-то вроде этого:

      {
        "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
        "hidden": false,
        "name": "Ubuntu-20.04",
        "source": "Windows.Terminal.Wsl",
        "startingDirectory": "//wsl$/Ubuntu-20.04/home/nhcarrigan",
        "colorScheme": "Duotone Dark",
      }

Перезапустив Windows Terminal, вы увидите уже новые цвета.

Дополнительные настройки внешнего вида

В моем объекте WSL-профиля есть несколько дополнительных настроек:

      {
        "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
        "hidden": false,
        "name": "Ubuntu-20.04",
        "source": "Windows.Terminal.Wsl",
        "startingDirectory": "//wsl$/Ubuntu-20.04/home/nhcarrigan",
        "colorScheme": "Duotone Dark",
        "useAcrylic": true,
        "acrylicOpacity": 0.5,
        "fontFace": "PxPlus IBM VGA8",
        "fontSize": 16,
        "experimental.retroTerminalEffect": true
      },

Вы можете включить их в объект своего профиля, подогнав по вкусу.

  • useAcrylic: В Windows 10 включает эффект прозрачности для фона терминала.
  • Если включен эффект прозрачности, при помощи acrylicOpacity можно отрегулировать его интенсивность. Чем ниже число, тем выше прозрачность.
  • fontFace: Выбор шрифта для терминала. Учтите, что выбранный шрифт должен быть установлен в вашем компьютере. Я использую шрифт PxPlus IBM VGA8.
  • fontSize: определяет размер шрифта (в pt).
  • experimental.retroTerminalEffect: Моя любимая настройка. Создает ретроэффект, напоминающий вид экрана старых CRT-мониторов.

Вот как выглядит итоговый результат моих настроек:

Итоговый результат настройки внешнего вида

Любую из этих настроек внешнего вида можно добавить в defaultSettings, чтобы применить глобально, ко всем профилям.

    "defaultSettings":
    {
        "useAcrylic": true,
        "acrylicOpacity": 0.1,
        "fontFace": "Cascadia Code",
        "fontSize": 10
    },

Дополнительные настройки в PowerShell Windows Terminal

Есть несколько дополнительных настроек, на которые стоит обратить внимание.

После свойства schemes идет свойство actions. В нем содержится массив настроек с сочетаниями клавиш.

По умолчанию в Windows Terminal копирование и вставка осуществляется нажатием Ctrl+Shift+C и Ctrl+Shift+V соответственно. Но вы можете назначить сочетание Ctrl+C и Ctrl+V:

    { "command": { "action": "copy", "singleLine": false }, "keys": "ctrl+c" },
    { "command": "paste", "keys": "ctrl+v" },

Опция singleLine со значением false предохраняет от разрыва строк при копировании текста.

Практически вверху вашего файла settings.json есть еще два свойства, влияющие на поведение при копировании текста из терминала:

  • copyOnSelect по умолчанию имеет значение false. Если поставить true, выделение текста мышью будет копировать этот текст в буфер.
  • copyFormatting тоже по умолчанию имеет значение false. Если поставить true, будет копироваться и форматирование текста (по умолчанию копируется как plain text).

Копировать текст из терминала в целом безопасно, но вставлять в него текст нужно с осторожностью. Windows Terminal имеет пару настроек, защищающих от ненужного риска:

  • largePasteWarning по умолчанию имеет значение true. В вашем файле settings.json его может и не быть. Эта настройка вызывает диалогове окно при попытке вставить более 5KB содержимого.
  • multiLinePasteWarning по умолчанию имеет значение true. В вашем файле settings.json его тоже может не быть. Эта настройка вызывает диалоговое окно при попытке вставить текст, содержащий разрывы строки (это распространенный прием атаки с захватом буфера обмена, суть ее в том, чтобы при вставке начали запускаться какие-то команды).

Я настоятельно рекомендую оставить эти настройки и ничего не менять.

Дополнительные источники

Поздравляю! Вот вы и сделали собственный вариант настройки Windows Terminal.

Чтобы узнать о других способах кастомизации, не раскрытых в этой статье, обратитесь к документации: Windows Terminal Customization Documentation.

Что касается цветовых схем, есть много готовых вариантов, которые можно скачать в виде JSON-файлов. Вы найдете их в Windows Terminal Themes. Именно там я нашел свою схему, которую лишь немного подкрутил по своему вкусу.

С новое приложение Windows TerminalВ Windows наконец-то появился терминал с вкладками, который может запускать запросы Cmd, PowerShell и Bash в одном окне. Его тоже можно настраивать — вы даже можете установить анимированные GIF в качестве фона.

Помимо фона, вы также можете изменить тему терминала. Будь то цвет текста или фона или стиль шрифта, вы можете сделать Терминал Windows своим собственным. Microsoft даже включила несколько предустановленных тем. Все, что вам нужно, — это текстовый редактор и базовые знания JSON. Если вы не знакомы с JSON, вы, вероятно, все равно можете внести изменения; мы проведем вас через это.

Первый шаг к настройке Windows Terminal — убедиться, что в Windows есть приложение по умолчанию, связанное с типом файла JSON. Лучше всего это сделать в проводнике.

Запустите проводник и найдите файл JSON. Если у вас его нет, создайте его. Щелкните правой кнопкой мыши проводник и «Создать», затем щелкните «Текстовый документ».

Переименуйте файл в test.json (удалив расширение .txt в процессе) и подтвердите, что хотите изменить расширение. Если вы не видите расширение файла .txt, скажите Проводнику, чтобы он отображал расширения файлов.

Подменю проводника файлов со стрелками, указывающими на Новый и Текстовый документ

Затем щелкните правой кнопкой мыши новый файл JSON и выберите параметр «Открыть с помощью». Выберите предпочитаемый текстовый редактор, будь то Блокнот ++ или Блокнот.

Теперь, когда у вас есть текстовый редактор для файлов JSON, пришло время внести изменения в настройки Windows Terminal. Откройте Терминал Windows и щелкните стрелку вниз в строке заголовка (справа от символа плюса), а затем выберите «Настройки».

Терминал Windows со стрелками, указывающими на стрелку вниз и параметры настроек.

Файл JSON запустится в редакторе, который вы выбрали ранее. Здесь вы можете внести все изменения.

Как изменить фон

Терминал Windows с котом, печатающим на фоне клавиатуры gif

Вы можете изменить фон на любой тип файла изображения, какой захотите — PNG, JPEG или даже анимированный GIF.

Чтобы изменить фон любой из оболочек, вам сначала нужно поместить файл изображения в место, которое приложение терминала может прочитать. Терминал Windows — это приложение универсальной платформы Windows (UWP), поэтому оно предпочитает использовать собственную папку AppData. AppData — это папка, которую вы обычно найдете в профиле пользователя и которая используется для хранения настроек программы. Приложения UWP создают настраиваемую папку AppData и используют ее вместо этого. Папка AppData Терминала Windows находится в:

%LOCALAPPDATA%PackagesMicrosoft.WindowsTerminal_8wekyb3d8bbweRoamingState

Просто скопируйте это в строку пути Проводника и нажмите Enter; вы попадете в нужное место. Поместите сюда свои файлы изображений, и Терминал Windows сможет использовать их в качестве фона.

Предоставление фонового изображения для Windows Terminal

Откройте «Настройки» в Windows Terminal и прокрутите до профиля, который хотите изменить. В разделе «профили:» есть несколько профилей. Каждому соответствует параметр в меню: Cmd, PowerShell, дистрибутивы Linux и т. Д. Вы можете определить, что есть что, изучив строку «командная строка» или «имя» в каждом разделе.

Чтобы изменить фоновое изображение для одного из этих разделов, под строкой «значок» добавьте следующие строки:

"backgroundImage" : "ms-appdata:///roaming/yourimage.jpg",
"backgroundImageOpacity" : 0.75,
"backgroundImageStretchMode" : "fill",

Где «yourimage.jpg» — это имя вашего изображения или файла в формате gif. Убедитесь, что каждая строка в разделе, кроме последней, заканчивается запятой.

Если вы используете файл GIF, вы можете вместо этого изменить «заливку» на «uniformToFill». У нас получился черный квадрат вокруг нашего GIF с «заливкой», но с «uniformToFill» все было нормально.

Установка фонового изображения в файле JSON Windows Terminal

Сохраните файл, и ваши изменения должны появиться немедленно, даже при открытом терминале Windows.

Как изменить привязки клавиш по умолчанию

Первый раздел относится к привязкам клавиш, если вам не нравится конкретное сочетание клавиш, вы можете изменить их здесь. Например, если вы хотите, чтобы Ctrl + e закрыл вкладки, вы найдете этот раздел:

{
 "command" : "closeTab",
 "keys" : 
 [
 "ctrl+w"
 ]
 },

Измените «ctrl + w» на «ctrl + e» (обязательно сохраните кавычки), а затем сохраните файл. Если вы хотите выровнять все в соответствии с существующим отступом, имейте в виду, что в файле используются пробелы вместо табуляции. И, как видно на наших снимках экрана, в файле используются окончания строк Unix, но большинство текстовых редакторов (даже Блокнот) могут без проблем обрабатывать окончания строк Unix.

Параметры привязки клавиш терминала Windows.

Как изменить цветовую схему по умолчанию

Терминал Windows поставляется с несколькими цветовыми схемами, которые изменяют цвет шрифта, цвет фона, форму курсора и т. Д. Вы можете выбирать темы индивидуально для командной строки, Bash и PowerShell.

Чтобы переключить тему по умолчанию, сначала найдите профиль оболочки, который вы хотите, прокрутив вниз до раздела «профили:» и просмотрев запись командной строки в каждом подразделе.

Командная строка находится, например, в: «commandline»: «cmd.exe». Затем измените «colorScheme»: «Campbell» на цвет по вашему выбору. Вы можете выбрать Кэмпбелл, Половину тьмы, Половину света, Соляризованную тьму и Соляризованный свет. Например, если вам нужен солнечный свет, вы должны изменить строку цветовой схемы на «colorScheme»: «Solarized Light. Это те же цветовые схемы, которые использует утилита Microsoft colortool.

Вариант цветовой схемы терминала Windows для cmd.exe.

Терминал Windows довольно интересен, и он дает вам небольшой вкус прежней функции Microsoft Windows Sets. Функциональность с вкладками здесь не такая надежная, но это намек на то, что могло быть. По крайней мере, теперь вам не нужно переключать программы для перехода между командной строкой, Powershell и Bash.

Понравилась статья? Поделить с друзьями:
  • Как поменять цвет текста в командной строке windows 10
  • Как поменять цвет текста в видеоредакторе windows 10
  • Как поменять цвет субтитров в проигрывателе windows
  • Как поменять цвет строки пуск на windows 10
  • Как поменять цвет стрелки мыши на windows 10