此问题跟踪向 Windows 添加“默认终端”支持所需的工作。
这不是特定于终端的,但 Windows 终端将从中受益。
原创内容
此错误跟踪器由 Windows 控制台开发团队和其他技术类型监控。 我们喜欢细节!
如果您有功能请求,请发布到UserVoice 。
重要提示:报告 BSOD 或安全问题时,请勿将内存转储、日志或跟踪附加到 Github 问题。 相反,将转储/跟踪发送到[email protected] ,引用此 GitHub 问题。
请使用此表格并尽可能详细准确地描述您的问题
您的 Windows 内部版本号: Microsoft Windows [Version 10.0.18885.1001]
您正在做什么以及发生了什么:当我在 Windows 终端的命令提示符会话中键入start
时,新的命令提示符窗口会在新的控制台窗口中打开。
出了什么问题/应该发生什么:新的命令提示符应该在现有终端窗口的新选项卡中打开。
这是设计使然。
我们计划支持将另一个应用程序设置为 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 终端的可行解决方案。
但是……它有效。 访问整个子系统可以简化事情。
不同之处在于Windows Terminal是Microsoft官方产品,因此这里的期望是默认终端不会使用可扩展的丑陋黑客来更改,而是由Windows原生支持。
我不知道这是否是提及这一点的合适地方,但我觉得它可能是相关的。
出于某种原因,cmd 和 powershell 目前似乎具有巨大的字体大小和窗口大小,具体取决于它们的启动方式和启动位置。 从开始菜单,通过资源管理器,通过 Win + R 等。
当新终端成为默认终端时,它将:
这里有一些例子来说明我的意思。
按顺序,从任务栏快捷方式启动,从“在此处打开 Powershell 窗口”启动,从在文件资源管理器地址输入中键入“powershell”启动(注意默认提示似乎也有所不同)。
如果终端统一所有这些,那就太好了。 这很令人沮丧。
@lloydjatkinson谢谢! 它在这里只是稍微合适,但足以说明:
要回答您的具体编号点:
默认提示看起来就像它表示您在不同的目录中。 从资源管理器的地址栏中开始powershell
会在您当前正在查看的任何目录中执行此操作。
亲爱的团队,这仍然在积压中吗? 现在随着 Powershell7 的发布,它提出了更容易访问能够处理正确 Powershell 的现代终端的需求。
我已经在 Twitter 上与 Steve Lee 进行了交谈,当然,在最近的版本/内部版本的 Windows 10 客户端上推广终端和 Powershell 产品的使用将是有益的。
@Karl-WE 在开始查看 Windows 所需的更改以支持备用控制台主机(或将使用它们的终端)的注册、枚举和执行之前,我们将推出 v1
由于这可能需要一些 API 支持,因此它可能只能作为大型 Windows 版本的一部分来完成。
感谢达斯汀在这里所做的出色工作。 我希望这种团队间的努力可以与 Insider 和 Powershell 团队沟通,祝 1.0 发布时间表好运。 也许我们可以在 20H2 实现这一目标,这让每个人至少参与 9 个月。
我希望这会尽快添加,是否有任何有效的非官方解决方法?
请放心,如果有的话,这个问题会有数百条社区评论构成各种疯狂的解决方法;)
我对一些基本的 bat 文件有一个想法:
在后台运行你的 bat 文件,然后关闭默认的 cmd 窗口
START /B wt cmd /c yourfile.bat
exit
请放心,如果有的话,这个问题会有数百条社区评论构成各种疯狂的解决方法;)
几十年来,我一直从 Win+R 开始cmd (现在是powershell ),但我正在痛苦地重新训练自己输入wt 。 我猜你可以教老狗新把戏。 慢慢地。 😁
这要归功于 %userprofile%\AppDataLocalMicrosoftWindowsApps 中的应用程序执行别名 wt.exe
嗨团队,用户,因为 wt 现在有非常好的一组选项和预设设置 json 和一个用户可定义的部分,其中还包括设置,哪个控制台是启动 wt 时要打开的默认控制台 - 我认为这足以拿起所有粗略的计划(https://github.com/microsoft/terminal/issues/492#issuecomment-490092382)至少进行以下尝试:
Win+X 的整合。
我如何_认为_你可以做到这一点:
警告: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
},
],
设置 > 个性化 > 任务栏
“用powershell替换Win+X cmd”
也许这是用户的天真观点,但我无法想象多年来可以将cmd切换到Powershell,但并没有向前迈出一小步,再次用wt替换这两个项目。 是的,以这种方式拥有和不拥有管理员权限的 wt 是有意义的,默认情况下,它也像其他所有控制台一样不提升(除了少数例外)
你能详细说明为什么要做这么多工作吗? 这将是一个开始。
在“设置”>“应用程序和功能”>“默认应用程序”中选择默认终端应用程序 - 我可以理解这需要更多的幕后工作。 我用 NirSoft ShellExView 仔细检查过,目前这不是那么容易实现的。
但是,更改上面提到的 Win+X 设置已经存在。
请注意,甚至还有一个 3rd 方工具可以将 Win+X 菜单更改为任何喜欢的人,但我现在宁愿将下载源评为不受信任。
您可以在此处找到该工具,但使用风险自负
Win+X 菜单编辑器
由 Sergey “Happy Bulldozer” Tkachenko 创建
http://winaero.com
本软件使用hashlnk工具源码
hashlnk 由 Rafael Rivera 创建
http://www.withinwindows.com/
希望我被允许发布此参考,否则请删除它。 如果我可以将应用程序作为 zip 或 Onedrive 上传,请告诉我。 没有暗示不允许在其他地方镜像它。
ps 我已经尝试将 wt 添加到 Win+X 菜单中的新组中,但由于某些不清楚的原因它未能这样做。 权限似乎是正确的。 我可以添加任何文件作为链接,除了来自
%localappdata%MicrosoftWindowsApps(即使有完整路径)。
我很好奇是什么通过设计阻止了这种情况。 似乎是因为应用程序有 0 kb 大小的文件和某种符号链接? 在任务管理器中,您也无法“打开 wt 进程的位置”。 我怀疑这是 MS 应用程序虚拟化的本质。 也适用于其他如 Edge Chromium、notepadS 等。
鉴于这些信息和情况,我现在可能明白为什么要完成这种改变如此困难。 您无法从资源管理器访问它,但可以从 Win+R / 搜索启动它。 多么奇怪。
您不能直接添加 wt.exe,因为它不是“真实文件”,但是如果您创建 wt.exe 的快捷方式,该工具将能够添加它并且它会正常工作。
您可以在这里阅读更多相关信息: https ://www.hanselman.com/blog/TotallyUnsupportedHacksAddWindowsTerminalToTheWinXShortcutMenu.aspx
如果我正确理解 WinX 的功能,Windows 不会仅按路径进行链接,可能是为了防止欺骗,但也会生成文件的哈希值。 由于所有“应用程序”的文件大小为零,因此“无法打开”可能是由于无法生成哈希,可能不是因为无法访问/读取它。
感谢 thlac @shanselman的参考,这让我们更难理解为什么没有官方方式。 Ofc 有一个文件的快捷方式暴露了篡改它的风险,这似乎与 WinX 不易被篡改的原始设计理念相矛盾。
风险在于 PUA / 恶意软件可能会更改此菜单中的目标。
@Karl-WE 只是想确保每个人都在同一页面上。 Windows Terminal 是一个终端/控制台应用程序,而不是一个shell 。 Cmd 和 PowerShell 是shell 。 (另见: https ://www.hanselman.com/blog/WhatsTheDifferenceBetweenAConsoleATerminalAndAShell.aspx)
所以 Win+X 设置与这个问题无关(恕我直言)(因为它只确定外壳,而不是终端应用程序)。
我理解你的定义。 最后,鉴于许多相同的请求,WinX 确实有助于使 Windows Terminal
更加突出,这只能帮助其成功和传播,并最终兑现所花费的工作。
帮助用户使他们最喜欢的默认 shell更易于访问。
目前可能不是 cmd 或 PoSh 5.1 可配置的。
从这个角度来看,我仍然同意您指出的差异,但最终目标是帮助使 shell 更易于访问,同时与默认 console相比具有终端的更好功能。
@nu8你可能会同意“用这个存储库构建的 conhost 版本替换你的系统 conhost”和“让 Windows 自动启动终端实例”是完全不同的事情;)
此存储库同时托管控制台主机和终端。 一个建立在另一个之上,但它们肯定不一样。
@nu8考虑到@DHowett必须审查和分类的大量事情,有时可能存在差异。 正如你所引用的,很明显时间轴上的 492 出现在 1817 年之前,事情可能会发生变化。
如果他以其他方式发布它会更烦人。 但无论如何:
好消息是:它按计划进行,不再积压
看
1 | 默认终端 | 如果生成了命令行应用程序,它应该在 Windows 终端(如果已安装)或您的首选终端中打开
问题:#492
规格:#2080
来源: https ://github.com/microsoft/terminal/blob/master/doc/terminal-v2-roadmap.md
@DHowett感谢您在这里的工作,我有一个小问题:
你认为我们可以期待它在 20h2 或 21h1 Windows 更新中推出吗? 您是否知道朝这个方向进行的任何内部工作(在操作系统级别)?
我知道计划可能会改变,但我仍然很好奇 :)
我们是必须进行操作系统级别的工作才能启用此功能的团队,所以如果我们_不_知道启用此功能正在做的工作,我会感到非常惊讶。
我们仍然刚刚超过终端的 1.0 版本,所以我们还没有真正开始这方面的工作。 我想说它不太可能在 20H2 或 21H1 登陆,考虑到我们现在可能必须完成该功能(或至少原型化)才能将其纳入其中任何一个版本。
我想知道什么会先出现 - WSL2 中的 defterm 设置或完整的 gpu 加速支持,此时我们可以只使用本机 linux 终端,至少对于可以虚拟化的开发
因为这个问题有很多订阅者,所以我要锁定它。
如果您有贡献会影响此功能的工程方向,请通过我的 GitHub 个人资料上的地址给我发送电子邮件。
最有用的评论
这是设计使然。
我们计划支持将另一个应用程序设置为 Windows 上的“默认终端”,但这些计划仍然非常粗略且正在实施中。