Ubuntu 下 VS Code 渲染白屏问题 您所在的位置:网站首页 instagram打开后白屏 Ubuntu 下 VS Code 渲染白屏问题

Ubuntu 下 VS Code 渲染白屏问题

2024-06-02 19:09| 来源: 网络整理| 查看: 265

文章作者: Xizao Wang

发布时间: 2019-11-24, 11:14:10

最后更新: 2019-12-07, 00:02:35

原始链接: https://wangxiz.github.io/blog/posts/vscode-render-blank-under-ubuntu/ 

问题描述

我的 Ubuntu 16.04 上的 VS Code 在最近升级到 1.40.1 版本之后, 打开之后一直显示白屏. 但 VS Code 并不是处于卡死的状态, 因为菜单栏中的菜单项还是可以点击操作的, 只是编辑器的主体部分全部为白色, 如下图:

render-blank.png

 

系统环境 主机: macOS Catalina (10.15.1)虚拟机程序: Parallels Desktop 15 for Mac Home Edition (15.1.1)虚拟机: Ubuntu 16.04.6 LTS 64-bitVS Code 版本: 1.40.1apt 版本: 1.2.32 amd64snap 版本: 2.42.1 原因探究 snap 重装 VS Code

一开始我以为是升级的过程中出了问题, 简单, 那就重装嘛! 因为我的 VS Code 是用 snap 安装的, 我就先用:

1 sudo snap remove code

卸载了之前的安装, 然后用:

1 sudo snap install code --classic

重新安装, 打开新安装的 VS Code, 依然白屏…

apt 重装 VS Code

那会不会是 snap 的安装包的问题呢? 要不用 apt 试试?

于是我把 snap 版 VS Code 卸载了, 直接去官网下载了 VS Code 的 deb 安装包, 然后用:

1 sudo apt install ./code-1.40.1-1573664190_amd.deb

重新安装了 VS Code, 再次打开, 问题依然在…

禁用 GPU 硬件加速

那看来应该不是安装包的问题了, 我又回去仔细看了看处于白屏状态的 VS Code, 这才意识到可能是渲染的问题. 于是去 Google 搜索了相关的关键字, 在 VS Code 官方文档中找到了问题所在:

The Electron shell used by Visual Studio Code has trouble with some GPU (graphics processing unit) hardware acceleration. If VS Code is displaying a blank (empty) main window, you can try disabling GPU acceleration when launching VS Code by adding the Electron –disable-gpu command-line switch.

大家都知道 VS Code 是基于 Electron 框架开发的, 而我们这里遇到的白屏, 简单来说就是 VS Code 使用的 Electron shell 对于某些 GPU 硬件加速存在一些问题, 因此禁用 GPU 硬件加速就能解决这个问题了.

解决方案 命令行启动

如果要从命令行启动 VS Code 并禁用 GPU 硬件加速, 我们只需要为 code 命令添加参数 --disable-gpu 即可:

1 $ code --disable-gpu

每次运行都要加参数的话, 有点麻烦, 我们可以在 shell 配置文件 (.zshrc, .bashrc 等) 中添加一行:

1 alias code="code --disable-gpu"

重新打开 Terminal 或者手动加载配置文件, 关闭所有已打开的 VS Code 实例之后, 就可以正常通过 code 命令从命令行启动 VS Code 了.

Launcher 启动

在 GUI 界面下, 大多数用户可能还是习惯从 Launcher 启动应用. 但要从 Launcher 启动的话, 上面的 alias 就不起作用了, 因为 Launcher 并不是从 shell 里面去调用 code 命令来启动 VS Code 的.

在 Ubuntu 中, 桌面应用是通过桌面启动器来进行启动的, 每个桌面应用都对应着一个后缀为 .desktop 的桌面启动器, 类似于 Windows 下的快捷方式. 相应地, 我们需要修改 VS Code 对应的 code.desktop 启动器文件来设置启动参数.

 Note 对于使用 apt 安装的 VS Code, 其启动器文件路径为 /usr/share/applications/code.desktop; 对于使用 snap 安装的 VS Code, 其启动器文件路径为 ~/.local/share/applications/code.desktop.

code.desktop 内容为:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [Desktop Entry] Name=Visual Studio Code Comment=Code Editing. Redefined. GenericName=Text Editor Exec=/usr/share/code/code --unity-launch %F Icon=/usr/share/pixmaps/com.visualstudio.code.png Type=Application StartupNotify=false StartupWMClass=Code Categories=Utility;TextEditor;Development;IDE; MimeType=text/plain;inode/directory; Actions=new-empty-window; Keywords=vscode; X-Desktop-File-Install-Version=0.22 [Desktop Action new-empty-window] Name=New Empty Window Exec=/usr/share/code/code --new-window %F Icon=/usr/share/pixmaps/com.visualstudio.code.png

对 .desktop 启动器文件格式感兴趣的同学可以移步 Desktop Entry Specification, 这里不做过多介绍, 只关注我们需要修改的 Exec 条目部分. 我们只需要为启动器文件中的两个 Exec 条目分别加上 --disable-gpu 参数即可:

1 2 3 4 [Desktop Entry] Exec=/usr/share/code/code --unity-launch --disable-gpu %F [Desktop Action new-empty-window] Exec=/usr/share/code/code --new-window --disable-gpu %F

修改后, 关闭已打开的所有 VS Code 实例, 然后重新从 Launcher 打开 VS Code 就可以正常运行了.

 Warning 上述方式不能做到一劳永逸, 因为在升级 VS Code 时会自动重置 code.desktop 启动器, 重置之后我们手动添加的 --disable-gpu 参数就没有了. 因此, 这种方式在每次更新 VS Code 之后, 都需要我们手动重新修改 .desktop 启动器.

修改 argv.json 配置文件

从 VS Code v1.40 开始, 提供了一个关闭 GPU 硬件加速的 flag, 设置这个 flag 之后就不需要再传递 --disable-gpu 参数了.

We have heard issue reports from users that seem related to how the GPU is used to render VS Code’s UI. These users have a much better experience when running VS Code with the additional –disable-gpu command-line argument. Running with this argument will disable the GPU hardware acceleration and fall back to a software renderer. To make life easier, you can add this flag as a setting so that it does not have to be passed on the command line each time.

可以通过以下四个步骤来设置 flag:

打开命令面板 (Ctrl + Shift + P);运行 “首选项: 配置运行时参数” 命令, 该命令将打开 argv.json 运行时参数配置文件;向配置文件 argv.json 中添加项 "disable-hardware-acceleration": true;重启 VS Code.

但文档中也提到不要随便设置这个 flag, 除非你遇到了这里说的 GPU 硬件加速导致的渲染问题.

 Warning Do not use this setting unless you are seeing issues!

总结

修改配置之后, 就可以正常使用 VS Code 啦! 效果图如下:

render-normal.png

 

参考资料 Visual Studio Code FAQ | VS Code is blank?Desktop files: putting your application in the desktop menusGNOME Doc | Desktop Entry SpecificationDesktop Entry Specification — Specifications for creating a desktop fileDisplay error with Visual Studio Code under UbuntuHow can I disable GPU rendering in Visual Studio CodeVS Code Update 1.40.1 | Disable GPU acceleration



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有