Казалось бы, что может быть более неизменным, нежели Командная строка Windows? Это приложение, словно живое ископаемое, кажется, помнит времена первых версий Windows NT и Windows 95, возможности тоже остались где-то там, в далеких и светлых днях. То, что терминал нужно менять было понятно еще давно, но не было понятно как. Ведь терминальные приложения в современных ОС это не только командная строка, но и PowerShell, и консоли WSL. Но Microsoft отлично справилась с этой проблемой, новое приложение Windows Terminal способно не только объединить все в одном месте, но и существенно расширить возможности привычных оболочек.
Взаимоотношения Windоws и командной строки долгое время были достаточно прохладными. Основная парадигма управления системой строилась вокруг графических инструментов и мыши, а командная строка рассматривалась как дополнительный атрибут и инструмент восстановления. Ни о каком полноценном управлении системой через терминал речи не шло, даже для автоматизации предлагался отдельный скриптовый язык VBScript.
Все стало меняться с выходом PowerShell и появлением Core-версий Windows - постепенно Microsoft стала осознавать важность консольного инструмента для управления системой, и чаша весов снова качнулась в другую сторону, сегодня ряд продуктов не имеют полноценных графических инструментов настройки, зато предлагают для этого PowerShell. Подсистема Windows для Linux также не предполагает никаких графических инструментов, снова напоминая о том, что терминал не пережиток прошлого, а мощный и удобный инструмент.
Windows Terminal - это современное приложение, демонстрирующее новый взгляд Microsoft на старые вещи, причем не только новый, но и достаточно неожиданный. Это свободное ПО под лицензией MIT исходные коды которого расположены на GitHub и принять участие в его разработке может каждый. Как видим, времена действительно меняются, и компания, еще недавно называвшая открытое ПО "раковой опухолью" теперь выпускает под открытой лицензией один из основных инструментов администрирования.
Продукт доступен в двух версиях: стабильной Windows Terminal и версии для разработчиков и инсайдеров Windows Terminal Preview. Последняя получает все новые функции непосредственно после их разработки и является наиболее интересной и в дальнейшем мы будем рассматривать именно ее.
Рекомендованным способом получения приложения является Microsoft Store, но также возможны и альтернативные методы установки, более подробно о них можно узнать на странице GitHub.
Прежде всего переопределим командную оболочку по умолчанию. Для этого найдите guid нужного профиля и скопируйте его в опцию defaultProfile:
defaultProfile": "{574e775e-4f2a-5b96-acle-a2962a402336}",
Затем включим привычное Linux-пользователям поведение, когда текст копируется при его выделении и потом может быть вставлен правым кликом мыши:
copyOnSelect": true,
Перейдем к самим профилям. Их настройки достаточно просты и очевидны: это guid, наименование, источник или командная строка запуска и видимость. Если вы не хотите видеть профиль в списке выбора, то просто установите опцию hidden в true, мы таким образом скрыли оболочку Azure.
hidden": true,
Еще одной долгожданной особенностью являются панели, позволяющие разделить окно терминала на несколько областей. Для разделения по горизонтали нажмите Alt+Shift++, для разделения по вертикали Alt+Shift+-, чтобы закрыть панель используйте Ctrl+Shift+W. При этом в новой панели будет открыта командная оболочка по умолчанию. Чтобы открыть в панели другой профиль просто выберите его из списка с зажатой клавишей Alt. Для дублирования текущего профиля нажмите Alt+Shift+D. В заголовке вкладки будет отображаться наименование текущей панели.
Для изменения размера панелей используйте клавиши со стрелками одновременно зажав Alt + Shift, при этом будет меняться размер активной панели.
Терминал поддерживает практически полную кастомизацию. Можно изменять цвет, шрифт, фоновое изображение, прозрачность панелей, задавать иконки, также поддерживаются темы, включающие множество настроек для различных вариантов отображения. Мы не будем углубляться так далеко, большее количество настроек можно найти в документации: https://docs.microsoft.com/ru-ru/windows/terminal/get-started.
Но некоторые настройки мы все-же сделаем. По умолчанию все панели выглядят одинаково, что может приводить к некоторой путанице, поэтому есть смысл изменить цвет фона, чтобы быстро понимать, где какая консоль запущена, для этого добавьте в профиль опцию background с шестнадцатеричным кодом цвета, например, "родной" цвет для PowerShell:
"background": "#012456",
Мы указали для разных консолей привычные цвета и сразу стало гораздо удобнее:
[guid]::NewGuid()
{
"guid": "{437dc877-4e9d-405a-8c86-837093861986}",
"name": "Debian 1C Server",
"commandline": "ssh andrey@192.168.233.141",
"icon": "ms-appdata:///roaming/icons8-console-32.png",
"hidden": false
},
Синтаксис довольно прост, но поясним некоторые параметры. Опция commandline указывает строку запуска, а в опции icon мы задали индивидуальную иконку профиля, для этого можно использовать как ico-файлы, так и обычные png. Иконку следует разместить в специальной директории, для Windows Terminal это:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState
Для Windows Terminal Preview:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe\RoamingState
После чего к ним можно будет обращаться как:
ms-appdata:///roaming/имя_файла
{
"guid": "{5507e755-60ae-4d8e-aa01-e75da98b95c8}",
"name": "PSQL Shell",
"commandline": "C:\\Program Files\\PostgreSQL 1C\\10\\bin\\psql.exe -h localhost -U postgres -d postgres -p 5432",
"icon": "ms-appdata:///roaming/PostgreSQL_logo.png",
"hidden": false
}
Обратите внимание, если это последний профиль в списке, то запятая после закрывающей фигурной скобки не ставится.