基本介紹
WindowsTerminal是微軟新發(fā)布的一款Terminal產(chǎn)品(以下稱)WT
岳瞭,對(duì)比之前傳統(tǒng)的CMD
和Powershell
來(lái)說(shuō),WT
對(duì)定制的支持更好牢贸,同時(shí)又支持GPU對(duì)頁(yè)面的渲染、emoji表情、多標(biāo)簽等的特點(diǎn)舆蝴。
其項(xiàng)目地址為:https://github.com/microsoft/terminal
官方演示圖片如下:
官方宣傳片: https://www.bilibili.com/video/av51795408/
如何獲取
現(xiàn)在WT
仍然處于開(kāi)發(fā)階段,但是官方還是放出了一個(gè)preview的版本可以通過(guò)Window Store
下載( 鏈接:https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701 )题诵,也可以通過(guò)將github
上的項(xiàng)目clone之后編譯洁仗。
但是無(wú)論是編譯還是在官方下載的,都需要將window升級(jí)到1903
自己編譯
編譯條件:
- 在window中 設(shè)置-更新-開(kāi)發(fā)者選項(xiàng)中中選擇開(kāi)發(fā)者模式
- VS2017 或者 VS2019
- Win10 SDK 10.018362(最新版SDK即可)
- .net桌面開(kāi)發(fā)
- C++桌面開(kāi)發(fā)
- 通用windows平臺(tái)開(kāi)發(fā)
在進(jìn)入VS的時(shí)候如果缺少哪一個(gè)性锭,解決方案上方會(huì)有提示赠潦,直接按照上面的提示安裝即可。
編譯過(guò)程
- 首先將項(xiàng)目使用
git clone https://github.com/microsoft/terminal.git
克隆本地 - 直接在該文件中雙擊
OpenConsole.sln
草冈,在VS中打開(kāi) -
將調(diào)整為3.png
她奥,在本地計(jì)算機(jī)中運(yùn)行即可
- 如果想部署到電腦點(diǎn)擊解決方案中的
Terminal/CascadiaPackage
右擊生成、然后再右擊部署即可疲陕。
如何定制一個(gè)屬于自己的Terminal
新的WT
最大的優(yōu)點(diǎn)是相對(duì)與Windows
之前的Terminal多了一些可定制性方淤。設(shè)置主要分成四種
- 快捷鍵的設(shè)置
- shell
- 頁(yè)面
- 配色
profiles.json文件
Terminal的設(shè)置是一個(gè)json文件,名字為profiles.json
中蹄殃。此文件可以通過(guò)WT
的下拉菜單的setting
中携茂。此文件位于%USERDIR\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState
中(preview)或者%USERDIR\AppData\Local\Packages\WindowsTerminalDev_8wekyb3d8bbwe\RoamingState\profiles.json
中(自己編譯和部署的),其中%USERDIR
為用戶目錄诅岩。
踩坑指南:
如果profiles.json中有配置錯(cuò)誤的地方Terminal就會(huì)無(wú)法打開(kāi)讳苦,這個(gè)BUG現(xiàn)在修復(fù)中。因此如果無(wú)法打開(kāi)Terminal的話吩谦,首先要檢查profiles.json中是否有配置錯(cuò)誤的地方鸳谜,尤其小心字母打錯(cuò)。
還有就是如果preview版本的配置會(huì)同步到Windows賬戶式廷,如果在其他的電腦上下載的WT的preview版本咐扭,但是無(wú)法打開(kāi)時(shí),就要檢查profiles.json中的字體和圖片是否是正確的或者是否存在這個(gè)字體和圖片滑废。
還有就是使用WinAPP的清除配置的方式清除配置無(wú)法清除profiles.json
快捷鍵
此處采用key-value模式進(jìn)行設(shè)置蝗肪,在json中設(shè)置如下:
其中command有如下的種類:
enum class ShortcutAction : int32_t
{
CopyText = 0,
PasteText = 1,
NewTab = 2,
NewTabProfile0 = 3,
NewTabProfile1 = 4,
NewTabProfile2 = 5,
NewTabProfile3 = 6,
NewTabProfile4 = 7,
NewTabProfile5 = 8,
NewTabProfile6 = 9,
NewTabProfile7 = 10,
NewTabProfile8 = 11,
NewWindow = 12,
CloseWindow = 13,
CloseTab = 14,
NextTab = 15,
PrevTab = 16,
SplitVertical = 17,
SplitHorizontal = 18,
SwitchToTab0 = 19,
SwitchToTab1 = 20,
SwitchToTab2 = 21,
SwitchToTab3 = 22,
SwitchToTab4 = 23,
SwitchToTab5 = 24,
SwitchToTab6 = 25,
SwitchToTab7 = 26,
SwitchToTab8 = 27,
IncreaseFontSize = 28,
DecreaseFontSize = 29,
ScrollUp = 30,
ScrollDown = 31,
ScrollUpPage = 32,
ScrollDownPage = 33,
OpenSettings = 34,
};
在profiles.json
中的配置
"keybindings" :
[
{
"command" : "closeTab", // 這里是命令
"keys" : // 這是快捷鍵
[
"ctrl+w"
]
}
]
頁(yè)面的配置
頁(yè)面配置主要分為全局頁(yè)面配置和每一個(gè)profile的頁(yè)面配置
全局頁(yè)面配置
全局頁(yè)面設(shè)置常用的主要為:
- 設(shè)置窗口大小,使用
initialCols
和initialRows
- 默認(rèn)打開(kāi)的Shell蠕趁,通過(guò)使用
defaultProfile
薛闪,它的參數(shù)為一個(gè)string類型的guid,每一個(gè)profile都有自己的guid俺陋,格式為"{00000000-0000-0000-0000-000000000000}"
例如在我的配置中
{
"globals": {
"defaultProfile" :"{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
},
"profiles": [
{
"commandline" : "powershell.exe",
"guid" : "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}"
}
]
}
這樣無(wú)論是直接打開(kāi)WT
還是按+
按鈕打開(kāi)一個(gè)新的tab都默認(rèn)是的powershell
單個(gè)頁(yè)面配置
{
"acrylicOpacity" : 0.5, // 透明度
"closeOnExit" : true,
"colorScheme" : "Campbell", //主題
"commandline" : "wsl.exe -d Ubuntu-18.04", // 啟動(dòng)shell的命令
"cursorColor" : "#FFFFFF", // 光標(biāo)的顏色
"cursorShape" : "bar", //光標(biāo)的形狀豁延,變量有 "vintage" ( ▃ ), "bar" ( ┃ ), "underscore" ( ▁ ), "filledBox" ( █ ), "emptyBox" ( ? )
"fontFace" : "Fira Code", // 字體設(shè)置
"background" : "#000000", // 背景顏色昙篙, 它會(huì)覆蓋掉主題中的background
"fontSize" : 15, // 字體大小
"guid" : "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}", // guid 必須為"{00000000-0000-0000-0000-000000000000}"格式
"historySize" : 9001, // 能顯示的歷史命令個(gè)數(shù)
"icon" : "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png",
"name" : "Ubuntu-18.04", // 名稱,顯示在菜單中
"padding" : "0, 0, 0, 0",
"snapOnInput" : true,
"useAcrylic" : false, // 是否顯示背后的紋理
"backgroundImage" : "ms-appdata:///roaming/test.jpg", // 圖片的一個(gè)路徑,需要絕對(duì)路徑
"backgroundImageOpacity" : 0.75, // 背景圖的透明度
"backgroundImageStrechMode" : "fill" // 填充方式
}
這里要特別注意三個(gè)設(shè)置
-
background
如果在profile
中設(shè)置的話會(huì)覆蓋scheme
中的background
诱咏。 -
acrylicOpacity
這個(gè)屬性生效的前提是useAcrylic
的值為true
-
backgroundImage
等屬性生效的前提是useAcrylic
的值為false
useAcrylic
這個(gè)屬性是決定是否有透明的紋理效果
例如:
當(dāng)"useAcrylic" : true
時(shí)苔可,效果如下
此時(shí)可以通過(guò)acrylicOpacity
去調(diào)節(jié)透明度。此時(shí)背景圖片的設(shè)置就無(wú)法實(shí)現(xiàn)胰苏。如果要設(shè)置背景圖片的話使用"useAcrylic" : false
再進(jìn)行設(shè)置
主題配置
主題的配置在profiles.json
文件中的schemes
屬性中,官方為我們提供了Campbell硕蛹、One Half Dark、One Half Light硕并、Solarized Dark法焰、Solarized Light
五種默認(rèn)的主題。我們可以在profiles中直接設(shè)置使用倔毙。
我們也可以自建主題埃仪,相關(guān)的配置參數(shù)如下:
同時(shí)官方又給我們提供ColorTool
工具幫助我們更快的設(shè)置主題顏色,ColorTool
可以直接使用iterm2
的配色文件陕赃,因此能夠讓我們更多樣的選擇主題卵蛉。
但博主無(wú)法使用該工具對(duì)WT
的配色進(jìn)行修改,找了issue
和各種資料均未找到答案么库∩邓浚可能是ColorTool
尚未實(shí)現(xiàn)對(duì)WT
的操作,只實(shí)現(xiàn)了對(duì)CMD
诉儒、PowerShell
葡缰、WSL
的操作。