Maximus5 / ConEmu

Customizable Windows terminal with tabs, splits, quake-style, hotkeys and more
https://conemu.github.io/
BSD 3-Clause "New" or "Revised" License
8.61k stars 574 forks source link

Problems with ConEmu when activated "Automatic attach to cmd..." #604

Open Karlson2k opened 8 years ago

Karlson2k commented 8 years ago

Last 2 or 3 versions have problems with attaching to started applications when staring .cmd files: ConEmu window opens, but empty, started cmd executed in background. Menu->Real console show nothing. Observed when staring .cmd from Far manager in separate window (by Shift-Enter) or if starting .cmd from shortcut on desktop.

PS. Могу уточнить по-русски. :smile:

Maximus5 commented 8 years ago

ConEmu.exe -log и воспроизвести проблему делая попутно скриншоты. Логи и скриншоты заархивировать и ссылку в студию.

Karlson2k commented 8 years ago

https://onedrive.live.com/redir?resid=391A0B9ECC961A3F!1146&authkey=!AIfDvUPmlVTpmmk&ithint=file%2czip

Maximus5 commented 8 years ago

Новые логи с новой версии, если повторяется.

Karlson2k commented 8 years ago

https://onedrive.live.com/redir?resid=391A0B9ECC961A3F!1154&authkey=!AED-GNYpiAY1W78&ithint=file%2czip Всё то же самое, но, как я понимаю, кроме логов пока меняться нечему.

Пояснение - возможно поможет разобраться: запускается .cmd-файл, который запускает git команды. А git внутри запускает Msys2 sh.exe и компанию.

При запуске выскакивает окно на долю секунды, сразу же закрывается и остаётся висеть пустое окно ConEmu, при этом .cmd файл продолжает работать где-то в фоне (видно только по менеджеру процессов). После того, как .cmd отработал - окно ConEmu продолжает висеть по-прежнему. Закрывается только по крестику (или через меню).

Karlson2k commented 8 years ago

https://onedrive.live.com/redir?resid=391A0B9ECC961A3F!1165&authkey=!ALH5NIGIb5iCvUo&ithint=file%2czip

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

Karlson2k commented 8 years ago

Кстати, ещё более простой способ: Windows Run: conemu64 -log2 /cmd cmd.exe В открывшемся окне: start cmd.exe -new_console:z Результат полностью аналогичен предыдущему, хотя ConEmu не должно вроде как перехватывать. Логи: https://onedrive.live.com/redir?resid=391A0B9ECC961A3F!1166&authkey=!AE6c24ZgozHwIok&ithint=file%2czip

Кстати, во всех неудавшихся запусках в ConEmu-srv-*.log в строчке CurSize= в конце - мусор (вместо наименования шрифта?). Совпадение?

Maximus5 commented 8 years ago

перехват start из консоли ConEmu не имеет ничего общего с DefTerm. Поэтому и -new_console:z не влияет.

Karlson2k commented 8 years ago

-new_console:z влияет только на Default Terminal? Тогда почему если из cmd.exe в ConEmu запускать копию cmd командой start cmd.exe (без параметра), то вторая копия cmd.exe прекрасным образом запускается и прикрепляется второй вкладкой в том же окне ConEmu? А с параметром - как описано выше.

Maximus5 commented 8 years ago

Таки да, -new_console:z отключает перехват start. Но проблемы я не наблюдаю. Даже на семерке. Из вашего описания я вообще не понимаю, что у вас происходит. Начальные скриншоты с «пустым» окном вообще к чему относятся?

Karlson2k commented 8 years ago

Во всех перечисленных случаях - после запуска чего-либо появляется пустое окно ConEmu, вместо окна с каким-то реальным выводом. А реальная работа идёт где-то в фоновом процессе без визуализации. Кстати, на скриншотах видно, что висит ConEmu64 без ConEmuC. Не знаю, что ещё запостить. Может что-то ещё в логи добавить? Или собрать из исходников и пройтись дебагером?

Maximus5 commented 8 years ago

Почему окно пустое? Судя по вашему описанию, у вас уже есть одно окно, как минимум с одной вкладкой, в которой вы пускаете start cmd. То есть ожидается либо вторая вкладка, либо окно стандартного терминала. Нет?

Karlson2k commented 8 years ago

Run: conemu64 /cmd cmd.exe - открывается окно ConEmu с одной вкладкой "cmd" Из этого терминала запускаю start cmd.exe -new_console:z - открывается на долю секунды окно, сразу исчезает, открывается новое окно ConEmu с единственной пустой вкладкой "ConEmu". Окно висит, пока его не закроешь вручную. Дополнительный процесс cmd.exe продолжает висеть в фоне. Поскриншотил процесс запуска - отловил заголовок окна, которое мелькает: [путькцмд]\cmd.exe - "[путькConEmu]\Cmd_Autorun.cmd" "/GHWND=NEW"

Maximus5 commented 8 years ago

Зачем мешать слонов с тараканами?

https://conemu.github.io/en/SettingsComspec.html

Karlson2k commented 8 years ago

@Maximus5 Какой вывод предполагается из этой ссылки? Это как-то объясняет пустое окно ConEmu?

Karlson2k commented 8 years ago

Сделал Unregister и Clear для autorun (кстати, не очень понятна между ними разница). Теперь при запуске в ConEmu новой оболочки командой start cmd.exe -new_console:z происходит аттач в то же окно второй вкладкой. Зато при запуске из Far .cmd файла командой Shift-Enter открывается окно стандартного терминала, только оно называется ConEmuC64.exe. Force as default terminal - установлено.

Maximus5 commented 8 years ago

Верится как-то с трудом... Давайте новые логи со скриншотами по шагам. А заодно свои настройки (xml).

кстати, не очень понятна между ними разница

если там только ConEmu - никакой.

Karlson2k commented 8 years ago

кстати, не очень понятна между ними разница

если там только ConEmu - никакой.

Может тогда стоит дизейблить Clear? Заодно дизейблить одну из двух: Register или Unregister. Тогда юзверю будет куда очевидней, что делать. Кстати, заодно делать Unrigester при сбросе настроек.

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

Maximus5 commented 8 years ago

Смысл что-то дизеблить отсутствует. Пример: обновить регистрацию после установки ConEmu в новую папку. С помощью Clear вычистить возможную заразу, которую зарегистрировали другие приложения (возможно злонамеренно).

Maximus5 commented 8 years ago

Логи и мои настройки чуть позже выложу

Пошаговые скриншоты. Хотя еще лучше видео сделать.

Karlson2k commented 8 years ago

Fully optional, but Если в Autorun ничего нет - можно дизейблить Unregister и Clear (можно нажать Register). Если присутствует строчка, соответствующая запущенному ConEmu - дизейблить Register и Clear (можно нажать Unregister). Если присутствует строчка не соответствующая запущенному ConEmu - дизейблить Unregister (можно нажать Register или Clear). Логика такая. Что сейчас произойдёт, если нажать Unregister, если в Autorun записано что-то левое? Произойдёт очистка или ничего? Неочевидно. А как понять, что там записано что-то не левое? Только запустить regedit и посмотреть? В общем, сейчас приходится для верности нажимать обе Unregister и Clear, так как иначе - результат совсем не очевиден.

Karlson2k commented 8 years ago

https://onedrive.live.com/redir?resid=391A0B9ECC961A3F!1178&authkey=!AD8LSu3JTOv136g&ithint=file%2c7z Решил обойтись без видео, так как всё очень просто. Расписываю по шагам:

  1. Запускаю ConEmu: Win+R: ConEmu64 - log2
  2. В запустившемся ConEmu c Far: меняю активную директорию на нужную
  3. Запускаю .cmd файл комбинацией Shuft-Enter Вылезает окно стандартного терминала с названием ConEmuC64 с очень мелким шрифтом, в котором исполняется .cmd файл.
Maximus5 commented 8 years ago

Так на что вы жалуетесь?

Karlson2k commented 8 years ago

Хотелось бы запуска ConEmu, а не ConEmuC, в котором ничего не видно.

Maximus5 commented 8 years ago

Сто лет как работает и ничего не менялось:

/ConEmu/Far3_lua/ConEmu.ShiftEnter.lua

Karlson2k commented 8 years ago

Значит я пользуюсь ConEmu лет 200. И раньше как-то работало без этого.

Вообще-то хотелось бы запуска в отдельном ConEmu окне, а не в новой вкладке в текущем. Раньше всё прекрасно работало (видимо, с Default Terminal или что-то ещё помогало).

Karlson2k commented 8 years ago

Видимо при сбросе настроек - отвалилась настройка Multiple consoles in one ConEmu. Теперь всё прекрасно в отдельном окне. А настройка Automatic attach... несовместима как-то с Default Terminal?

Karlson2k commented 8 years ago

Кстати, строчка для AutoRun в настройках у меня была всегда пустой, я даже не думал, что там бывает какая-то надпись. Сейчас, когда заново прописывал - надпись появилась. Перезапуск ConEmu - надписи нет. Нажатие кнопок Unregister и Clear не дают никакого результата. Хотя в реестре AutoRun остаётся. Запуск от Админа - тоже ничего не даёт. Настройки не могут очистить Autorun.

Karlson2k commented 8 years ago

Как только autorun прописал - глюк вернулся. Запускаю .cmd-файл (хоть через Win-R, хоть через shortcut на декстопе) командой "X:\bla-bla\eclipse-m\eclipse-mgw64.cmd" -new_console:z - открывается новое окно ConEmu, но пустое. А новый процесс cmd.exe висит где-то в фоне. В Autorun прописано "Y:\lya-lya\Far Manager\ConEmu\Cmd_Autorun.cmd" "/GHWND=NEW"

Maximus5 commented 8 years ago

Automatic attach - фича для обделенных. Не рекомендуется.

Maximus5 commented 8 years ago

Ну не влияет -new_console:z на Autorun. Вообще. В принципе это влияние не возможно.

Karlson2k commented 8 years ago

Default Terminal - тоже установлено. Или это взаимоисключающе? В доках не видно ничего об этом.

Karlson2k commented 8 years ago

@Maximus5 Переименовать в "Баг с аттачем к ConEmu при использовании Autorun"?

Maximus5 commented 8 years ago

Можно. А также проверить новую версию. Хотя Autorun все-равно не рекомендуется - очень много там допущений.

Karlson2k commented 8 years ago

Почти всё пофиксилось. Осталось ерунда: если включено "Automatic attach..." и Default Terminal (не проверял при выключенном), и запустить cmd командой cmd -new_console:z, то запускается cmd внутри ConEmu (как и ожидалось c autoattach), но после команды exit окно ConEmu остаётся висеть с пустой вкладкой.

Maximus5 commented 8 years ago

https://conemu.github.io/en/SettingsTaskBar.html#action-on-closing-last-console-tab-and-cross-clicking

Karlson2k commented 8 years ago

@Maximus5 Установлено "Close ConEmu with last tab" и "Quit on close". Поведение отличается в зависимости от параметра -new_console:z. Если запустить cmd без этого параметра, то, видимо, срабатывает Default Terminal и после команды exit закрывается вкладка и само окно. Если запустить cmd -new_console:z, то срабатывает autoattach, судя по строчкам

ConEmuC build 160403a x64. (c) 2009-2016, ConEmu.Maximus5@gmail.com
Starting attach autorun (NewWnd=YES)

и в этом случае не закрывается вкладка и соответственно окно после exit. Отличие только в способе запуска, параметры не меняются.

Karlson2k commented 8 years ago

Всё даже ещё забавней. Если запустить с автоаттачем командой cmd -new_console:z, то в настройках галка Close ConEmu with last tab всегда снята. Если её установить, нажать Save и опять зайти в настройки, то галка опять будет снята. При этом, если запусть просто командой cmd (Default Terminal - включен), то чекбокс будет отмечен. Зависит только от способа запуска.