- PVSM.RU - https://www.pvsm.ru -

Ламповый Linux-like терминал в Windows

Вступление (лирическое)

Привет!

Для меня, автоматизатора-линуксоида, использвание Windows на основной рабочей станции первое время было просто болью и страданием. Но с этим я ничего поделать не мог: корпоративные стандарты и софт, кторый работает только на Windows. В попытке найти золотую середину, я прошёл три стадии. Сначала я только изредка переключался на винду по необходимости. Затем виртуалка на virtualbox-е с X-server-ом. После этого захотелось хоть чуть-чуть того консольного комфорта, который был на линуксе (я использовал Terminator в качестве основного терминала).

После яростного гугления и установки всех эмуляторов терминала под Windows, которые только удалось найти, оказалось, что нет ни одного хоть немного подходящего мне. А хотелось, чтобы вёл себя терминал максимально приближенно к линуксовым вариантам. Например, естественно нужны табы, сплит, выделение текста с прокруткой (когда нужно выделить больше чем один экран), копирование текста в буфер сразу при выделении и т.д.

В итоге я получил «комбайн» как на скриншоте ниже. О том, как это настроить, можно узнать, заглянув под кат.

Ламповый Linux like терминал в Windows


До того, как получить результат, я даже всерьёз задумался о своём велосипеде (портирование, написание своего). Но лень и здравый смысл взяли свое…

В процессе поиска хорошего терминала, я наткнулся на хабра-топик: Альтернативный терминал для Windows [1]. ConEmu — приложение действительно классное, но оно не для тех, кто долгое время использовал линукс-терминалы. Затем я наткнулся на Mintty (был установлен вместе с Cygwin). Программка отличная, ведёт себя максимально близко к таким терминалам как Gnome-terminal и Terminator, но нет табов.

Оказалось, что вышеупомянутый ConEmu умеет запускать GUI-приложения внутри своих табов! И тут искра надежды начала разгораться… Но хватит лирики, пора приступить к делу!

Установка нужных программ

ConEmu ставим отсюда: code.google.com/p/conemu-maximus5/ [2]
Mintty я ставил вместе с Cygwin: cygwin.com/install.html [3]

Настройка

В ConEmu идём в Settings->Tasks и, нажимая плюсик, добавляем нужные таски как на скриншоте:

Ламповый Linux like терминал в Windows

В нашем случае это:

Имя таска Команда
cygwin C:Cygwinbinmintty.exe
ssh_local C:Cygwinbinmintty.exe D:WorkVMssh.bat
cmd cmd
powershell powershell

Осторожно! Адский CMD!

VMssh.bat:

@ECHO OFF
SET VMNAME=xubuntu

CALL D:WorkVMstart.bat %VMNAME%

ssh user@localhost

Вызывает скрипт старта виртуалки, VMNAME заменить на нужное.

VMstart.bat:

@ECHO OFF

SET VMNAME="%1"
SET isVMRun=

IF [%1] == [] (
  echo Empty parameter VMNAME. Usage: %0 [name of vm]
  EXIT /B 1
)

FOR /F %%i IN ('VBoxManage list runningvms') DO SET isVMRun=%%i

IF NOT "%isVMRun%" == "%VMNAME%" (
 Vboxmanage startvm %VMNAME% --type headless
)

Проверяет запущена ли виртуалка и если нет, то запускает её. Таким образом, мне не нужно помнить запущена ли виртуалка, запускать отдельно VirtualBox и делать дополнительные клики.

Немного «свистелок»

Xoria-like тема для Mintty (~/.minttyrc):

ForegroundColour=208,208,208
BackgroundColour=28,28,28
CursorColour=255,175,0
IMECursorColour=128,224,160
Black=12,12,12
BoldBlack=10,10,10
Red=215,135,135
BoldRed=223,135,135
Green=175,215,135
BoldGreen=175,223,135
Yellow=247,247,175
BoldYellow=255,255,175
Blue=135,175,215
BoldBlue=135,175,223
Magenta=215,175,215
BoldMagenta=223,175,223
Cyan=175,215,215
BoldCyan=175,223,223
White=230,230,230
BoldWhite=238,238,238
BoldAsFont=no
Font=Consolas
FontHeight=11
CursorType=block
FontSmoothing=full
Term=xterm-256color
Scrollbar=none
Locale=
Charset=

Общая рабочая папка (файлы доступны на винде и на виртуалке) — нужно настроить в VirualBox-e следующим образом:

Ламповый Linux like терминал в Windows

Также нужно прописать в fstab на виртуалке, чтобы автоматиечски монтировалось при старте.

Заключение

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

Скрипты и конфиг mynttyrc закинул на git-hub: github.com/morkot/windows-terminal-mutant.git [4]

Для тех, кому не нужны GUI-табы и кто использует tmux, есть статья моего коллеги примерно на ту же больную тему: habrahabr.ru/post/196128/ [5].

Особая благодарность читательу Maximus5 [6] за отличный Windows терминал ConEmu!

Автор: morkot

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/52811

Ссылки в тексте:

[1] Альтернативный терминал для Windows: http://habrahabr.ru/post/164687/

[2] code.google.com/p/conemu-maximus5/: http://code.google.com/p/conemu-maximus5/

[3] cygwin.com/install.html: http://cygwin.com/install.html

[4] github.com/morkot/windows-terminal-mutant.git: https://github.com/morkot/windows-terminal-mutant.git

[5] habrahabr.ru/post/196128/: http://habrahabr.ru/post/196128/

[6] Maximus5: http://habrahabr.ru/users/maximus5/

[7] Источник: http://habrahabr.ru/post/204368/