WSL开发系列-gui篇(wslg)
直到2022年,wslg的体验仍较差,难以用于日常开发,大部分情况下不建议使用
导航
0-1 为什么我不推荐使用wslg
- 当前wslg不成熟,bug较多,如idea频繁卡死(冻结)导致文件修改丢失、全屏偏移等
- 正经人谁用linux是为了gui?
0-2 wslg有哪些应用场景
以我浅薄的开发经历来说,只有一次,
就是使用wsl的chrome浏览器访问被kerberos保护的hadoop web界面。
虽然理论上windows的浏览器也可以做到,但是麻烦得多。
而在linux系统中,kerberos认证就是kinit一个指令的事情。
1 中文环境及输入法
这个教程比较多,而且写得都不一样,但大同小异,需要注意的是
输入法没有切换处理很可能是快捷键被windows系统的覆盖了,
需要手动调出来输入法的配置界面,修改快捷键
比方说fcix的是fcitx-config-gtk3命令
然后我的配置是这样的,就是shift键,保持和windows使用习惯统一
这里的教程可以参考:https://monkeywie.cn/2021/09/26/wsl2-gui-idea-config/
搜狗输入法参考:https://zhuanlan.zhihu.com/p/142206571
搜狗输入法配置命令:sogouIme-configtool
我的配置和里面的不一样, 也没有遇到idea切不出输入法的问题
如果有的话参考文章里的方法或者看:https://github.com/microsoft/wslg/issues/278
2 手动添加软件的快捷方式到开始菜单
1 |
|
参考链接:https://juejin.cn/post/6966630345915498526
3 wslg处理快捷方式无法以root用户运行应用
很多linux的软件默认不支持root用户启动,如chrome,会报错:
Running as root without –no-sandbox is not supported. See https://crbug.com/638180
这是报错原理:
wslg的应用通过windows快捷方式启动时,用的是wsl默认用户,
而我设置的默认用户是root,会导致闪退。
因为wslg我使用频率很低,故没必要特地去把默认用户改为普通用户。
这里介绍下几种处理方法
(0) 修改默认用户
使用范围:平常习惯使用sudo命令操作的
有效期:永久
1 |
|
(1) 修改linux桌面图标配置(原理:修改启动命令)
适用范围:可以在启动命令中添加特定选项规避问题的,如chrome可使用–no-sandbox
有效期:直到软件更新(图标刷新)
以下为例子
去 /usr/share/applications 目录对chrome的快捷方式进行编辑,修改其启动命令
1 |
|
在其Exec列添加 –no-sandbox ,如下
1 |
|
(2) 修改windows-wslg桌面图标配置(原理:修改调用用户)
适用范围:所有
有效期:重启失效
有些软件(如firefox)就是不支持root用户运行,
这个时候需要修改其windows图标对应启动命令,指定用户启动
如下,linux的图标所在文件夹类似:C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Ubuntu-20.04
将快捷方式-属性-目标由“C:\Windows\System32\wslg.exe ~ -d Ubuntu-20.04 firefox”改为
“C:\Windows\System32\wslg.exe ~ -d Ubuntu-20.04 su 用户名 -c firefox”
(3)直接shell启动
适用范围:所有
有效期:shell会话
1 |
|
4 在wslg使用chrome访问kerberos页面
wslg-chrome安装见:https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps#run-linux-gui-apps
- 配置kerberos
1
2
3
4
5
6mkdir -p /etc/opt/chrome/policies/managed/
cat << 'EOF' > /etc/opt/chrome/policies/managed/kerberos.json
{ "AuthServerAllowlist": "*",
"AuthNegotiateDelegateAllowlist": "*" }
EOF - 启动
1
2
3kinit -kt /home/admin02.service.keytab admin02/[email protected]
google-chrome --no-sandbox
其他
直接使用windows访问kerberos页面
参考 https://blog.csdn.net/sinat_20554629/article/details/105283518 ,
在Windows上,必须使用Firefox + MIT Kerberos Windows客户端进行认证
不支持edge、chrome、ie等
firefox访问kerberos参考:
https://blog.csdn.net/IUNIQUE/article/details/108615090
https://www.cnblogs.com/kischn/p/7443343.html
具体操作流程参考如下:
1.下载并安装mit kerberos客户端
下载地址:https://web.mit.edu/kerberos/dist/
2.修改PATH
安装完了kerberos就自动的在 PATH 里面加上了自己的目录,但是在最后。
jdk也自带了kerberos工具,所以需要跳转PATH里kerberos的优先级在前面
3.将krb5.conf文件内容复制到krb5.ini
完整默认路径:C:\ProgramData\MIT\Kerberos5\krb5.ini
4.kinit登录
5.修改firefox配置
1. 输入 about:config
2. 修改配置项 network.negotiate-auth.trusted-uris 的值为: master01,worker01
3. 修改配置项 network.auth.use-sspi 的值为: false
4. 重启firefox
6.使用firefox打开kerberos页面
注意:机器重启会导致kinit信息失效