Вступление (лирическое)
Привет, Хабр!
Для меня, автоматизатора-линуксоида, использвание Windows на основной рабочей станции первое время было просто болью и страданием. Но с этим я ничего поделать не мог: корпоративные стандарты и софт, кторый работает только на Windows. В попытке найти золотую середину, я прошёл три стадии. Сначала я только изредка переключался на винду по необходимости. Затем виртуалка на virtualbox-е с X-server-ом. После этого захотелось хоть чуть-чуть того консольного комфорта, который был на линуксе (я использовал Terminator в качестве основного терминала).
После яростного гугления и установки всех эмуляторов терминала под Windows, которые только удалось найти, оказалось, что нет ни одного хоть немного подходящего мне. А хотелось, чтобы вёл себя терминал максимально приближенно к линуксовым вариантам. Например, естественно нужны табы, сплит, выделение текста с прокруткой (когда нужно выделить больше чем один экран), копирование текста в буфер сразу при выделении и т.д.
В итоге я получил «комбайн» как на скриншоте ниже. О том, как это настроить, можно узнать, заглянув под кат.
До того, как получить результат, я даже всерьёз задумался о своём велосипеде (портирование, написание своего). Но лень и здравый смысл взяли свое…
В процессе поиска хорошего терминала, я наткнулся на хабра-топик: Альтернативный терминал для Windows. ConEmu — приложение действительно классное, но оно не для тех, кто долгое время использовал линукс-терминалы. Затем я наткнулся на Mintty (был установлен вместе с Cygwin). Программка отличная, ведёт себя максимально близко к таким терминалам как Gnome-terminal и Terminator, но нет табов.
Оказалось, что вышеупомянутый ConEmu умеет запускать GUI-приложения внутри своих табов! И тут искра надежды начала разгораться… Но хватит лирики, пора приступить к делу!
Установка нужных программ
ConEmu ставим отсюда: code.google.com/p/conemu-maximus5/
Mintty я ставил вместе с Cygwin: cygwin.com/install.html
Настройка
В ConEmu идём в Settings->Tasks и, нажимая плюсик, добавляем нужные таски как на скриншоте:
В нашем случае это:
Имя таска | Команда |
cygwin | C:\Cygwin\bin\mintty.exe |
ssh_local | C:\Cygwin\bin\mintty.exe D:\Work\VMssh.bat |
cmd | cmd |
powershell | powershell |
Осторожно! Адский CMD!
VMssh.bat:
@ECHO OFF SET VMNAME=xubuntu CALL D:\Work\VMstart.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 следующим образом:
Также нужно прописать в fstab на виртуалке, чтобы автоматиечски монтировалось при старте.
Заключение
В результате я получил терминал, в котором хоть как-то можно жить. Я ни в коем случае не претендую на исключительность этого решения, но надеюсь кому-то пригодится. Отдельный плюс такого решения — общий текстовый буфер и общие папки. Таким образом, работаем с линукс-виртуалкой так же как и с остальными табами в терминале.
Скрипты и конфиг mynttyrc закинул на git-hub: github.com/morkot/windows-terminal-mutant.git
Для тех, кому не нужны GUI-табы и кто использует tmux, есть статья моего коллеги примерно на ту же больную тему: habrahabr.ru/post/196128/.
Особая благодарность хабраюзеру Maximus5 за отличный Windows терминал ConEmu!
ссылка на оригинал статьи http://habrahabr.ru/company/epam_systems/blog/204368/
Добавить комментарий