到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中。
我没有在这里复制该教程,因为它相当普遍(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桌面软件。 这让我可以运行gedit
和nautilus
。 此外,我还可以使用apt
或apt-get
命令通过CLI(命令行界面)安装特定的GUI应用程序。
当我想在WSL中尝试我的许多Ubuntu bash脚本时,必须安装zenity
,以便显示zenity
和yad
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中的应用程序。
-
在Sourceforge上从这里安装VcXsrv
-
直接运行VcXsrv应用程序,不要启动XLaunch。 当您将鼠标hover在Win10任务栏上的图标上时,您应该看到
localhost:0.0 - 0 clients
-
打开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
-
你完成了! 现在只需从Bash运行synaptic,nautilus或firefox,它们应该加载到Win10桌面上。 像这样的GUI选项是错误但可操作的。 您可以安装
ubuntu-desktop
,unity
,ccsm
,compiz
并尝试为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应用程序运行。
另外,我使用了本教程,并进行了一些更改:
- 我没有安装
xfce
,因为我不知道为什么我需要一个桌面。 - 在
XLaunch
选择Multiple Windows
(没有DE,因此不需要一个巨大的窗口) - 不需要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欧元..所以如果它太多了,也许等待销售!