适用于Linux的Windows子系统(WSL)的更好的终端体验?


29

Linux的Windows子系统(WSL)的终端非常小。我没有在Windows上使用太多终端-我通常使用Ubuntu或OSX-但我对默认终端如此裸露感到惊讶。

是否可以:

  1. 将Windows终端程序连接到WSL或

  2. 从WSL作为X窗口启动Ubuntu终端程序?

Answers:


26

我个人做后者:在多个Windows模式下将VcXsrv用作我的X服务器,然后启动xfce4-terminal(因为gnome-terminal出现了视觉问题,因此我不愿意尝试学习如何解决),突然我有了具有字体和颜色支持的称职终端。

我发现我需要将这些添加到我的bashrc中...

export DISPLAY="localhost:0"
export TERM=xterm-256color

从此reddit中为dbus 进行修复

sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf

我还安装了compiz,并使用cbwin项目从xfce4-terminal shell运行Windows程序。

我对这种设置感到非常满意,并使用NeoVim +许多本地linux插件,即使我的“工作”计算机必须是Windows。:)

也有可能在Windows上的Bash-on-Linux-on-Windows中启动SSH服务器,然后连接到该服务器,例如从MinTTY像从Cygwin。

PS:为了使启动xfce4-terminal变得轻松而又没有额外的bash cmd窗口,我编写了一个程序,除了启动带有参数的bash进程外,什么都不做,而无需控制台窗口即可启动xfce4-terminal。我在C#中做到了-基本上使用参数“ UseShellExecute” false和“ CreateNoWindow” true。然后,我将其固定在任务栏上,几乎看不到。

编辑:用VBScript的答案是出色的。这是相同的脚本,但是是JScript版本...

WScript.CreateObject("WScript.Shell").run('bash.exe -l -c "DISPLAY=:0.0 xfce4-terminal"', 0, false);

1
选择了答案,因为它的全面和帮助我找到stackoverflow.com/a/39188790 ; 我意识到将MobaXterm更新到> 9.0可以使我成为WSL的一个不错的终端。
David LeBauer

如果有人好奇,这里的链接后书签交易the "fix from reddit" for dbus被取消。
电话

@tel谢谢!我实际上不知道它来自哪里,并添加了链接...
aikeru

如果“您不愿解决的视觉问题”是您看不到目录或文件名提示的一部分,则原因是它们是深蓝色。在紫色的gnome终端背景上看不到它们。诀窍是将深蓝色重新映射为青绿色,然后效果良好。
WinEunuuchs2Unix

22

花了一些时间才能弄清楚其他答案中的所有隐含步骤,因此这里是一个逐步的摘要:

  1. 在Windows上,安装VcXsrvXMing
  2. 在Windows版Bash中,安装终端:sudo apt-get install xfce4-terminal
  3. 添加export DISPLAY=:0到您的中.bashrc。(将其添加到我身上.profile.bash_profile 对我不起作用)。这将允许您xfce4-terminal从bash正确启动,但与下面的命令正交。
  4. 在快捷方式或“运行”提示下运行以下命令(如@OhJeez在注释中建议的那样):

    powershell -windowstyle hidden -Command "iex \"bash ~ -c 'DISPLAY=:0 xfce4-terminal'\" "
    

其他说明:

  • ~开始bash你的home目录,你可以删除它在任何目录下的启动.vbs文件中,而不是。因此C:\Users\foo,例如,将其放入很方便。
  • 请注意,必须运行XMing才能运行脚本;为了在Windows中自动启动它,您可以按照本文中的说明进行操作。
  • Emacs 24(包含在Ubuntu 14.04中)似乎不适用于XMing。我必须按照本文的建议安装更新的版本

1
谢谢你的帮助。当我运行脚本时,似乎什么都没有发生(Xming服务器正在运行)。但是,如果我打开bash并运行xfce4-terminal它,效果很好。此外,如果我是bash -l -c xfce4-terminal从Windows cmd 运行的,则会收到警告,Gtk-WARNING **: cannot open display:并且什么也没有发生。我很困惑,因为我认为这些命令应该表现相同,有没有猜到?
rperryng

@rperryng是的-我也试图在不使用丑陋的bash命令提示符的情况下打开xfce,但是还没有运气。
安德鲁·毛

1
使用快捷方式启动xfce4-terminal的最佳解决方案。闪烁,但没有窗口保留:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" " 如果未运行,它将启动Xming的另一个版本:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -Command "iex '& \"C:\Program Files (x86)\Xming\Xming.exe\" -multiwindow'; iex \"bash.exe ~ -c 'DISPLAY=:0 xfce4-terminal'\" "
OhJeez

@OhJeez很好,感谢您解决该命令的复杂性。
安德鲁·毛

高分辨率显示器的解决方法。如果显示为4k,则终端中的字体会模糊。要解决此问题,您将需要:1.使用“ VcXsrv Windows X Server”而不是Xing sourceforge.net/projects/vcxsrv。2 .在兼容模式下运行xserver。为此,您将需要:用鼠标右键单击VcXsrv快捷方式。选择“属性”。在“兼容性”选项卡上,选中“替代高DPI缩放行为...”复选框,然后在下一个下拉列表中选择“应用程序”。3.运行xfce4-terminal并更改字体设置。将字体更改为更大的字体。
koorchik

10

我创建(并使用)了Windows子系统(WSL)的开源终端wsl-terminal,它基于minttywslbridge

屏幕截图


自我宣传时要小心-它看起来像垃圾邮件。askubuntu.com/help/promotion

2
如果您承认自我晋升就可以了
David LeBauer

而且您还没有承认。
muru 17/09 / 20,2

5
并且,请添加一些有关为何wsl-terminal会提供更好的终端体验的详细信息。
Cynplytholowazy

2
感谢您分享这一点。您的东西已经比内置终端更好-至少它可以更好地处理命令行换行。但是,快速进入命令开头的CTRL-A仍然失败。我对人们自我推广这样的东西感到满意。人们应该冷静下来。
EdH 17/12/23

5

在全新的Ubuntu安装中,我刚刚安装了XMing(在Windows中),然后(在Ubuntu中)xfce4-terminal,在我安装之后export DISPLAY=:0,它就可以了。

为了摆脱Windows的默认控制台,此VBS脚本可以完成此任务:

WScript.CreateObject("WScript.Shell").run "bash -l -c xfce4-terminal", 0, True

(在中设置了$ DISPLAY .profile。)

编辑:要使脚本可固定,请使用target创建一个快捷方式wscript "C:\path\to\thescript.vbs"


VBS似乎可以正常工作,但是终端窗口随即打开和关闭。如何保持其运行?
TCB13 '17

3

在Windows上:

  • 单击bash窗口的左上角。
  • 在打开的菜单中,选择“属性”
  • 设置您想要的选项,例如字体等(甚至还有Ubuntu mono字体!)
  • 设置属性后,它们将应用于当前窗口。要将其设置为默认值,请单击窗口的左上角,然后单击默认值。
  • 您可以按Alt + Enter切换全屏模式。

我希望这有帮助。


我想指出的是,它具有与Ubuntu(Gnome)终端相同的外观/用法,只是增加了鼠标支持。即,您可以单击“ htop
WinEunuuchs2Unix”中


2

Extraterm不仅仅是一个终端仿真器。它提供了用于处理终端和命令行应用程序的工具箱。

  • 特征
  • 在Windows WSL,CMD,PowerShell和Cygwin上支持Linux和macOS
  • 与xterm兼容
  • 多个选项卡和窗格,可以根据需要拆分和平铺
  • 在终端中显示图像
  • Unicode支持
  • 颜色表情符号
  • 键盘友好的“命令面板”
  • 可配置的键绑定
  • 基于键盘的选择
  • 外壳集成;可以隔离和“框架”命令输出。(支持bash,zsh和fish)
  • 使用Shell集成轻松上传和下载
  • 命令输出可在适当位置进行编辑。多光标编辑
  • 先前的命令输出可用作新命令的输入
  • 支持iTerm2和TextMate主题
  • 文字缩放

我现在正在使用此终端,因为它具有我真正想要的功能。一种在cmd,powershell,bash,鱼等之间切换的简单方法
nelaaro

1

自从Windows 10(和WSL)的最新更新以来,一切似乎都在使用“本机” Windows bash控制台运行。(而且我不是在谈论(著名的)1809 Windows更新)。至少在企业版上至少适用于1803 17134.345版本)。

请参阅https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx中的文章

有点警告-要在Windows中真正使用bash控制台,应该启动tmux-一切都会按Scott在他的博客中显示的那样进行。


这真可笑!“ exec tmux”确实解决了所有Windows本机“ bash.exe”终端问题(在调整大小后奇怪地切断了行)。
伊夫·多夫斯曼

1

一个更现代的终端https://eugeny.github.io/terminus/

总站是受到Hyper启发的终端。但是,它是为需要完成任务的人设计的。

  • 在Windows,macOS和Linux上运行
  • 主题和配色方案
  • 完全可配置的快捷方式
  • 完全支持Unicode,包括全角字符
  • 不会阻塞快速流动的输出
  • 在Windows上具有适当的类似于shell的体验,包括制表符完成(通过Clink)
  • PowerShell(+ Core),WSL(Windows上的Bash),Git-Bash,Cygwin,Cmder和CMD支持
  • 记住你的标签
  • 集成的SSH客户端和连接管理器

1

https://hyper.is/

  • 它基于电子,可以很容易地使用javascript开发和扩展。
  • 它不以任何方式使用默认的Windows控制台。
  • 它允许您选择后端shell bash,cmd,PowerShell。

    the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
    if left empty, your system's login shell will be used by default
    
    Windows
    - Make sure to use a full path if the binary name doesn't work
    - Remove `--login` in shellArgs
    
    Bash on Windows
    - Example: `C:\\Windows\\System32\\bash.exe`
    
    PowerShell on Windows
    - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
    shell: 'C:\\Windows\\System32\\bash.exe',enter code here
    

非常漂亮的主题和插件

plugins: [
    //"hyper-dracula"
    //"hyper-solarized-dark"
    "hyper-material-theme"
],

使用本指南,我可以使WLS,bash正常运行。


谢谢-看起来像一个有趣的项目,但是您能否对软件以及如何为WSL进行配置进行更多说明?
David LeBauer

1
@DavidLeBauer我希望能有所帮助。
nelaaro

Hyper超级慢。
秘银


0

扩展了aikerun.caillou的答案,因为他们的VBScript / JScript解决方案都不对我有用

Call WScript.CreateObject("WScript.Shell").Run("bash.exe -l -c 'DISPLAY=:0.0 xfce4-terminal --working-directory $HOME'", 0, True).

Call在run命令中使用括号时,需要在脚本之前添加脚本,请参见此处。同样,滴答需要反过来。此外,xfce4-terminal的附加参数将在用户的主文件夹中启动该终端。抱歉,如果这实际上是JScript代码,我对这些脚本语言一无所知。

将其保存为文件vbscript.vbs并通过cmd提示符执行

wscript vbscript.vbs

然后在延迟2秒后打开xfce4终端窗口(假设正在运行XMing等)。确实将其转换为n.caillou的作品所建议的快捷方式,然后单击该快捷方式将自动生成一个新的xfce终端窗口,但会有些延迟。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.