上一级页面:index-wslg
前言
接下来给出WSL端详细配置过程
因为wslg是在nologin
状态下使用的,配置x11 client(x client)时,应当写在全局的shell env文件中(所有用户适用
、非shell环境适用
),对应zsh是/etc/zsh/zshenv
,
配置ZDOTDIR
1 2 3 4
| # /etc/zsh/zshenv
# 我在这个文件夹($HOME/.zsh/wsl2)中储存 .zshenv .zshrc .zprofile等 ZDOTDIR=$HOME/.zsh/wsl2
|
配置代理地址:$HOST_SERVER
由于WSL 2使用虚拟机,其IP和Windows不同,所以需要进行一些特殊设置。
$HOST_SERVER
是手动设置的一个环境变量,用于获取主机地址
更改配置文件
- 如果你使用bash,修改
/etc/environment
(bash的环境变量配置文件),添加全局的环境变量
$HOST_SERVER
具体设置如下
1 2 3 4 5 6 7 8 9 10 11 12
| # 如果安装了Docker for Windows,且启动了WSL 2后端集成, # linux/windows/git-bash/wsl2,使用docker提供的内置服务器host.docker.internal # export HOST_SERVER=http://host.docker.internal
# only-WSL2,使用wsl2的服务来获取IP export HOST_SERVER=$(grep -oP '(?<=nameserver\ ).*' /etc/resolv.conf)
#设置代理端口,具体的端口视你电脑本地的代理软件(Shadowsocks、Clash等)而异 export PROXY_PORT=7890 #设置代理地址 export PORXY_ADDR="http://${HOST_SERVER}:7890"
|
配置Xresources
$ZDOTDIR/.Xresources
是x server的一些参数设置,由于xserver安装在windows端,而在wsl端没有server自带的xinit,所以需要手动应用Xresources
,见$ZDOTDIR/.x11
的第二段
1
| vim $ZDOTDIR/.Xresources
|
1 2 3 4 5 6 7 8
| Xft.dpi: 96 Xft.autohint: 0 Xft.lcdfilter: lcddefault Xft.hintstyle: hintfull Xft.hinting: 1 Xft.antialias: 1 Xft.rgba: rgb
|
x11配置
wsl2 xclient(注意 xserver在 windows端)并不只是从shell启动,还可能通过图形界面启动,所以应当配置为非shell环境适用
。并且配置不能只在login时生效一次,所以不能放在profile。
wslg是nologin启动的,并不经过shell,所以需要在全用户适用
、非shell环境适用
的配置文件中进行配置。
更改配置文件
- 如果你使用bash,修改
/etc/environment
(bash的环境变量配置文件),添加全局的环境变量
指定DBUS_SESSION_BUS_ADDRESS
,用于wsl和windows进行正常的通信
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # ===========设置x server============== # 由于wsl2的x server在Windows端, # x server并不只是包含 shell,它还要应用在图形界面,所以不能放在 sh rc文件里 # 并且可能会出现切换一个新的shell,然后运行x server,就是说它的配置不能只在login时生效一次,所以不能放在profile # 所以只能放在`/etc/zsh/.zshenv` # =================================
# 设置下面的"地址"替换为之前记住的Windows上的X Server的地址,一般是0.0 # DISPLAY环境变量用来指定X Server的地址。 # export DISPLAY="$HOST_SERVER:0.0"
# 设置DBUS_SESSION,与X server通信,以使用输入法 if test -z "$DBUS_SESSION_BUS_ADDRESS"; then eval $(dbus-launch --sh-syntax) fi
# 修复screen创建目录的权限问题 export SCREENDIR=$HOME/.screen
|
设置dpi和缩放,修复高分辨率屏的字体模糊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # ================================= # 设置dpi和缩放 # =================================
#export GDK_SCALE=1 #export GDK_DPI_SCALE=1 # 需要关闭qt自动缩放,才能使用下面两项QT_SCREEN_SCALE_FACTORS QT_SCALE_FACTOR #export QT_AUTO_SCREEN_SCALE_FACTOR=1 # 设置多个屏幕的缩放系数,该参数的值采用分号";"组合的键值对表示,分别表示屏幕1;屏幕2;屏幕... #export QT_SCREEN_SCALE_FACTORS=2;1 # 全局缩放系数,多个屏幕用统一的缩放系数 #export QT_SCALE_FACTOR=1
# x server/x term/dpi if [ -f $ZDOTDIR/.Xresources ]; then xrdb -merge -I$HOME $ZDOTDIR/.Xresources fi
|
设置个性化设置
1 2 3 4 5 6 7 8 9 10 11
| # ==================== # 设置个性化设置 # ====================
# fcitx 输入法 export INPUT_METHOD=fcitx # wayland输入法 export GTK_IM_MODULE=fcitx # gtk 输入法 export QT_IM_MODULE=fcitx # qt 输入法 export XMODIFIERS=@im=fcitx # x11输入法 export DefaultIMModule=fcitx # 默认输入法
|
设置输入法的自启动
1 2 3
| # 设置fcitx自启动 fcitx-autostart &>/dev/null
|
不使用间接渲染–unset LIBGL_ALWAYS_INDIRECT
更改配置文件
- 如果你使用bash,修改
/etc/environment
(bash的环境变量配置文件),添加全局的环境变量
1 2 3
| # if set to`true`(1), forces an indirect rendering context/connection # 如果设置为true,强制indirect rendering 上下文/连接 unset LIBGL_ALWAYS_INDIRECT
|
参考、引用、致谢
What should/shouldn’t go in .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?
zsh的环境变量的加载.zprofile .zlogin .zshrc .zshenv – Vincent Blog (xsudo.com)