Windows11 Terminal: 配置与美化 Powershell7、WSL2、WSA

前段时间win11更新了AMD三级缓存的补丁,我的Lenovo R9000P也是等不及想尝鲜了,这里就记录一下我在win11里安装配置各种shell的过程。首先简单介绍一下用到的工具和软件:

  • Windows Terminal,终端管理、配置软件
  • Powershell7,微软开源的跨平台 Shell ,Powershell 升级版
  • oh-my-posh,Powershell上的开源主题引擎
  • WSL2,Windows 上的 Linux 子系统,除了 IO 不如原生以外,其他方面的表现都和原生差不多,且支持 GUI
  • oh-my-zsh,用于管理和简化 zsh 配置的开源 Shell 工具,内置多种主题,支持许多便利的插件
  • WSA,Windows 上的安卓子系统,刚刚上架美区,对于普通 app 的支持还可以,但玩手游还不太行,虽然现在能调用独显(需要 WDDM3.0 和 WSL 专门的驱动),但独显调用非常得不积极,毕竟才刚开始对外开放

一、Windows Teminal

Win11 预装了 Windows Teminal 的 UWP 应用,就不用自己装了,只需要自己设置一下就可以了,预装的这个 Windows Teminal 设置界面是没有 GUI 的,需要修改 json 文件,如果要使用 GUI 设置的话,去 Microsoft Store 更新一下就可以了。当然 Win10 的话,就需要自己去 Microsoft Store 安装了。

Windows Teminal 我是很推荐装一个的,一方面它方便管理单个终端的配置,另一方面它又能像浏览器一样多开多个终端,还有官方的支持,可以说是很方便了。

二、Powershell7

我因为没有什么独特的需求,所以选择的是Powershell7.1.5稳定版,直接下载安装包安装就行,Powershell7和系统原版Powershell安装在不同目录,他们的使用互不影响。

此外,Powershell7也可以在Microsoft Store,但是因为UWP应用在沙盒中运行,如果你要装外网的包是不走系统代理的,所以并不是很推荐,虽然这个限制可以用一条cmd(管理员)命令解除:

1
FOR /F "tokens=11 delims=\" %p IN ('REG QUERY "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings"') DO CheckNetIsolation.exe LoopbackExempt -a -p=%p

这条命令会解锁所有的UWP应用的代理限制,请考虑是否符合你的需求。

1. Powershell 安装oh-my-posh

oh-my-posh 是一个用于 Powershell 的主题引擎,主要作用是让你的 Powershell 不再那么老土,作为一个老宅,自然是喜欢弄这些花里胡哨的效果,下面是它的链接:

点进 release 下载 install 文件进行安装。

当然了 oh-my-posh 也可以通过 Powershell 进行安装:

1
Install-Module oh-my-posh -Scope CurrentUser

官方文档还提供了其他安装方式:

安装完后使用一下指令即可列出所有的主题:

1
Get-PoshThemes

然后就有了以下的画面,可以看到,每个主题的色块都怪怪的,这是因为字体缺少 oh-my-posh 所需的字符的缘故,我们需要下载一个支持完备的字体。

2. Windows 安装NF字体

oh-my-posh 在设计时使用的是 Nerd Font ,所以我们必须确保下载的字体支持 Nerd Font 的标准,oh-my-posh官方文档推荐我们使用

我是用的也是这种字体,下载解压后找到里面的 Meslo LGM NF.TrueType 字体文件(只需要这一个就行)拖入 Win11 的字体设置里就完成了 Meslo LGM NF 字体的安装。

然后在 Windows Terminal 内设置 Powershell7 使用 Meslo LGM NF 字体,再次 Get-PoshThemes就可以看到各式的主题了。

3. Powershell 配置主题生效

然后选一个好康的安装,我选的是 sorin ,比较喜欢这种简洁一些的^^,选好之后输入一下命令启用主题:

1
Set-PoshPrompt -Theme sorin

为了每次启动 Powershell 都让该命令生效,需要编辑一下 Powershell 的配置文件 $PROFILE,以下指令可以新建 $PROFILE ,如果 $PROFILE 不存在的话

1
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }

接着键入 notepad $PROFILE 来编辑 $PROFILE ,将 Set-PoshPrompt -Theme sorin这行命令写进去即可。成效:

嗯,很好,,就是太朴素了,果然还是要花里胡哨的才行。

4. Windows Terminal 配置颜色

于是我又去iterm-2-colors-chemes找了下配色。

它的使用方法很简单,先在 Readme.md 里选一个妖艳的颜色,比如 Aurora ,然后去”https://github.com/mbadolato/iTerm2-Color-Schemes/blob/master/windowsterminal/Aurora(你选择的颜色名).json“ 这里,将里面的内容添加到 Windows Terminal 的 json配置文件里的 “schemes” 中 ,再将你要改色的终端 "colorSchemes": Aurora(你选择的颜色)就行。

5. Window Terminal 配置背景效果

从上面这些配置可以看出,我的审美真的非常微妙,一边想简洁,一边又不能太简洁,所以背景的话,我只设置亚克力模糊透明效果、调一下边距就好了,在 Windows Terminal 里就可以设置,各位如果喜欢也可以放两张图片上去,二次元也可以放几个老婆上去

三、WSL2

在使用 WSL2 之前,我们需要先给 Powershell 提升一下,因为 WSL 很多指令需要用到管理员权限,所以我们要一种更方便的开启 Powershell 管理员的方法。

1. Powershell 安装 gsudo

gsudo的项目地址:

安装 gsudo 只需要一条 Powershell 指令就行了:

1
PowerShell -Command "Set-ExecutionPolicy RemoteSigned -scope Process; iwr -useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.ps1 | iex"

安装过程中会问你是否要使用 sudo作为 gsudo的别名,我这里选择是。安装完后重启,环境变量生效后就可以使用 sudo来快速跳转到管理员级别的 Powershell 了。

2. 将管理员级别的 Powershell 添加到 Windows Terminal

如果你不想每次都输入 sudo指令,你也可以将一个管理员级别的 Powershell 添加到 Windows Terminal,每次就打开这个 Powershell。只需要在 Windows Terminal 的 json 配置文件中 “profile” 的 “list” 里加上:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"acrylicOpacity": 0.80000000000000004,
"backgroundImage": null,
"colorScheme": "Aurora",
"commandline": "gsudo.exe pwsh.exe", //需要将pwsh.exe加入环境变量
"experimental.retroTerminalEffect": false,
"font":
{
"face": "MesloLGM NF"
},
"guid": "{981d83ca-4f2a-5b98-aa13-e9ddbcd91ab8}",
"hidden": false,
//Powershell7的图标路径,你的位置可能不同,可以在Windows Terminal中查看
"icon": "ms-appx:///ProfileIcons/pwsh.png",
"name": "PowerShell Admin",
"padding": "8",
"startingDirectory": "%USERPROFILE%",
"useAcrylic": true
},

然后就可以看到 Windows Terminal 多了一个管理员 Powershell 的按钮

3. 安装 WSL2

首先打开 Microsoft Store 下载 Ubuntu 20.04 LTS 版

下载完成后,Powershell 管理员执行

1
wsl --install

安装过程如下:(安装完后需要重启,重启后就可以正常使用 WSL 了,Windows Terminal 也会自动添加一个 Ubuntu 终端)

查看一下当前 WSL 版本:

1
wsl -l -v

已经是 WSL2 了,如果你早就是 WSL1 用户则需要执行 wsl --update然后 wsl --set-version Ubuntu-20.04 2切换成 WSL2

一切安装完后使用 wsl命令(或在Window Terminal 新建)进入 Ubuntu,更着它的指示创建一个普通用户并设置密码,之后使用如下指令设置 root 密码

1
sudo passwd

如图,改密成功

4. 更换 apt 源

为了更好地安装使用 Linux 软件,我们需要对 apt 进行换源以摆脱网络的限制。

首先备份 apt 源:

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

使用 Vim 编辑 sources.list,sudo vim /etc/apt/sources.list,用下面阿里云镜像源替换掉原本的 Ubuntu 源:

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

然后执行更新:

1
sudo apt-get update && sudo apt-get upgrade

5. 安装 oh-my-zsh

首先需要说明的是 zsh 是一个强大的 shell 工具,和 bash 同属一类,但更强大,而 oh-my-zsh 则是为了管理和简化 zsh 的配置而开发的。

照例,先放上 oh-my-zsh 的地址:

先进行 zsh 的安装 sudo apt install zsh并用检查是否安装成功 zsh --version

将 root 用户和普通用户都从 bash 切换到 zsh :(如果你不是 Ubuntu 子系统,zsh的安装位置可能会变,可以通过 echo $SHEll 来查看 bash 的位置就知道 zsh 在哪了)

1
sudo chsh -s /bin/zsh && chsh -s /bin/zsh

然后安装 oh-my-zsh:(官方提供了三种基础的安装方式 curl 、wget 和 fetch ,这里以 curl 为例)

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

不出意外你输入这条命令后,得到的是 curl failed 的结果,因为 GFW 限制了你的网络,你的 curl 指令和 wget 指令全部木大。。。

所以现在有两种方法:

  • 一是翻出去,由于 WSL2 使用了 Hyper-V 服务,有一张自己的虚拟网卡,即使 Win11 上有代理也需要解决一堆问题,这里就不展开了,改天写篇文章来讲讲 WSL2 的代理问题
  • 二是换源,下国内镜像就好了,又方便又快速,所以这里用第二种方法,使用 gitee 的镜像来安装 oh-my-zsh:(开头用 sudo 是以 root 用户的身份进行安装,如果想给普通用户装则不要加 sudo)
1
sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"

轻 松 秒 杀(发出笔记本维修厮的叫声)

(可选)Oh-my-zsh 多用户共享:

以上的安装仅仅只是将 oh-my-zsh 安装在了普通用户目录下(如果你没有使用 sudo 的话)。为了实现 oh-my-zsh 的所有用户共享,我们需要将其移动到 /usr/share 文件夹下,这样做完后,每个用户只需要配置自己的 ./zshrc 就能使用了,具体做法参考上面的链接,或者直接敲入下面的命令:

1
2
3
4
5
6
7
8
9
10
11
# 移动 oh-my-zsh 目录到 /user/share
sudo mv /home/你的用户名/.oh-my-zsh /usr/share/oh-my-zsh
cd /usr/share/oh-my-zsh/
# 将配置文件模板复制到 zshrc,以后都从这个zshrc文件导出模板,方便使用
cp templates/zshrc.zsh-template zshrc
#从 MarcinWieczorek 的 AUR 包中获取补丁文件并应用于 zshrc 文件
wget https://aur.archlinux.org/cgit/aur.git/plain/0001-zshrc.patch\?h\=oh-my-zsh-git -O zshrc.patch && patch -p1 < zshrc.patch
# 创建到 zshrc 文件的硬链接,以便它为新用户创建一个实际的独立副本
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
#默认新用户使用 zsh,这样每个新创建的用户都可以直接用 oh-my-zsh 了
sudo useradd -D -s /bin/zsh

如果你要更改默认的 zshrc 设置并让他生效,就更改 /usr/share/oh-my-zsh/zshrc 这个文件,然后对每个用户执行以下操作即可:

1
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc

6. 配置 oh-my-zsh 主题

接下来就可以去挑选主题了:

由于 oh-my-zsh 下 sorin 主题的表现没有 oh-my-posh 下的表现好,我决定装一个 powerlevel10k ,这款主题也是非常得受欢迎:

依旧是使用 gitee 的源来装:

1
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

装完后使用 vim ~/.zshrc配置好 ZSH_THEME="powerlevel10k/powerlevel10k"(如果你执行了上方可选内容,可以更改 /usr/share/oh-my-zsh/zshrc ,然后在 cp 到普通用户和 root 用户),当然了 powerlevel10k 也用到了默认字体集没有的字符,所以得在 Windows Terminal 中将 Ubuntu 终端的字体设置成之前下载的 Meslo LGM NF 字体才能正常显示,然后顺便也换个颜色、改个亚克力透明效果。

此时重启终端你就可以看到如下的配置界面:(没有看到也可以使用 p10k configure指令手动调出)

更着 powerlevel10k 的指示配置完成后就成了这样:

7. WSLg体验

用 Win11 下的 WSL2 当然要体验一下 WSLg,虽说这个功能 Win10 预览版就有了,但不妨碍我现在才第一次用(:

微软官方给了一些 Example :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
## Update list of available packages
sudo apt update
## Gedit
sudo apt install gedit -y
## GIMP
sudo apt install gimp -y
## Nautilus
sudo apt install nautilus -y
## VLC
sudo apt install vlc -y
## X11 apps
sudo apt install x11-apps -y
## Google Chrome
cd /tmp
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt install --fix-broken -y
sudo dpkg -i google-chrome-stable_current_amd64.deb
## Microsoft Teams
cd /tmp
sudo curl -L -o "./teams.deb" "https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb"
sudo apt install ./teams.deb -y
## Microsoft Edge Browser
sudo curl https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/microsoft-edge-dev_93.0.946.1-1_amd64.deb -o /tmp/edge.deb
sudo apt install /tmp/edge.deb -y

我这里就先不装这些了,因为后面我也不太用得着,我就随便运行一个 GUI 程序看看行不行吧,所以就翻出来了一年前下载的一笔未动的 Games101 的作业(本来准备用心学的,结果两个视频看了一年。。),配置好 eigen3 、 opencv 、 g++、gdb 、 cmake 后运行:

可以看到成功弹出了一个 GUI ,因为这个作业我没写,所以也不知道 GUI 里到底应该是什么,但能弹出来 GUI 就说明我的安装还是蛮 ok 的,作业嘛,等以后再写吧^^

四、WSA

前些天微软刚刚在美区上线了安卓子系统,国区还没有动静,但 Win11 Inside Perview Beta 通道已经可以装了,如果你不是 Win11 预览版可以在这里加入:

1. Microsoft Store 安装 WSA with Amazon Appstore

如果你是 Windows 预览体验用户的话请将通道切换成 Beta 通道,然后浏览器打开美区的 Microsoft Store :(不需要科学上网)

进入之后,点击 Get 按钮会弹出对话框请求打开 Microsoft Store

然后在 Mircosoft Store 点击下载就行了

安装完后点击启动

最开始会启动 Aamazon Appstore,直接关掉就好,我们需要的是它附带安装的 WSL,在开始菜单点击 Windows Subsystem for Android™️

2. 设置 WSA

为了方便我便我们后续的操作,我们需要进行两个设置:

  • 打开 WSA 的开发人员模式,并开启 USB 调试,记录下 ADB 连接地址

  • 在 Win11 防火墙中允许 WSA 访问局域网

3. 安装 .apk 文件到安卓子系统

照理说使用之前附带的 Amazon Store 就可以完成大部分应用的安装了,但是由于我的 Amazon 账号不是美区,所以有地区限制,也难以安卓一些本土的应用,所以我选择使用 adb 命令来安装应用

adb ( Android 调试桥 )是用于多个平台与安卓设备通信的命令行工具,是 AOSP (安卓开源项目)的一部分,可以作为 Android Studio 的一部分安装,也可以打开下方的 Android SDK Platform Tools 安装:

下载完后解压到任意文件夹,然后将 adb.exe 所在的文件夹添加到环境变量中,重启电脑。

在 Powershell 中使用 adb 连接到 WSA :

1
2
#连接地址可以在 WSA 设置下的开发者模式一栏查看
adb connect 127.0.0.1:58526

使用 abd 安装 apk:

1
adb install 你的apk路径

顺利地安装成功:

然后就可以在开始菜单打开应用了,说起来明日方舟最近越来越无聊了,体力也懒得刷了… z Z

虽然装上了安卓应用,但能用和能日常使用还是有很大区别的,为了能流畅地运行游戏,我又去装了支持 WSL 的 Nvidia 显卡驱动和 Microsoft Store 的 OpenGL、OpenCL兼容包,老实说还是不如模拟器,想在 WSA 上玩游戏还是太早了。

Windows11 Terminal: 配置与美化 Powershell7、WSL2、WSA

https://fly.meow-2.com/post/records/terminals.html

作者

Meow-2

发布于

2021-10-25

更新于

2022-03-27


评论