Terminal: Измените ОС Windows для поддержки терминала по умолчанию [defterm]

Созданный на 7 мая 2019  ·  33Комментарии  ·  Источник: microsoft/terminal

Эта проблема отслеживает работу, необходимую для добавления поддержки «терминала по умолчанию» в Windows.

Это не специфично для терминала, но Windows Terminal выиграет от этого.


оригинальный контент

Этот баг-трекер контролируется командой разработчиков консоли Windows и другими техническими специалистами. Нам нравятся детали!

Если у вас есть запрос на функцию, отправьте сообщение в UserVoice .

Важно: сообщая о BSOD или проблемах безопасности, НЕ прикрепляйте дампы памяти, журналы или трассировки к проблемам Github . Вместо этого отправьте дампы/трассировки по адресу [email protected] со ссылкой на эту проблему GitHub.

Пожалуйста, используйте эту форму и опишите свою проблему, кратко, но точно, как можно подробнее.

  • Номер вашей сборки Windows: Microsoft Windows [Version 10.0.18885.1001]

  • Что вы делаете и что происходит: когда я набираю start в сеансе командной строки в терминале Windows, новое окно командной строки открывается в новом окне conhost.

  • Что не так / что должно происходить вместо этого: новая командная строка должна открываться на новой вкладке в существующем окне терминала.

Area-Server Issue-Feature Product-Conhost Work-Item

Самый полезный комментарий

Это по дизайну.

У нас есть планы по поддержке установки другого приложения в качестве «терминала по умолчанию» в Windows, но эти планы все еще очень приблизительны и находятся в разработке.

Все 33 Комментарий

Это по дизайну.

У нас есть планы по поддержке установки другого приложения в качестве «терминала по умолчанию» в Windows, но эти планы все еще очень приблизительны и находятся в разработке.

Для этого потребуется функция ОС. Я обновляю заголовок, чтобы представить изменение операционной системы терминала по умолчанию.

Я переименовываю это, чтобы добавить ключевое слово [defterm] в конец, чтобы мы могли легко найти его в поиске. Слова «по умолчанию» и, ну, «терминал» тревожно часто встречаются в этом репозитории. :улыбка:

Мне любопытно, как ConEmu делает это. После установки каждое новое окно cmd/ps/bash открывается в ConEmu как новая вкладка.

Мне любопытно, как ConEmu делает это. После установки каждое новое окно cmd/ps/bash открывается в ConEmu как новая вкладка.

То же самое здесь, не уверен, как, но, надеюсь, Windows будет обновлена ​​для полной поддержки терминала.

Мне любопытно, как ConEmu делает это. После установки каждое новое окно cmd/ps/bash открывается в ConEmu как новая вкладка.

ConEmu может (ab) использовать возможность установки пользовательского отладчика для процесса. Я считаю, что Process Explorer делает то же самое, чтобы «заменить» диспетчер задач.

Process Hacker также поддерживает «замену» диспетчера задач .

Мне любопытно, как ConEmu делает это. После установки каждое новое окно cmd/ps/bash открывается в ConEmu как новая вкладка.

ConEmu может (ab) использовать возможность установки пользовательского отладчика для процесса. Я считаю, что Process Explorer делает то же самое, чтобы «заменить» диспетчер задач.

AFAIR, он просто меняет раздел реестра.

Как бы то ни было, ConEmu удается это делать, значит, и MST тоже.

ConEmu внедряет хуки (DLL) в определенные процессы (например, explorer.exe или devenv.exe), чтобы перехватить создание новых окон консоли в этих процессах. Подробнее об этом можно прочитать в официальной документации: https://conemu.github.io/en/DefaultTerminal.html .

Как упоминалось в этой ссылке, этот метод является чисто _hack_. Это определенно не жизнеспособное решение для Windows Terminal.

Но… это работает. Наличие доступа ко всей подсистеме упрощает дело.

Разница в том, что Windows Terminal является официальным продуктом Microsoft , поэтому ожидается, что терминал по умолчанию не будет изменен с помощью масштабируемого уродливого хака, а будет изначально поддерживаться Windows .

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

По какой-то причине прямо сейчас cmd и powershell, по-видимому, имеют огромные размеры шрифтов и размеров окон в зависимости от того, как и откуда они запускаются. Из меню «Пуск», через проводник, через Win+R и т.д.

Когда новый терминал станет терминалом по умолчанию, он:

  1. У вас одинаковый размер шрифта и размер окна?
  2. Также быть терминалом по умолчанию для выполнения «Открыть окно Poweshell здесь» и т. Д.?

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

В порядке, запущенном с ярлыка на панели задач, запущенного из «Открыть окно Powershell здесь», запущенного с ввода «powershell» в адресном вводе проводника (обратите внимание, что приглашение по умолчанию тоже кажется другим).

image

Было бы хорошо, если бы Терминал все это объединил. Это очень расстраивает.

@lloydjatkinson спасибо! Это лишь немного уместно здесь, но достаточно сказать, что:

  • Консоль имеет три (!) (с половиной) разных места, откуда она считывает настройки
  • Терминал имеет только один (полтора)

Чтобы ответить на ваши конкретные пронумерованные пункты:

  1. Да, полностью, потому что есть только один источник правды для настроек.
  2. Да, это то, что отслеживает эта функция. Перенаправление в Терминал каждый раз, когда окно консоли запускается для интерактивного использования.

Подсказка по умолчанию выглядит так, будто вы находитесь в другом каталоге. Запуск powershell из адресной строки в проводнике делает это в любом каталоге, который вы просматриваете в данный момент.

Уважаемая команда, это все еще очень много в отставании? Теперь, с выпуском Powershell7, возникает потребность в более легком доступе к современному терминалу, способному обрабатывать правильный Powershell.

1421 на данный момент открывает только PS5.1, и официальной возможности изменить это нет.

Я разговаривал со Стивом Ли в Твиттере, и, конечно, было бы полезно продвигать использование обоих продуктов Terminal и Powershell в последних выпусках / инсайдерских выпусках клиентов Windows 10.

@Karl-WE мы выпускаем v1 за дверь, прежде чем мы начнем рассматривать изменения, необходимые для Windows для поддержки регистрации, перечисления и выполнения альтернативных хостов консоли (или терминалов, которые будут их использовать)

Поскольку для этого, вероятно, потребуется некоторая поддержка API, это, вероятно, можно сделать только как часть большого выпуска Windows.

Спасибо Дастин за вашу отличную работу здесь. Я надеюсь, что об этих межкомандных усилиях можно будет сообщить командам Insider и Powershell. Удачи с графиками выпуска 1.0. возможно, мы сможем добиться этого для 20H2, что оставит всех участников как минимум на 9 месяцев.

Я надеюсь, что это будет добавлено раньше, чем позже, есть ли какие-либо работающие неофициальные обходные пути?

Будьте уверены, что у этой проблемы были бы сотни комментариев сообщества, придумывающих всевозможные сумасшедшие обходные пути, если бы они были;)

У меня есть идея для некоторого базового файла bat:
запустите файл bat в фоновом режиме, а затем закройте окно cmd по умолчанию

START /B  wt cmd /c yourfile.bat
exit

Будьте уверены, что у этой проблемы были бы сотни комментариев сообщества, придумывающих всевозможные сумасшедшие обходные пути, если бы они были;)

Я запускал cmd (а теперь и powershell ) из Win + R в течение десятилетий, но я мучительно переучиваю себя, чтобы вместо этого печатать wt . Я думаю, вы можете научить старую собаку новым трюкам. Медленно. 😁

Это работает благодаря псевдониму выполнения приложения wt.exe в %userprofile%\AppDataLocalMicrosoftWindowsApps.

Привет, команда, пользователи, так как wt теперь имеет очень хороший набор опций и предустановленных настроек json и определяемую пользователем часть, которая также включает настройку, какая консоль является консолью по умолчанию, которая открывается при запуске wt - я подумал, что этого будет достаточно собрать все черновые планы (https://github.com/microsoft/terminal/issues/492#issuecomment-490092382), чтобы подобрать хотя бы следующую попытку:

Интеграция Win+X.

Как я _думаю_ вы можете это сделать:

  • свяжитесь с Дженнифер Джентльмен и командой для настроек
  • добавить новый элемент настроек, который может заменить или обновить следующий параметр для запуска wt вместо powershell или cmd
  • соответствующим образом обновите файл ADMX, чтобы его можно было установить и через GPO
  • предостережение: wt должен быть установлен пользователем

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

подобно
"profiles": [ "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}" { "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "hidden": false, "name": "PowerShell 7", "source": "Windows.Terminal.PowershellCore", "useAcrylic": true }, ],

Настройки > Персонализация > Панель задач

"заменить Win+X cmd на powershell"

replace-command-prompt

Может быть, это наивная точка зрения пользователя, но я не могу себе представить, что можно переключить cmd на Powershell в этот момент уже много лет, но не сделать маленький шаг вперед, чтобы снова заменить эти два элемента на wt. И да, имело бы смысл иметь wt с правами администратора и без них, поскольку по умолчанию он также не имеет повышенных прав, как и любая другая консоль (за некоторыми исключениями).

show-windows-powershell

Не могли бы вы пояснить, почему так много работы? Это было бы началом.

Имея выбор терминального приложения по умолчанию в «Настройки»> «Приложения и функции»> «Приложение по умолчанию» — я понимаю, что это требует дополнительной внутренней работы. Я дважды проверил с помощью NirSoft ShellExView, что на данный момент это не может быть так легко достигнуто.

Однако изменение упомянутого выше параметра Win + X уже есть.
Имейте в виду, что есть даже сторонний инструмент, который может изменить меню Win + X по своему вкусу, но источник загрузки, который я бы в настоящее время скорее оценил как ненадежный.

Вы можете найти инструмент здесь, но используйте его на свой страх и риск
Редактор меню Win+X
Создано Сергеем "Happy Bulldozer" Ткаченко
http://winaero.com
Это программное обеспечение использует исходный код инструмента hashlnk.
hashlnk был создан Рафаэлем Риверой
http://www.withinwindows.com/

Надеюсь, мне разрешено публиковать эту ссылку, иначе, пожалуйста, удалите ее. Если я могу загрузить приложение в формате zip или Onedrive, сообщите мне об этом. Нет намека на то, что его нельзя отражать в другом месте.

ps Пробовал сам добавить wt в новую группу в меню Win+X, но по непонятной причине не получается. Разрешения кажутся правильными. Я могу добавить любой файл в качестве ссылки, кроме вещей из
%localappdata%MicrosoftWindowsApps (даже с полным путем).

wt

Мне любопытно, что предотвращает это по дизайну. Кажется, потому что в приложениях есть файлы размером 0 кб и какие-то симлинки? В диспетчере задач вы также не можете «открыть местоположение» процесса wt. Я подозреваю, что это характер виртуализации приложений MS. Также относится к другим, таким как Edge Chromium, notepadS и т. д.

Учитывая эту информацию и обстоятельства, я мог бы теперь понять, почему так трудно добиться этого изменения. Вы не можете получить к нему доступ из проводника, но вы можете запустить его из Win + R / поиск. Как странно.

Вы не можете добавить wt.exe напрямую, так как это не «настоящий файл», но если вы создадите ярлык для wt.exe, инструмент сможет добавить его, и он будет работать нормально.

Подробнее об этом можно прочитать здесь: https://www.hanselman.com/blog/TotallyUnsupportedHacksAddWindowsTerminalToTheWinXShortcutMenu.aspx

Если я правильно понимаю функцию WinX, Windows не делает ссылки только по пути, возможно, для предотвращения спуфинга, но также генерирует хэш файла. Поскольку все «приложения» имеют нулевой размер файла, «не удается открыть» может быть связано с невозможностью сгенерировать хэш, вероятно, не из-за невозможности получить к нему доступ/прочитать его.

Спасибо за ссылку thlac @shanselman, из-за этого еще труднее понять, почему официального пути нет. Конечно, наличие ярлыка для файла подвергает риску его подделку, что, кажется, противоречит первоначальной идее дизайна WinX, которую нелегко подделать.
Существует риск того, что PUA/вредоносное ПО могут изменить цели в этом меню.

@Karl-WE Просто хотел убедиться, что все здесь на одной волне. Windows Terminal — это терминальное/консольное приложение, а не оболочка . Cmd и PowerShell — это оболочки . (См. также: https://www.hanselman.com/blog/WhatsTheDifferenceBetweenAConsoleATerminalAndAShell.aspx )

Таким образом, настройка Win + X (ИМХО) не имеет отношения к этой проблеме (поскольку она просто определяет оболочку, а не терминальное приложение).

Я понимаю ваше определение. В конце концов, учитывая множество одинаковых запросов, WinX действительно помогает сделать Windows Terminal

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

  • помочь пользователям сделать их любимую оболочку по умолчанию более доступной.
    Это может быть не cmd или PoSh 5.1, которые можно настроить на данный момент.

Глядя на это в этом свете, я по-прежнему согласен с отмеченным вами различием, но, в конце концов, цель состоит в том, чтобы упростить доступ к оболочке, имея при этом лучшие функции терминала по сравнению с консолью по умолчанию .

@nu8 вы, вероятно, согласитесь, что «замена вашего системного хоста версией conhost, созданной из этого репозитория» и «автоматический запуск Windows экземпляра Терминала» — это совершенно разные вещи;)

В этом репозитории размещается как хост консоли, так и терминал. Одно строится на другом, но они, конечно, не одно и то же.

@nu8, учитывая огромное количество вещей, которые @DHowett должен просмотреть и отсортировать, иногда могут быть различия. Как вы процитировали, ясно, что 492 по временной шкале наступило до 1817 года, и все может измениться.
было бы больше раздражает, если бы он разместил это наоборот. Но, как бы то ни было:

хорошая новость: это в графике, больше не в очереди

видеть

1 | Терминал по умолчанию | Если запущено приложение командной строки, оно должно открыться в терминале Windows (если он установлен) или в предпочитаемом вами терминале.
Выпуск: #492
Спецификация: #2080

источник: https://github.com/microsoft/terminal/blob/master/doc/terminal-v2-roadmap.md

@DHowett спасибо за вашу работу здесь, у меня есть небольшой вопрос:
Как вы думаете, мы можем ожидать, что это появится в обновлении Windows 20h2 или 21h1? Известно ли вам о какой-либо внутренней работе (на уровне ОС) в этом направлении?
Я понимаю, что планы могут измениться, но мне все равно интересно :)

Мы - команда, которая должна будет выполнить работу на уровне ОС, чтобы включить эту функцию, поэтому я был бы очень удивлен, если бы мы _не_ знали о работе, которая проводится для ее включения.

Мы все еще только что закончили выпуск 1.0 Терминала, поэтому мы еще не приступили к этому. Я бы сказал, что это вряд ли появится в 20H2 или 21H1, учитывая, что нам, вероятно, нужно было бы сделать эту функцию (или, по крайней мере, создать прототип), чтобы включить ее в любой из этих выпусков.

интересно, что будет первым - настройка defterm или полная поддержка ускорения графического процессора в WSL2, после чего мы могли бы просто использовать вместо этого собственные терминалы Linux, по крайней мере, для разработки, которая может быть виртуализирована

Поскольку у этого выпуска так много подписчиков, я его закрою.
Если вы хотите внести свой вклад, который повлияет на направление разработки этой функции, напишите мне по адресу, указанному в моем профиле на GitHub.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги