Windows Terminal 配置

因为最近终于更新上了Win10 1903,终于摸上了久仰大名的新Windows Terminal(一下简称Terminal),于是就折腾了一番,然后就有了这篇踩坑笔记。

小技巧:将Terminal的快捷方式(C:\Users\mnxxz\AppData\Local\Microsoft\WindowsApps\wt.exe)放桌面,然后右键属性,在“快捷键”中按下想要的快捷键,既可在几乎全局范围内快速启动终端。快捷方式必须在桌面才生效(假如放到`C:\Users\Public\Desktop`里被别的用户删掉了的话也失效)。

已知问题

  • 尝试加入msys2的bash配置,发现对中文支持非常糟糕,有待摸索配置或官方改进。
  • 以关闭最后一个标签的方式进行退出会卡很久。

配置Schema

继微软将“用json配置”的方式引入到vscode后,在Terminal有一次被发扬光大,因此我仿照vsc官方的json schema(TypeScript),写了一下Terminal配置的模板。由于官方还没有给出非常详细的配置教程,因此只能从默认配置以及百度到的一两条额外配置中(谷歌也不见更多,有空再读源码),推测出可能的配置和作用,因此以下内容不完全也不准确(而且也不完全符合TypeScript语法),故仅供参考,希望有更多人补充。

interface terminalProfilesConfiguration {

    /**
     * 全局设置
     */
    globals : globalsConfiguration;

    /**
     * 配置
     */
    profiles : profilesConfiguration[];

    /**
     * 样式
     */
    schemes? : schemesConfiguration[];
}

/**
 * guid: "{"GUID"}"
 * GUID: hex{8}"-"hex{4}"-"hex{4}"-"hex{4}"-"hex{12}
 * hex: [0-9A-Fa-f]
 */
type guid = string

/**
 * url: ("ms-appdata://" | "ms-appx://" | LABEL":" ) + path
 * LABEL: [a-zA-Z]
 * path: "/"
 */
type url = string

/**
 * color: "#"hex{6}
 * hex: [0-9A-Fa-f]
 */
type color = string

interface globalsConfiguration {

    /**
     * 始终显示标签
     *  当 `showTabsInTitlebar` 为 `false` 且 `alwaysShowTabs` 为 `false` 时,
     *  只剩下一个标签时,不显示多标签
     * 默认值: true
     */
    alwaysShowTabs? : boolean;

    /**
     * 默认配置
     * 启动 `profiles` 里 `guid` 匹配的配置
     *  注: 如果找不到配置,将无法启动(启动立即退出)
     *  另外,若配置成`{00000000-0000-0000-0000-000000000000}`将导致错误而启动内置默认配置
     * 默认值: {61c54bbd-c2c6-5271-96e7-009a87ff44bf} 即"Windows PowerShell"
     */
    defaultProfile : guid;

    /**
     * 启动时列数
     *  相当于 "控制台窗口" > "属性" > "布局" > "窗口大小" > "宽度"
     * 默认值: 120
     */
    initialCols? : number;

    /**
     * 启动时行数
     *  相当于 "控制台窗口" > "属性" > "布局" > "窗口大小" > "高度"
     * 默认值: 30
     */
    initialRows? : number;

    /**
     * 快捷键配置
     */
    keybindings? : keybindingsConfiguration[];

    /**
     * 请求主题?
     */
    requestedTheme? : "system";

    /**
     * 显示标题栏
     */
    showTabsInTitlebar? : boolean;

    /**
     * 在标题栏显示标签标题
     */
    showTerminalTitleInTitlebar? : boolean;

}

interface keybindingsConfiguration {

    /**
     * 配置命令
     */
    command: "closeTab" | "newTab" | "nextTab" | "openSettings" | "prevTab" |
             "newTabProfile0" | "newTabProfile1" | "newTabProfile2" | "newTabProfile3" | "newTabProfile4" | "newTabProfile5" | "newTabProfile6" | "newTabProfile7" | "newTabProfile8" |
             "switchToTab0" | "switchToTab1" | "switchToTab2" | "switchToTab3" | "switchToTab4" | "switchToTab5" | "switchToTab6" | "switchToTab7" | "switchToTab8" |
             "scrollDown" | "scrollDownPage" | "scrollUp"  | "scrollUpPage";

    /**
     * 按键
     *  例子: "ctrl+w", "alt+9", "alt+f2", "ctrl+tab", "ctrl+,", "shift+down", "ctrl+shift+pgdn"
     *  注: 虽然是数组但是尚未支持绑定多个按键组合
     */
    keys: string[];
}

interface profilesConfiguration {

    /**
     * 使用亚克力(毛玻璃)效果
     */
    useAcrylic : boolean,

    /**
     * 亚克力(毛玻璃)效果透明度
     *  取值范围: 0.0-1.0
     */
    acrylicOpacity : Float64Array,

    /**
     * 背景颜色
     */
    background : color,

    /**
     * 背景图片
     *  url: ("ms-appdata://" | "ms-appx://" ) + path
     */
    backgroundImage : string,

    /**
     * 背景图片透明度
     *  取值范围: 0.0-1.0
     */
    backgroundImageOpacity : Float64Array,

    /**
     * 背景图片填充样式
     */
    backgroundImageStrechMode : "fill" | "uniformToFill",

    /**
     * 光标颜色
     */
    cursorColor : color,

    /**
     * 光标形状
     *  bar: 竖线
     *  vintage: 下划线
     *  ?: 方块?
     */
    cursorShape : "vintage" | "bar",

    /**
     * 光标高度
     *  仅当 `cursorShape` 为 `vintage` 时有效
     *  取值范围: 1-100
     */
    cursorHeight : number,

    /**
     * 字体
     */
    fontFace : string,

    /**
     * 字体大小
     *  注: 当为 0 时使用默认大小
     *      当为负数时,当前终端空白屏
     */
    fontSize : number,

    /**
     * 使用样式
     *  `schemes` 中的 `name` 值
     */
    colorScheme : string,

    /**
     * 退出时关闭?
     *  作用未知或目前无效
     */
    closeOnExit : boolean,

    /**
     * 命令行
     *  启动终端的命令行,可以包括参数
     *  例如: "powershell.exe", "cmd", "C:/msys64/usr/bin/bash.exe"
     */
    commandline : string,

    /**
     * GUID
     *  识别ID,用于默认启动配置
     */
    guid : guid,

    /**
     * 历史记录大小
     *  相当于 "控制台窗口" > "属性" > "布局" > "屏幕缓冲区大小" > "高度"
     */
    historySize : number,

    /**
     * 图标
     *  右上角下拉菜单里本配置的图标
     *  url: ("ms-appdata://" | "ms-appx://" ) + path
     */
    icon : string,

    /**
     * 名字
     *  右上角下拉菜单里本配置的名字
     */
    name : string,

    /**
     * 边缘宽度: 上, 右, 下, 左
     *  格式: "%d, %d, %d, %d"
     */
    padding : string,

    /**
     * ?
     */
    snapOnInput : boolean,

    /**
     * 启动路径
     *  相当于快捷方式的 "起始位置"
     */
    startingDirectory: string
}

interface schemesConfiguration {

    /**
     * 样式名
     */
    name: string,

    /**
     * 背景颜色
     */
    background: color,

    /**
     * 其他颜色设置
     */
    brightBlack : color,
    brightBlue : color,
    brightCyan : color,
    brightGreen : color,
    brightPurple : color,
    brightRed : color,
    brightWhite : color,
    brightYellow : color,
    black : color,
    blue : color,
    cyan : color,
    foreground : color,
    green : color,
    purple : color,
    red : color,
    white : color,
    yellow : color
}

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s

%d 博主赞过: