Windows Terminal 的 state.json 文件有什么作用?

Windows Terminal 的 state.json 文件有什么作用?

我有几个脚本可以根据模板重写我的 Windows 终端 settings.json 文件。

在修复错误时,我注意到另一个文件state.json。但我找不到任何相关文档。这是我的删节版:

{
    "dismissedMessages" : 
    [
        "setAsDefault"
    ],
    "generatedProfiles" : 
    [
        "{<some-guid1>}",
        "{<some-guid2>}",
        "{<some-guid3>}",
        "{<some-guid4>}",
        "{<some-guid5>}",
        "{<some-guid6>}"
    ],
    "settingsHash" : "<some-hash<"
}

这些键/值是什么意思?

答案1

我在 Microsoft Terminal 文档网站上找到的唯一信息是这一页在将 settings.json 重置为默认值时使用以下语句:

从 Windows Terminal 1.10 或更高版本开始,您还需要删除与 settings.json 文件位于同一目录中的 state.json 文件,以将设置完全重置为默认值。

在 github repo 中我发现此规格页面,其中提到:

终端需要一个地方来存储应用程序的“状态”,包括:

  • 用户选择使用 [ ] 不再询问复选框隐藏的对话框,如问题 6641 中所述
  • 已生成哪些动态配置文件,以解决用户对配置文件“返回”的不满
  • 窗口在屏幕上的位置、活动会话状态、布局等,以便最终恢复

此规范提供了存储这些东西的地方。

我没有找到此文件的架构,就像 settings.json 中的架构一样,但是 这个.h文件似乎至少有一些字段被声明了。

因此,这似乎是 Terminal 用来保存状态的文件,不会被用户编辑 settings.json 所影响。它似乎还专注于存储与 Terminal 交互相关的状态,而该文件也由用户直接编辑过。

我的 json 文件中的键在上述规范的上下文中是不言而喻的,尽管我不太确定设置哈希似乎是它目前使用的地方,作为一种避免重新计算“JumpList”的方法。这似乎表明 settingsHash 应该是所有当前设置的哈希值,包括用户的 settings.json 编辑,而不仅仅是 Terminal 生成的原始设置。

我不知道为什么计算 JumpList 会占用大量 CPU。也许不是,只是涉及到对操作系统的缓慢 API 调用。

特别是,除非我想将 settings.json 重置为出厂默认设置,否则我认为没有理由编辑或修改此文件。

答案2

虽然我没有找到任何官方文档,但state.json它用于在Open windows from previous session启用设置时保存 Windows 终端会话状态("firstWindowPreference": "persistedWindowLayout"settings.json所述这里

我摆弄了state.json很多东西,因为我经常自定义我的启动选项卡、目录等,它似乎与行动. 看来 Windows 终端重播WT 启动时指定的操作,state.json而可能的操作可能是“在此目录中打开具有此类标题的选项卡”、“将选项卡重命名为‘某些内容’”等。

我尝试搜索一些state.json规范,但没有成功,但似乎指定了可用操作的列表在 WT github 上

从它们的名称中可以推断出很多信息。例如,该操作switchToTab允许在 WT 启动时设置默认活动选项卡。

下面是我的一个代码片段state.json,它打开两个选项卡并将第二个选项卡设置为活动选项卡:

{
    "action" : "newTab",
    "commandline" : "\"C:\\Program Files\\PowerShell\\7\\pwsh.exe\"",
    "profile" : "PowerShell",
    "startingDirectory" : "P:\\git-cz-moneta-wps\\wps\\devops\\openapi-codegen\\output",
    "suppressApplicationTitle" : false,
    "tabTitle" : "openapi-codegen/output"
},
{
    "action" : "newTab",
    "commandline" : "\"C:\\Program Files\\PowerShell\\7\\pwsh.exe\"",
    "profile" : "PowerShell",
    "startingDirectory" : "s:\\",
    "suppressApplicationTitle" : false,
    "tabTitle" : "scripts"
},
{
    "action" : "switchToTab",
    "index" : 1
}

相关内容