如何优雅的在Windows 10上装X
Windows 10带了一个Linux子系统(WSL)已经是旧闻了,作为偶尔需要用Windows的我也不能免俗的装了一个。当然,一开始我是不打算装X的,毕竟真正需要的只有Linux终端这种家的温馨。然而VIM不能方便的和Windows程序共享剪贴板内容,那个bash.exe又丑的不行,这怎么可以忍受。最后不得不求助于Xserver,把GVIM和Xterm都弄起来。
本文内容包括Linux子系统的安装,Xserver安装和相应配置,Xterm的快捷启动等。内容参考了很多不同的文章,链接在最后给出。
Linux子系统安装
以管理员身份打开Powershell并输入以下命令来启用WSL特性
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
重启后打开Windows应用商店,搜索linux,安装你想要的发行版。我个人选择了Ubuntu(毕竟最熟悉)。安装完毕后选择运行,会出现一个终端让你创建一个新用户,输入用户名和密码即可完成。现在你就可以在开始菜单里搜索bash或ubuntu来启动了。
Xserver的安装及配置
Windows上的Xserver有好几个选择,我用的是VCXSRV,安装时一路默认就可以了。
因为现在很多电脑都有HiDPI,需要对VCXSRV做点设置不然字体会发虚。首先找到软件的安装路径,比如C:\Program Files\VcXsrv,然后对两个可执行文件vcxsrv.exe和xlaunch.exe执行以下操作:
右键点击可执行文件 –> “属性” –> “兼容性” – > “更改高DPI设置” –> “替代高DPI缩放行为”。
在开始菜单查找xlaunch并运行,一路默认就可以开启Xserver。
系统设置
显示设置
DISPLAY变量可以放到~/.profile里,当然/etc/profile也是可以的,同时建议设置umask(默认是0000)
umask 0022
export DISPLAY=localhost:0.0
重新打开一个终端或者在当前终端里再export一下就能运行GUI程序了。
中文支持
先安装中文字体和输入法
sudo apt-get install fonts-wqy-microhei fonts-wqy-zenhei xfonts-wqy
sudo apt-get install fcitx fcitx-pinyin dbus-x11
先生成machine-id
sudo systemd-machine-id-setup
输入法环境变量可以放到~/.profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
再更改dbus配置让fcitx能正常启动。修改/etc/dbus-1/session.conf里的几个配置(如果没有这个文件请自行创建),将
unix:tmpdir=/tmp
EXTERNAL
改为
tcp:host=localhost,port=0
ANONYMOUS
最后解决一下Windows输入法和Linux输入法切换冲突问题,把快捷键给错开。这有很多种可能,我采用的方式是关闭Windows的Shift键中英切换,把左Shift让给开关fcitx用,同时关掉fcitx里的输入法循环切换快捷键(因为可选快捷键不够用了……)。具体来讲:
1. Windows: 设置 –> 时间和语言 –> 区域和语言 –> 中文(中华人民共和国)–> 选项 –> 微软输入法 → 按键 –> “中/英文模式切换” 选 “无”
2. Fcitx:用fcitx-configtool打开配置,设置如下
其他设置
我装了xterm, screen和vim-gtk3
sudo apt-get install xterm screen vim-gtk3 x11-xserver-utils
~/.profile中的相关设置如下
export SCREENDIR=$HOME/.screen # 修复screen创建目录的权限问题
xrdb -merge $HOME/.Xresources # xterm使用
最后如果你用VIM的深色主题,可以在.vimrc里设置
set t_ut=
以禁用背景色擦写(Background Color Erase)
另外可以禁止蜂鸣。打开/etc/inputrc,并反注释小“set bell-style none”
快捷启动
如果每次启动都要先开xlaunch,再开ubuntu终端,再开程序就太麻烦了。因为我只需要xterm,可以写个vbs来方便开启,脚本如下
set ws=wscript.createobject("wscript.shell")
ws.run """C:\Program Files\VcXsrv\vcxsrv.exe"" :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -silent-dup-error",0
WScript.Sleep 500
ws.run "C:\Windows\System32\bash.exe -l -c 'export DISPLAY=:0.0; fcitx &> /dev/null'",0,True
WScript.Sleep 500
ws.run "C:\Windows\System32\bash.exe -l -c 'cd $HOME; xterm'",0
这个脚本先开VCXSRV,再通过bash.exe开fcitx,最后开xterm,中间都有延时。双击就可以运行,最后会弹出xterm的界面。
注意fcitx这里其实很容易出问题,如果没有启动起来只能手动启动了……我想了点办法,但都没什么用。如果你打算装完整的DE,这个问题就容易解决了。
脚本可以放到任何方便的地方,比如“我的文档”,之后要用只需要按Win键,然后输入xterm就能搜到了,再按回车即可启动。
最后补一张图:
参考链接