到2018年,在WSL上运行GUI应用程序的最简单方法是什么?

我四处搜索,目前有两种方法建议; 安装WSL增强function并安装XServer。

我想知道哪种方法最无障碍(易于安装和使用),哪一种方法占用的内存较少。

我只想要Synaptic和CMake。 为什么这不是内置function?

简短的回答是你不能,因为WSL还不支持这个function。 WSL不是具有Linux内核的完整Linux安装,它允许您在Windows(Microsoft)内核上运行一些本机linux命令/二进制文件,并且具有局限性。

请参阅https://github.com/Microsoft/WSL/issues/2356

但是,您可以将第三方X服务器(例如xming)和ssh安装到WSL中。

https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx

我没有在这里复制该教程,因为它相当普遍(X over ssh),我希望有些应用程序即使使用这种技术也无法工作。

VcXsrv

我选择在WSL中使用VcXsrv (适用于Linux的Windows 10子系统)。 我建议大家在xming (接受的答案)和VcXsrv之间进行研究, xming在Windows 10 Ubuntu 16.04中选择一个或另一个用于图形用户界面(GUI)支持。

安装VcXsrv后你能做什么?

我能够跑:

 sudo apt install ubuntu-desktop sudo apt install xubuntu-desktop 

…安装GUI桌面软件。 这让我可以运行geditnautilus 。 此外,我还可以使用aptapt-get命令通过CLI(命令行界面)安装特定的GUI应用程序。

当我想在WSL中尝试我的许多Ubuntu bash脚本时,必须安装zenity ,以便显示zenityyad x-windows对话框以供用户输入。

正如其他人已经注意到WSL中的GUI并不完美,你可以期待花时间解决一些问题。 一些GUI软件也无法在WSL中运行。

我在Windows上的Ubuntu上使用Win 10 Bash上的VcXsrv获得了非常积极的体验(Ubuntu 16.04 Xenial x86_64 Linux 4.4.0-17074-Microsoft)。 我没有专注于运行Unity桌面,因为它没用,而且耗费资源。 我只是简单地使用XServer从Windows10桌面以GUI模式运行bash中的应用程序。

  1. 在Sourceforge上从这里安装VcXsrv

  2. 直接运行VcXsrv应用程序,不要启动XLaunch。 当您将鼠标hover在Win10任务栏上的图标上时,您应该看到localhost:0.0 - 0 clients

  3. 打开Ubuntu Bash:

     cd /mnt 

    (结果是localhost @ localhost:/ mnt $)

     cd .. 

    (localhost @ localhost:/ $意味着这个命令会带你到硬盘驱动器的开头,就像WSL可以看到的那样……)

     sudo apt-get install dbus synaptic nautilus --install-suggests --show-progress 

    (这将安装“dbus”为GUI创建虚拟连接器,“Synaptic Package Manager”和“Nautilus”文件浏览器用于统一桌面

     cd /usr/share/dbus-1 && sudo vi session.conf 

    (当在vi编辑器中打开session.conf

    i进入插入模式并添加

      to preserve original rules 

    比添加:

     tcp:host=localhost,bind=0.0.0.0,port=0 EXTERNAL DBUS_COOKIE_SHA1 allow_anonymous 

    完成编辑文件后按ESC键:wq保存文件。

    运行这些命令并检查其输出:

     $ export DISPLAY=localhost:0 $ sudo service dbus start * Starting system message bus dbus [OK] $ echo $DISPLAY localhost:0 
  4. 你完成了! 现在只需从Bash运行synaptic,nautilus或firefox,它们应该加载到Win10桌面上。 像这样的GUI选项是错误但可操作的。 您可以安装ubuntu-desktopunityccsmcompiz并尝试为Ubuntu运行Unity Desktop 。 我没有尝试设置“Steam”,因为我仍然痛苦地跑着“虚幻”,祝你好运:)

如果有人知道如何在XServer而不是XTerm上运行gnome-terminal请分享…

PS
您可以将VcXsrv添加为Win10可启动

要使用原始post中指定的“Steam”来最大化您的源,请稍微调整Windows以进行网络包管理(以降低延迟)和CPU / GPU优先级以制作Win10XBox … 🙂

虽然您将在“Unix”下运行“Steam”,但shell仍然是“Windows”,它允许您在“Unix”上启动“Steam”…

Tcp准备:;

在注册表中:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces 

在这里,您需要浏览子键列表以找到用于连接到Internet的网络适配器条目。 如果您使用的是DHCP,则需要查找DhcpIPAdddress条目(系统数据值为NOT :0.0.0.0 )才能找到正确的适配器。

找到正确的密钥后,右键单击它并选择New> Dword(32-bit)Value

将其命名为TcpFrequency ,然后单击“ 确定”

之后双击该值并将其十进制值设置为1.(要恢复默认设置,请将值更改为2或删除密钥)现在导航到以下项: HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

再次右键单击该键,然后选择New> Dword(32-bit)Value

将新参数命名为TcpDelay

之后双击它并将其十进制值更改为1.(要在以后恢复该键,请将其更改为0或删除该键)

Nagle的算法

Nagle的算法将几个小数据包组合成一个更大的数据包,以实现更高效的传输。 这旨在提高数据传输的吞吐效率。 禁用“唠叨”可以帮助减少某些游戏中的延迟/ ping。 默认情况下,在Windows中启用Nagle的算法。 要实现此调整,请修改以下注册表项。

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id} 

对于{NIC-id} ,请查找列出您IP地址的那个; 在此{NIC-id}项下,创建以下DWORD值:

  • TcpFrequency并将其设置为1以禁用游戏的“唠叨”。
  • TCPDelay并将其设置为1以禁用“唠叨”
  • TcpTicks并将其设置为0

注意:

一些报道说,这些调整确实减少了玩Dota 2和英雄联盟时的延迟,但对某些人来说并不适用。 我已经尝试过了,在播放Dota 2时,我的延迟从110秒提高到90毫秒(SEA服务器)。

网络节流指数

Windows实现了网络限制机制,这种限制背后的想法是处理网络数据包可能是一项资源密集型任务。 关闭这种节流以实现最大吞吐量是有益的。

要实现此调整,请运行regedit并修改注册表

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile. 

SystemProfile下 ,创建一个DWORD值并将其命名为NetworkThrottlingIndex,然后将其hex值设置为ffffffff以进行游戏和最大吞吐量:ffffffff完全禁用限制。


系统游戏响应能力(不太确定这个:)

多媒体流和一些使用“多媒体课程安排程序”服务(MMCSS)的游戏最多只能使用80%的CPU。 “多媒体类调度程序”服务(MMCSS)确保优先访问CPU资源,而不会将CPU资源拒绝给优先级较低的后台应用程序。

要实现此调整,请运行regedit并修改注册表项

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile. 

从那里,创建一个新的DWORD并将其命名为SystemResponsiveness将其十进制值设置为00000000以进行纯游戏/流式传输。

在与上述调整相同的注册表配置单元中,您还可以更改游戏的优先级。 要实现此调整,请转到

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games 

并更改以下注册表值:

  • 游戏中,“GPU优先级”将其值更改为8。
  • 游戏的“优先级”设置为1。

所有为“未知”的欢呼(原谅我,因为我复制了你的指示已经有一段时间了)这个Windows = Xbox调整的作者……

PPS:如果XServer失败了你想做什么尝试找到Docker的解决方法。

  • WSL_Apache_Roolez
  • Throttling_a_’mm’_:0
  • 你有邮件!!!

尽管Microsoft没有“正式”支持完整的GUI桌面环境,但它可以正常工作。

打开或关闭Windowsfunction
启用适用于Linux的Windows子系统
重启电脑
启动Microsoft Store
搜索Ubuntu
在Apps下选择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 

创建和修改.xsession

 cd /home/user/ sudo vim .xsession 

添加文字:

 gnome-session --session=ubuntu-2d 

保存并退出vi

 sudo chmod 755 .xsession sudo systemctl enable xrdp 

你需要在Ubuntu上建立第二个帐户

 sudo adduser remote sudo usermod -aG sudo remote 

修改startwm.sh

 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 

保存并退出vi

 exit 

在Windows中,重新启动Ubuntu并运行:

 sudo /etc/init.d/xrdp start 

在Windows中运行mstsc.exe
电脑:127.0.0.1:3390
将用户名留空

会议:Xorg
用户名:remote
密码:密码

享受xfce!

完成后,关闭远程桌面连接
返回Ubuntu命令行

 sudo /etc/init.d/xrdp stop exit 

我选择Panther的答案不仅因为它是唯一的,而且因为它是正确的答案; 没有麻烦(直接)的方式让gui应用程序运行。

另外,我使用了本教程,并进行了一些更改:

  1. 我没有安装xfce ,因为我不知道为什么我需要一个桌面。
  2. XLaunch选择Multiple Windows (没有DE,因此不需要一个巨大的窗口)
  3. 不需要mkdir修复,也不需要单独的终端。

我安装了哪些gui应用程序? 只有Synaptic和CMake,因为我真的想不出我在wsl上需要的任何东西。

我没有做VM /双启动,因为Panther指出了同样的原因; 我需要一个方便的(对我来说)开发环境,而不是一个完整的Flex操作系统。

  • 使用NAT网络在Windows机器上的VirtualBox中安装Fedora
  • 在WSL sudo service ssh start
  • 从Fedora运行ssh -Y 10.0.2.2

通常, 可以通过10.0.2.2访问 VirtualBox guest虚拟机的主机

现在你可以在Fedora桌面上安装任何WSL X程序,即使是使用无缝Windows。

因为你想要它很简单…在Microsoft商店中有一个名为x410的应用程序。 它基本上是一个没有使用Cygwin本身的Cygwin X11服务器。 分期付款后 – 即零配置 – 您可以运行WSL X11应用程序! (甚至整个桌面)。 您可能希望将以下行插入.bashrc(来自您的WSL用户帐户),以便您可以从bash终端运行应用程序。

 ### 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 

我在salve上买了x410大约5欧元..所以如果它太多了,也许等待销售!