Windows Terminal 怎么设置窗口初始位置与启动模式:initialPosition 与 launchMode
【免费下载链接】terminalThe new Windows Terminal and the original Windows console host, all in the same place!项目地址: https://gitcode.com/GitHub_Trending/term/terminal
每次启动 Windows Terminal,窗口都停在系统默认位置、默认尺寸,多显示器环境下还容易开到不方便的屏幕上。Windows Terminal 提供了两个顶层全局设置来解决这个问题:initialPosition指定窗口左上角的初始坐标,launchMode指定启动模式(普通窗口、最大化、全屏等)。把这两个配置写进设置文件settings.json,下次新建窗口时就会按你的设置打开。本文依据仓库内的设计文档与设置 Schema,给出完整的配置方法、取值规则和验证方式。
先打开要修改的 settings.json
这两个设置属于设置文件的顶层全局项,不是某个 profile 的属性。用文本编辑器打开用户设置文件即可编辑:
- 在 Terminal 的按键绑定中配置命令
{ "action": "openSettings", "target": "settingsFile" }可以打开settings.json,文档中的说明是"openssettings.jsonin your default text editor"(在你的默认文本编辑器中打开 settings.json),见 Settings Keybinding 规格。 - 设置值遵循级联规则:
settings.json里定义的值优先生效,未定义的项回退到defaults.json,再回退到系统值,见 cascading-settings 说明。其中launchMode的默认值在 defaults.json 中为"default"。
配置 initialPosition:窗口左上角的初始坐标
initialPosition是一个字符串,结构为"X value, Y value",表示窗口左上角在首次加载时的位置。按 设置 Schema 的描述:
The position of the top left corner of the window upon first load. On a system with multiple displays, these coordinates are relative to the top left of the primary display.
要点:
- 多显示器系统中,坐标原点以主显示器的左上角为基准。接在主显示器左侧的显示器,其 X 坐标为负值,Schema 中
Coordinates的类型定义(patterns)也允许以-开头。 - 空格会被忽略;X、Y 任一缺失或无效时,该项使用系统默认值。设计文档 spec.md 给出的取值规则:
| 设置值 | 实际效果 |
|---|---|
"1000" | 等价于 (1000, 1000) |
", 1000" | X 用系统默认,Y 为 1000 |
"1000, " | X 为 1000,Y 用系统默认 |
"," | X、Y 都用系统默认 |
"abc, 1000" | X 无效回退系统默认,Y 为 1000 |
在settings.json顶层写入(文档示例值):
{ "initialPosition": "500,500", "launchMode": "default", "profiles": [ ], "schemes": [ ], "defaultProfile": "" }解析实现按"左值为 X、右值为 Y"处理字符串,见 ModelSerializationHelpers.h。
配置 launchMode:窗口启动模式
launchMode定义终端以什么模式启动。当前 Schema 支持的取值:
| 取值 | 行为 |
|---|---|
default | 以系统默认尺寸的普通窗口启动(默认值) |
maximized | 启动时最大化 |
fullscreen | 全屏启动 |
focus | 等价于default模式,但启用 focus mode |
maximizedFocus | 最大化窗口启动,并启用 focus mode |
最初的 #1043 设计只规划了maximized与default两种模式,全屏、focus 等取值是后续扩展进来的,以当前 Schema 的枚举为准。launchMode与initialPosition有关联行为:当设置为maximized(或maximizedFocus)且同时提供了initialPosition时,窗口会在该坐标所在的那块显示器上最大化(见 spec 的 Edge cases 与 Schema 描述)。
另外两个相关项,Schema 中有明确说明:
initialCols/initialRows(默认 120 / 30):首次加载时窗口的列数与行数;当launchMode为maximized(或maximizedFocus)时这两个属性被忽略(Schema)。centerOnLaunch(默认false):设为true时窗口在打开的显示器上自动居中,并且终端会用initialPosition来决定在哪块显示器上打开(Schema)。
验证结果与边界行为
保存settings.json后,关闭现有窗口、新建一个窗口来验证:
- 普通模式:窗口左上角出现在
initialPosition指定的坐标;左侧显示器的窗口会出现在负 X 坐标对应的区域。 - 窗口被开到屏幕外:如果设置的初始位置超出屏幕范围、左上角落在屏幕外,Terminal 会把窗口放到最近显示器的左上角,保证你能看到并把它拖回屏幕内(spec 的 Reliability 一节)。
- 最大化 + 初始位置:窗口在坐标指向的显示器上最大化,而不是全部显示器铺满。
- 解析位置失败或该项缺省时,回退到系统默认位置(
CW_USEDEFAULT路径,见 spec 的 Solution Design 一节)。
实现细节可作为验证依据:GetInitialPosition从设置读取坐标,缺失分量用默认值补齐;GetLaunchMode决定最终启动模式,见 TerminalWindow.cpp。
两个会覆盖settings.json的优先级情况(均出自上述源码):
- 持久化窗口布局:若启用了布局恢复(
firstWindowPreference设为persistedWindowLayout或persistedLayoutAndContent,见 Schema),上次保存的窗口位置与启动模式会优先于设置文件中的initialPosition/launchMode(GetLaunchMode、GetInitialPosition)。如果你发现设置"不生效",先检查这一项。 - 命令行参数:命令行传入的位置参数和
--maximized/--fullscreen会覆盖设置文件中的值(源码注释引用 GH#4620/#5801,见 TerminalWindow.cpp)。
限制
- 该功能只负责"初始位置 + 启动时是否最大化/全屏/焦点模式"。退出时保存位置并在下次启动恢复、多窗口场景下的位置保存与恢复,在 spec 的 Future considerations 中仍列为后续工作(当前可通过
firstWindowPreference的持久化布局部分覆盖,见上文)。 - 多显示器场景下 spec 明确提示需要关注社区反馈,属于已知需留意的边界(Potential Issues 一节)。
完成配置后的实际效果是:新建的 Terminal 窗口稳定出现在你指定的显示器与坐标上,或按指定模式(最大化/全屏/focus)启动,不再受系统默认摆放位置影响。
【免费下载链接】terminalThe new Windows Terminal and the original Windows console host, all in the same place!项目地址: https://gitcode.com/GitHub_Trending/term/terminal
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考