我想知道哪种方法最方便(安装和使用都容易),以及哪种方法占用的内存较少。
我只想要Synaptic和CMake。为什么它们不能作为内置功能呢?
我选择在WSL(Windows 10子系统Linux)中使用VcXsrv
。我建议每个人在选择Windows 10 Ubuntu 16.04中的图形用户界面(GUI)支持之前,应该在xming
(被接受的答案)和VcXsrv之间进行研究。
安装很简单。截至2019年3月17日,您可以简单地接受默认设置。如果您想从Bash Shell /终端内调用gedit
,则需要编辑~/.bashrc
并插入此行:
export DISPLAY=localhost:0.0
sudo apt install ubuntu-desktop
sudo apt install yad
sudo apt install gedit
gedit
和nautilus
。此外,我还可以通过CLI(命令行界面)使用apt
或apt-get
命令安装特定的GUI应用程序。
当我想在WSL中尝试我的许多Ubuntu bash脚本时,必须安装VcXsrv,以便显示zenity
和yad
的X窗口对话框供用户输入。
正如其他人所指出的,WSL中的GUI并不完美,您可能需要花时间解决一些问题。而且,有些GUI软件在WSL中根本无法工作。
我修改了/etc/environment
以调整GUI下拉菜单:
PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0
/mnt/e/bin
是一个不寻常的路径,因为我在这里存储了在 Windows 10 双启动 WSL 和 Ubuntu 16.04 双启动中使用的脚本。大多数用户不会在他们的计算机上包含它。gedit
。此外,我的许多bash脚本使用zenity
或yad
来创建X窗口对话框。除非安装了VcXsrv
,否则这些bash脚本将无法运行。 - WinEunuuchs2Unixexport DISPLAY=:0
。现在我可以在Ubuntu中运行 xhost
、xeyes
和 gnuplot
(前提是这些程序已经在Ubuntu WSL中安装好了)。 - Daniel K.export LIBGL_ALWAYS_INDIRECT=1
,这样你可以在使用VcXsrv的X环境中获得一些OpenGL应用程序的硬件加速。 - JippersDISPLAY="localhost:0.0"
。 - Maxim Imakaevexport DISPLAY_NUMBER="0.0"
和另一行:export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):$DISPLAY_NUMBER
。 - Manuel Alves我没有在这里复制那个教程,因为它非常普遍(通过 ssh 连接到 X),而且我希望一些应用即使使用这种技术也无法正常工作。
DISPLAY
,然后就可以开始了(至少对于xming和VcXsrv来说是这样)。 - dma1324从这里的Sourceforge安装VcXsrv
直接运行VcXsrv应用程序,不要启动XLaunch。当你将鼠标悬停在Win10任务栏上的图标上时,你应该看到localhost:0.0 - 0 clients
打开Ubuntu Bash:
cd /mnt
(在 localhost@localhost:/mnt$ 中的结果)
cd ..
sudo apt-get install dbus synaptic nautilus --install-suggests --show-progress
cd /usr/share/dbus-1 && sudo vi session.conf
<!-- <listen>unix:tmpdir=/tmp</listen> || Original Command --> to preserve original rules
<listen>tcp:host=localhost,bind=0.0.0.0,port=0</listen>
<auth>EXTERNAL</auth>
<auth>DBUS_COOKIE_SHA1</auth>
<auth>allow_anonymous</auth>
:wq
保存文件。 $ export DISPLAY=localhost:0
$ sudo service dbus start
* Starting system message bus dbus [OK]
$ echo $DISPLAY
localhost:0
ubuntu-desktop
、unity
、ccsm
、compiz
并尝试运行Ubuntu的Unity桌面。我没有尝试设置"Steam",因为我还在努力运行"Unreal",祝好运:)如果有人知道如何在XServer而不是XTerm上运行gnome-terminal
,请分享...
P.S
您可以将VcXsrv添加为可引导的Win10
为了最大限度地使用"Steam"作为原帖中指定的资源,请对Windows进行一些调整以进行网络数据包管理(以降低延迟)和CPU/GPU优先级设置,使其成为Win10XBox... :)
虽然你将在"Unix"下运行"Steam",但shell仍然是"Windows",这使你可以在"Unix"上启动"Steam"...
Tcp Prep:;
在注册表编辑器中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id}
{NIC-id}
,找到其中列出了您的IP地址的那个;在这个{NIC-id}
键下创建以下DWORD值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile.
多媒体流媒体和使用“多媒体类调度程序”服务(MMCSS)的某些游戏只能利用CPU的80%。 “多媒体类调度程序”服务(MMCSS)确保对CPU资源的优先访问,而不会剥夺较低优先级的后台应用程序的CPU资源。
要实现此调整,请运行 regedit 并修改注册表键。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games
为这个 Windows=Xbox 调整(抱歉,是很久之前我复制了你的指引)的作者致以热烈的欢呼...
附言:如果 XServer 对你想做的事情失败,请尝试使用 Docker 找到解决办法。
微软宣布支持 WSL 2 GUI: https://devblogs.microsoft.com/commandline/the-windows-subsystem-for-linux-build-2020-summary/#wsl-gui
<auth>allow_anonymous</auth>
更改为<auth>ANONYMOUS</auth>
,然后执行service dbus restart
,接着gnome-terminal
应该可以正常工作。 - ZABexport DISPLAY_NUMBER="0.0"
和另一行:export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):$DISPLAY_NUMBER
。 - Manuel Alves尽管微软并没有‘官方’支持完整的图形用户界面桌面环境,但它是可以工作的。
打开或关闭Windows功能
启用适用于Linux的Windows子系统
重新启动计算机
打开Microsoft Store
搜索Ubuntu
在应用程序下选择Ubuntu 18.04
点击获取
打开Ubuntu并等待安装
设置用户名和密码
运行以下命令:
sudo apt-get update -y
sudo apt-get install ubuntu-desktop -y
sudo apt-get install xfce4 xorg xrdp -y
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini
cd /home/user/
sudo vim .xsession
添加文本:
gnome-session --session=ubuntu-2d
sudo chmod 755 .xsession
sudo systemctl enable xrdp
sudo adduser remote
sudo usermod -aG sudo remote
cd /etc/xrdp
sudo chmod 777 startwm.sh
vim startwm.sh
#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession
添加文本:
startxfce4
exit
sudo /etc/init.d/xrdp start
sudo /etc/init.d/xrdp stop
exit
虽然在最初提出这个问题时并不是一个选择,但现在可以使用WSLg在WSL2上直接支持Linux图形界面应用程序。
当我最初撰写答案时,WSLg只能在Windows 11上使用,这使得无法升级的大量Windows 10用户无法使用。但随着WSL应用程序包的发布,情况已经发生了变化,安装对于大多数用户来说更加容易。
目前,Windows 10用户需要安装KB5020030或更高版本,这意味着您的Windows版本号将以.2311
或更高结尾。
然后,Windows 11和Windows 10 xxxxx.2311
用户应该能够使用以下命令进行安装或更新:
wsl --install
# or, if already installed
wsl --update
# to confirm:
wsl --version
WSLg 支持使用更新的驱动程序进行 GPU 加速。Pulse Audio 也预先配置好。
WSLg 架构采用基于 CBL-Mariner 发行版的只读 "系统发行版",微软还将其用于 Azure 云服务。该发行版已预先配置为运行 Wayland/XWayland,并通过内部 WSL 网络共享套接字,并为每个安装的 WSL2 发行版(如 Ubuntu)创建符号链接到相应的文件(例如 /tmp/.X11-unix
)。
WSL 的 /init
(PID 1)进程在初始启动时预先配置了 DISPLAY
和 WAYLAND_DISPLAY
变量。
请注意,WSLg 仅适用于 WSL2,不适用于 WSL1 实例。
WSLg 概述和评分:
安装简便:现在Windows 10用户也可以安装,对于大多数使用情况来说,这几种技术中几乎肯定是最简单的。sudo apt install xrdp xfce4
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
# So it doesn't interfere with Windows RDP on 3389
#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession
exec startxfce4
sudo service xrdp start
localhost:3390
。确保选择Xorg作为会话类型。localhost
流量路由到WSL。安装方便:只要桌面管理器不需要Systemd(例如Gnome),就非常好。在WSL中运行Systemd目前是一个很大的挑战。虽然有第三方辅助工具可用,但在Systemd下,WSL的系统和使用方式发生了巨大变化。
使用便捷:相当不错-它没有自动配置为在需要时启动,所以不像WSLg那样无缝。有些人报告说它的性能不如VcXsrv,但我也体验到了出色的性能。
灵活性:窗口选项最不灵活。你必须运行一个窗口管理器,并为xrdp进行配置。它不能在Windows桌面上运行单个应用程序。WSLg和第三方X服务器都可以全屏或窗口化运行。
这种方法可以在Windows 10下运行,并且应该也可以在WSL1下运行,尽管我不记得我是否真的测试过xrdp与WSL1一起使用。
内存消耗:正如我预期的那样,这种技术的内存消耗远高于其他方法。在Vmmem下启动xrdp下的Xfce4桌面额外消耗了687MB的内存。
性能:我个人使用xrdp的范围有限,主要是简单的UI应用程序,性能相当响应。然而,更深入的检查显示,这绝对是性能最差的选择。使用VLC播放H.264视频会出现严重的卡顿,而glmark2得分为167,约为VcXsrv的一半。
最后,对于Windows 10和/或WSL1,"正常"的推荐方法(大多数在其他答案中提到)是在Windows上安装第三方X服务器,并配置WSL(版本1或2)以使用它。
我要补充的是,设置WSL2的DISPLAY变量的旧方法可能有点过时了。我建议使用:
export DISPLAY="$(hostname).local:0"
.local
域),在Windows 10和WSL中已经有几年的时间了。由于在WSL Ubuntu中,您的hostname
与Windows的"计算机名称"相同,因此它会自动连接到Windows主机的正确IP地址。DISPLAY=:0
应该可以工作,因为它与Windows共享相同的网络接口(X服务器正在运行的地方)。安装方便:在我看来,这是三个选项中最容易出问题的一个。你的结果可能会有所不同,但从Stack网站上发布的答案和问题数量可以看出,人们确实会遇到各种问题。从Windows主机到WSL2虚拟网络的跨网络通信使事情变得复杂。
使用便利:一旦正确安装和配置,中等到容易使用。虽然当在WSL中执行第一个图形界面应用程序时,WSLg会“按需”启动,但在需要时您确实需要手动启动第三方X服务器。或者您可以一直保持运行状态,但这将意味着长期占用内存。
灵活性:非常灵活 - 可以以窗口化或全屏模式运行。目前没有Wayland选项。
适用于Windows 10/11和WSL1/WSL2。
内存消耗:这三个选项中最好的情况。总共只消耗了48MB - Vmmem增加了10MB,VcXsrv本身增加了另外38.6MB。
性能:虽然我倾向于喜欢xrdp,但我今天的基准测试将让我更仔细地研究VcXsrv(以及其他X服务器,如MobaXterm)。VcXsrv显然进行了一些OpenGL加速,其glmark2分数为322,几乎是xrdp的两倍。即使在3440x1440的分辨率下,H.264的VLC播放也非常流畅(很抱歉,没有4K用于测试)。
要使用此功能,您需要在Windows 11 Build 22000或更高版本上运行。
已安装的vGPU驱动程序
这将使您能够使用虚拟GPU(vGPU),从而可以受益于硬件加速的OpenGL渲染。
假设您已满足所有先决条件并已安装了WSL,现在您需要更新WSL。
打开 PowerShell 窗口,方法是点击 开始 → 输入 "Power Shell" → 右键单击 Windows PowerShell → 以管理员身份运行。
更新 WSL:
wsl --update
您需要重新启动 WSL 才能使更新生效:
wsl --shutdown
你现在可以开始在WSL上使用GUI应用程序了。
注意: WSL上的GUI应用程序支持并不提供完整的桌面体验。它依赖于Windows桌面,因此安装面向桌面的工具或应用程序可能不受支持。
安装任何GUI应用程序,例如,要安装gedit,请运行:
sudo apt update
sudo apt install gedit
gedit /path/to/any/file/you/want/to/edit
参考资料:官方文档
sudo apt-get update
,然后按回车键。sudo apt install task-mate-desktop
,然后按回车键。或者对于Ubuntu用户:
sudo apt install tasksel
,然后按回车键。sudo apt update
,然后按回车键。sudo tasksel install ubuntu-mate-desktop
,然后按回车键。第三步:在Windows 10中安装X服务器。
我使用了一个名为VcXsrv的开源服务器。可以从https://sourceforge.net/projects/vcxsrv/下载。
安装完成后:
在Windows 10中打开XLaunch
执行以下设置:
"一个大窗口"
显示编号:0
下一步
启动无客户端
下一步
完成
第4步:在Linux控制台进行设置:
输入export DISPLAY=:0
输入export LIBGL_ALWAYS_INDIRECT=1
(可能不需要此命令)
第5步:显示mate-desktop图形界面:
对于Debian用户,输入mate-session
对于Ubuntu用户,输入mate-session
或lightdm-session
mate-session
导致无法初始化服务器:无法连接:连接被拒绝 **(mate-session:4087):警告**:10:11:55.427:无法打开显示器:
- phiexport DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
此外,我的Windows防火墙(私有/公共)阻止了VcXsrv。 - phi如果你想要一个无需努力的即用解决方案,请使用MobaXTerm。它是一个很棒的多标签终端仿真器,直接支持WSL,并且内置了优化的X服务器。我经常在Moba上使用synaptic,甚至是RStudio。
### Setup a D-Bus instance that will be shared by all X-Window apps
pidof dbus-launch 1> /dev/null || dbus-launch --exit-with-x11 1> /dev/null 2>
/dev/null
## Export
export DISPLAY=127.0.0.1:0.0
我选择了Panther的答案,不仅因为它是唯一的答案,而且还因为它是正确的答案;没有一种无麻烦(直接)的方法来运行GUI应用程序。
另外,我使用了this的教程,并进行了一些修改:
xfce
,因为我不知道为什么需要一个桌面。XLaunch
中选择了Multiple Windows
(没有桌面环境,因此不需要一个巨大的窗口)。我安装了哪些GUI应用程序?只有Synaptic和CMake,因为我真的想不出在WSL上还需要什么其他的。
我不使用虚拟机/双启动,原因正如Panther指出的那样;我需要一个方便(对我来说)的开发环境,而不是一个完全灵活的操作系统。