首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WSL2:从Windows10Bash Shell运行图形Linux桌面应用程序"Error E233: cannot open display“

WSL2:从Windows10Bash Shell运行图形Linux桌面应用程序"Error E233: cannot open display“
EN

Stack Overflow用户
提问于 2020-05-18 07:38:21
回答 9查看 94.6K关注 0票数 27

如何从Windows10的Bash Shell运行图形化Linux桌面应用程序?

首先,我按照here中显示的步骤安装了Windows Subsystem for Linux (WSL),如下所示:

(1)安装了Windows 10 Pro Insider Preview Build 19619。

(2)安装了Ubuntu Linux发行版。

(3)将发行版本从WSL 1更改为WSL 2。

其次,为了在Windows10的Bash Shell中启用图形化的Linux桌面应用程序,我按照如下here所示的步骤进行了操作:

(4)我安装了一个Xming的X Server

(5)安装基于GTK的图形化vim编辑器作为测试,使用:

sudo apt-get install vim-gtk

(6)设置我的display环境变量

export DISPLAY=:0

(7)启动应用程序

gvim

然而,这并没有给应用程序提供午餐,我得到了以下错误:

代码语言:javascript
运行
复制
E233: cannot open display
Press ENTER or type command to continue
E852: The child process failed to start the GUI
Press ENTER or type command to continue

你知道为什么会发生这个错误吗?

EN

Stack Overflow用户

发布于 2020-12-11 09:52:29

以下说明是从我写的一篇文章中复制和粘贴的,但它丢失了原始格式、链接和屏幕截图:

来源: How to Install Ubuntu Desktop with a Graphical User Interface in WSL2

下载VcXsrv:访问官网点击“下载”

安装VcXsrv:打开"vcxsrv-64.1.20.8.1.installer.exe“点击”下一步“点击”安装“点击”关闭“

允许访问VcXsrv:选中“专用网络”单击“允许访问”

打开PowerShell:按"Windows Windows“在搜索栏中输入"PowerShell”右键单击“Windows PowerShell”单击“以管理员身份运行”

打开WSL2:从下面复制命令将命令粘贴到PowerShell中按"Enter“

wsl

安装Ubuntu桌面:复制下面的命令,将命令粘贴到PowerShell中,按"Enter“

sudo apt --yes install ubuntu-desktop

设置Username变量:复制下面的命令,将命令粘贴到PowerShell中,按"Enter“

username=$(wslvar USERNAME)

创建Ubuntu目录:复制下面的命令,将命令粘贴到PowerShell中,按"Enter“

mkdir --parents /mnt/c/users/$username/.ubuntu/

打开Ubuntu目录:复制下面的命令,将命令粘贴到PowerShell中,按"Enter“

cd /mnt/c/users/$username/.ubuntu

下载用于微软产品的Linux软件存储库:从下面的说明复制命令,将命令粘贴到PowerShell中按"Enter“

Ubuntu 20.04: wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb --output-document packages-microsoft-prod.deb Ubuntu 18.04: wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb --output-document packages-microsoft-prod.deb

Install Linux Software Repository for Microsoft Products:从下面的说明复制命令,将命令粘贴到PowerShell中,按"Enter“

sudo dpkg --install packages-microsoft-prod.deb

更新存储库:从下面的说明中复制命令,将命令粘贴到PowerShell中,按"Enter“

sudo apt update

安装APT Transport for HTTPS:从下面的说明复制命令,将命令粘贴到PowerShell中按"Enter“

sudo apt install --yes apt-transport-https

更新存储库:从下面的说明中复制命令,将命令粘贴到PowerShell中,按"Enter“

sudo apt update

Install .Net:从下面复制命令将命令粘贴到PowerShell中按"Enter“

sudo apt install --yes dotnet-sdk-5.0

将Arkane系统添加到源列表目录:从下面复制命令,将命令粘贴到PowerShell中,按"Enter“

sudo sh -c 'echo "deb [trusted=yes] https://wsl-translinux.arkane-systems.net/apt/ /" > /etc/apt/sources.list.d/wsl-translinux.list'

更新存储库:从下面的说明中复制命令,将命令粘贴到PowerShell中,按"Enter“

sudo apt update

安装Genie:复制下面的命令,将命令粘贴到PowerShell中,按"Enter“

sudo apt install --yes systemd-genie

创建Sudoers文件:从下面的说明复制命令,将命令粘贴到PowerShell中,按"Enter“

echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/genie" | sudo EDITOR="tee" visudo --file /etc/sudoers.d/$USER

创建桌面脚本:复制下面的代码,将代码粘贴到PowerShell中,按"Enter“

代码语言:javascript
运行
复制
# CREATE BASH SCRIPT

# Store block of text with here document
create_bash_script=$(cat << end_of_string

# Define necessary environment variables
export DISPLAY="\$(cat /etc/resolv.conf | grep nameserver | awk '{ print \$2 }'):1.0"
export DESKTOP_SESSION="ubuntu"
export GDMSESSION="ubuntu"
export XDG_SESSION_DESKTOP="ubuntu"
export XDG_CURRENT_DESKTOP="ubuntu:GNOME"
export XDG_SESSION_TYPE="x11"
export XDG_BACKEND="x11"
export XDG_SESSION_CLASS="user"
export XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/var/lib/snapd/desktop"
export XDG_CONFIG_DIRS="/etc/xdg"
export XDG_RUNTIME_DIR="\$HOME/xdg"
export XDG_CONFIG_HOME="\$HOME/.config"
export XDG_DATA_HOME="\$HOME/.local/share" 
export XDG_CACHE_HOME="\$HOME/.cache"
export XDG_DESKTOP_DIR="\$HOME/Desktop"
export XDG_DOCUMENTS_DIR="\$HOME/Documents"
export XDG_DOWNLOAD_DIR="\$HOME/Downloads"
export XDG_MUSIC_DIR="\$HOME/Music"
export XDG_PICTURES_DIR="\$HOME/Pictures"
export XDG_PUBLICSHARE_DIR="\$HOME/Public"
export XDG_TEMPLATES_DIR="\$HOME/Templates"
export XDG_VIDEOS_DIR="\$HOME/Videos"

# Start desktop environment
gnome-session

end_of_string
)

# Store username environment variable in lowercase
username=$(wslvar USERNAME | awk '{ print tolower($0) }') &&

# Save block of text in bash file
echo "${create_bash_script}" > "/mnt/c/users/$username/.ubuntu/02_start_desktop.sh"

下载快捷方式图片:从下面复制命令,将命令粘贴到PowerShell中,按"Enter“

wget https://assets.ubuntu.com/v1/9fbc8a44-circle-of-friends-web.zip

解压快捷图像:从下面复制命令,将命令粘贴到PowerShell中,按"Enter“

unzip -o 9fbc8a44-circle-of-friends-web.zip

创建快捷方式图标:从下面的说明复制命令,将命令粘贴到PowerShell中,按"Enter“

convert -resize 64x64 ./circle-of-friends-web/png/cof_orange_hex.png ubuntu.ico

退出WSL2:从下面复制命令,将命令粘贴到PowerShell中,按"Enter“

exit

创建VcXsrv脚本:复制下面的代码,将代码粘贴到PowerShell中,按"Enter“

代码语言:javascript
运行
复制
# RELOAD VCXSRV SCRIPT

# Store username environment variable in lowercase
$username = $env:username.tolower()  

# Store block of text with here-string
$reload_vcxsrv_script = @"

# Stop vcxsrv proccess that contains "1.0" in the program window title
get-process vcxsrv | where { `$_.mainwindowtitle -like "*1.0*" } | stop-process

# Start vcxsrv process in a large program window on display number one
start-process "c:\program files\vcxsrv\vcxsrv.exe" -argument ":1 -ac -nowgl -multimonitors -dpms"

"@

# Save block of text in powershell file
echo "${reload_vcxsrv_script}" > $env:userprofile/.ubuntu/reload_vcxsrv.ps1

创建Ubuntu脚本:从下面的说明复制代码,将代码粘贴到PowerShell中,按"Enter“

代码语言:javascript
运行
复制
# CREATE VISUAL BASIC SCRIPT

# Store username environment variable in lowercase
$username = $env:username.tolower()           

# Store block of text with here-string
$create_vbs_script = @"

' Run PowerShell script in background
set application = createobject("shell.application")
application.shellexecute "powershell", "-file c:\users\admin\.ubuntu\01_reload_vcxsrv.ps1", "", "", 0

' Allow PowerShell script to complete
wscript.sleep 3000

' Run Bash script in background
set shell= createobject("wscript.shell")
shell.run "wsl sudo genie -c bash /mnt/c/users/admin/.ubuntu/02_start_desktop.sh", 0

"@

# Save block of text in bash file
echo "${create_vbs_script}" > $env:userprofile/.ubuntu/03_start_ubuntu.vbs

创建快捷方式脚本:复制下面的代码,将代码粘贴到PowerShell中,按"Enter“

代码语言:javascript
运行
复制
# Store block of text with here-string
$create_shortcut_script = @"

# Define location variables
`$shortcut_location = "`$env:userprofile\.ubuntu\Ubuntu.lnk"
`$program_location = "`$env:userprofile\.ubuntu\03_start_ubuntu.vbs"

# Create shortcut
`$object = new-object -comobject wscript.shell
`$shortcut = `$object.createshortcut(`$shortcut_location)
`$shortcut.targetpath = `$program_location
`$shortcut.iconlocation = "`$env:userprofile\.ubuntu\ubuntu.ico"
`$shortcut.save()

"@

# Save block of text in powershell file
echo $create_shortcut_script > $env:userprofile/.ubuntu/04_create_shortcut.ps1

打开Ubuntu目录:复制下面的命令,将命令粘贴到PowerShell中,按"Enter“

cd c:\users\admin\.ubuntu

创建快捷方式:从下面的说明复制命令,将命令粘贴到PowerShell中按"Enter“

powershell.exe -file .\04_create_shortcut.ps1

在资源管理器中打开目录:复制下面的命令,将命令粘贴到PowerShell中,按"Enter“

explorer .

启动Ubuntu桌面:双击"Ubuntu“快捷方式

打开终端:点击“活动”在左上角输入“终端”到搜索栏点击“终端”

禁用屏幕锁定:从下面的说明复制命令将命令粘贴到终端按"Enter“

gsettings set org.gnome.desktop.screensaver lock-enabled false

安装Snap Store:从下面复制命令将命令粘贴到终端按"Enter“

sudo snap install snap-store

票数 3
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61860208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档