Нет цветов при запуске собственного приложения оболочки Windows из Mintty

2898
Pete

Я установил Cygwin (я не очень опытен с ним) и пытаюсь запустить собственное приложение оболочки Windows из него (msbuild.exe, который является средством сборки для .NET Framework, если быть точным).

Когда я запускаю приложение из обычной оболочки cygwin bash, выходные данные приложения отображаются, как и должно, с цветами текста, которые я обычно вижу в командной строке Windows.

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

Это можно исправить?

2
Программы Cygwin (emacs, mc) дают вам цвет в мятном? Dennis Williamson 13 лет назад 0

3 ответа на вопрос

3
ak2

Скорее всего, приложение использует консольные API-интерфейсы Windows, а не цветовые последовательности ANSI. Mintty - это Unix-терминал (основанный на реализации pty Cygwin), а не оболочка консоли Windows, поэтому эти вызовы API консоли не будут иметь никакого эффекта.

В настоящее время нет способа сделать эту работу в мятном, хотя есть различные довольно сложные идеи о том, как можно решить эту проблему, на http://code.google.com/p/mintty/issues/detail?id=56 . Между тем, обходной путь - просто запустить соответствующую программу в окне консоли. Утилита cygstart - это удобный способ сделать это.

1
Gilles

Нативные консольные программы Windows часто плохо работают в эмуляторах терминала Cygwin, таких как mintty. См. Документацию Cygwin для объяснения. Не видеть цвета - один из возможных симптомов; худшим симптомом является невозможность ввода в приложение.

Существуют альтернативные консольные программы, которые намного лучше, чем встроенная консоль. Мой текущий выбор терминалов под Windows подходит для программ cygwin или stdio и console2 для консольных программ Windows. Тема уже обсуждалась на этом сайте несколько раз:
Расширенное редактирование командной строки для Windows?
https://superuser.com/questions/87441/alternative-windows-command-shell-and-console
Windows "cmd" Заменяет бесплатную замену
cmd / powershell обычной копировальной пастой

0
V.Leymarie

Вы можете использовать bash.exe вместо mintty:

Щелкните правой кнопкой мыши ярлык cygwin и измените его с C: \ cygwin64 \ bin \ mintty.exe -i /Cygwin-Terminal.ico - на C: \ cygwin64 \ bin \ bash.exe --login -i