Кращий термінальний досвід для підсистеми Windows для Linux (WSL)?


29

Термінал для підсистеми Windows для Linux (WSL) досить мінімальний. Я не дуже використовував термінал в Windows - я зазвичай використовую Ubuntu або OSX - але я здивований, що термінал за замовчуванням настільки голий.

Чи можливо:

  1. Підключіть термінальну програму Windows до WSL або

  2. Запустити термінальну програму Ubuntu з WSL як вікно X?

Відповіді:


26

Я особисто роблю останнє: використовую VcXsrv як мій сервер X у режимі з декількома вікнами, потім запускаю xfce4-термінал (тому що у gnome-термінала виникли проблеми із зором, які мені неважливо намагатися навчитися виправляти), і раптом у мене з'явився грамотний термінал із підтримкою шрифту та кольорів.

Я виявив, що мені потрібно додати їх до мого 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 для запуску програм Windows з моєї оболонки xfce4-terminal.

Я дуже задоволений цією установкою і використовую NeoVim + багато рідних плагінів Linux, хоча моєю машиною "для роботи" має бути Windows. :)

Можна також запустити SSH-сервер у Bash-on-Linux-on-Windows, а потім підключитися до нього, скажімо від MinTTY, як від Cygwin.

PS: щоб зробити запуск xfce4-терміналу безболісним і без додаткового bash cmd-вікна, я написав програму, яка не робить нічого, крім запуску bash-процесу з аргументами, щоб запустити xfce4-terminal без консольного вікна. Я робив це в C # - в основному використовую аргументи "UseShellExecute" false та "CreateNoWindow" true. Потім я прикріпив це до своєї панелі завдань, і це майже не здається.

EDIT: Відповідь на 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

Якщо комусь цікаво, ось посилання на пост Reddit, з якого the "fix from reddit" for dbusбуло знято.
тел

@tel дякую! Я насправді не знав, звідки це
взялося,

Якщо "візуальна проблема, яку ви не хочете виправити", ви не можете бачити частину підказок каталогу або імен файлів, причина полягає в тому, що вони темно-синього кольору. Їх не видно на фіолетовому тлі гномів-терміналів. Хитрість полягає в тому, щоб переробити колір на темно-синій до бірюзового, і тоді він прекрасно працює.
WinEunuuchs2Unix

22

Минуло трохи часу, щоб розібратися в усіх підступних кроках в інших відповідях, тому ось крок за кроком:

  1. У Windows встановіть VcXsrv або XMing .
  2. У Bash для Windows, встановити термінал: sudo apt-get install xfce4-terminal.
  3. Додайте export DISPLAY=:0до свого .bashrc. (Додавання .profileабо .bash_profile не працює для мене ). Це дозволить xfce4-terminalправильно почати з bash, але є ортогональним для команди нижче.
  4. Виконайте наступне у ярлику або у вікні Run (як @OhJeez запропонував у коментарях):

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

Інші примітки:

  • В ~починається bashв вашому домашньому каталозі, ви можете видалити його , щоб почати в будь-який каталог , який використовується .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 так - Я також намагаюся отримати однолінійний відкриття xfce без потворного командного рядка bash між ними, але поки немає удачі.
Ендрю Мао

1
Найкраще рішення для запуску xfce4-терміналу за допомогою ярлика. Існує мерехтіння, але жодне вікно не залишається позаду: 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-термінал і змініть налаштування шрифту. Змініть шрифт на більший.
koorchik

10

Я створив (і використовую) термінал з відкритим кодом для підсистеми Windows для Linux (WSL) під назвою wsl-термінал , він заснований на minttyі wslbridge.

скріншот


Будьте обережні з саморекламою - це може виглядати як спам. askubuntu.com/help/promotion

2
Самостійне просування добре, якщо ви це визнаєте
David LeBauer

І ви цього не визнали.
муру

5
І, будь ласка, додайте детальну інформацію про те, чому wsl-terminalбуде кращим термінал.
Cynplytholowazy

2
Дякуємо, що поділилися цим. Ваші речі вже працюють краще, ніж вбудований термінал - принаймні, він може трохи краще справлятися із загортанням рядків у командному рядку. CTRL-A для швидкого переходу до початку команди все ж не вдається. Я задоволений, коли люди саморекламують подібні речі. Люди повинні заспокоїтися.
EdH

5

У свіжій установці Ubuntu я щойно встановив XMing (в Windows), потім (в Ubuntu) xfce4-термінал, і після export DISPLAY=:0цього він працював.

Щоб позбутися консолі Windows за замовчуванням, цей сценарій VBS виконує цю роботу:

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

(Із вами встановлено $ DISPLAY .profile.)

edit: І щоб зробити скрипт придатним для використання, створіть ярлик із ціллю wscript "C:\path\to\thescript.vbs".


Здається, VBS працює, проте вікно терміналу відкривається та закривається відразу після. Як я можу тримати це?
TCB13

3

У Windows:

  • Клацніть на верхньому лівому куті вікна bash.
  • У меню, яке відкриється, виберіть "Властивості"
  • Встановіть параметри, які вам потрібні, як шрифт тощо (є навіть моно шрифт Ubuntu!)
  • Після встановлення властивостей вони будуть застосовані до поточного вікна. Щоб встановити їх за замовчуванням, натисніть на верхню ліву частину вікна та натисніть за замовчуванням.
  • Ви можете натиснути клавішу Alt + Enter, щоб увімкнути режим повноекранного режиму.

Я сподіваюся, що це допомагає.


Я хотів би зазначити, що він має такий же зовнішній вигляд / використання, як термінал Ubuntu (Gnome's), за винятком того, що він додає підтримку миші. тобто Ви можете натиснути на заголовки стовпців уhtop
WinEunuuchs2Unix

3

ConEmu чудово працює! Просто встановіть його та запустіть нову консоль {bash} . Я додав cd ~до свого, .bashrcщоб мати його за замовчуванням, щоб почати у своєму домашньому каталозі.

Гарне пояснення: https://conemu.github.io/en/BashOnWindows.html


2

Extraterm - це більше, ніж просто емулятор терміналу. Він пропонує панель інструментів для роботи з додатками вашого терміналу та командного рядка.

  • Особливості
  • Підтримує Linux та macOS для Windows WSL, CMD, PowerShell та Cygwin
  • сумісний з xterm
  • Кілька вкладок і панелей, розділених і викладених плиткою будь-яким способом
  • Показати зображення в терміналі
  • Підтримка Unicode
  • Кольорові смайли
  • "Палітра команд", зручна для клавіатури
  • Налаштування ключів
  • Вибір на основі клавіатури
  • Інтеграція оболонок; може ізолювати та командний вихід. (підтримується bash, zsh та fish)
  • Легке завантаження та завантаження за допомогою інтеграції оболонок
  • Командний вихід можна редагувати на місці. Редагування кількох курсорів
  • Попередній вихід команди може використовуватися як вхід для нових команд
  • Підтримує iTerm2 і TextMate теми
  • Збільшити текст

Зараз я використовую цей термінал, оскільки він має функції, які мені дуже хочеться. простий спосіб перемикання між cmd, powerhell, bash, fish тощо
nelaaro

1

З останніх оновлень для Windows 10 (та WSL) все, здається, працює за допомогою "рідної" консолі Windows. (І я не говорю про (in) знамениту оновлення Windows 1809). Це працює навіть у версії Enterprise принаймні для складання 1803 17134.345).

Дивіться статтю за адресою https://www.hanselman.com/blog/SettingUpAShinyDevelopmentEnvironmentWithinLinuxOnWindows10.aspx

Невеликий застереження - щоб дійсно використовувати конфігурацію bash у Windows, слід запустити tmux - і все буде працювати, як показав Скотт у своєму блозі.


Це смішно! "exec tmux" дійсно вирішує всі проблеми з терміналом "bash.exe" для Windows (дивні відсічені лінії після зміни розміру).
Ів Дорфсман

1

Термінал для більш сучасного віку https://eugeny.github.io/terminus/

Terminus - це термінал, натхненний Hyper. Однак він розроблений для людей, яким потрібно виконати справи.

  • Працює в Windows, macOS та Linux
  • Тематичні та кольорові схеми
  • Повністю налаштовані ярлики
  • Повна підтримка Unicode, включаючи символи подвійної ширини
  • Не задавлюється швидкодіючими виходами
  • Належний досвід роботи з оболонками в Windows, включаючи доповнення вкладок (через Clink)
  • Підтримка PowerShell (+ Core), WSL (Bash для Windows), Git-Bash, Cygwin, Cmder та CMD
  • Пригадує ваші вкладки
  • Інтегрований клієнт SSH та менеджер з'єднань

1

https://hyper.is/

  • Він заснований на електроні, що дозволяє легко розробляти і розширювати за допомогою javascript.
  • Він ні в якому разі не використовує консоль Windows за замовчуванням.
  • Це дозволяє вибрати баш бекенда оболонки, 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, бош дуже добре працював.


Дякую - виглядає як цікавий проект, але ви могли б сказати більше про програмне забезпечення та як його налаштувати на WSL?
Девід Лебоуер

1
@DavidLeBauer Я сподіваюся, що це допоможе.
nelaaro

Гіпер надто повільний.
Мітрил

1

Сьогодні вам пропонується використовувати "термінал Windows", який відкрито в Microsoft.

Офіційну збірку можна отримати в магазині Windows в середині червня цього року.

Але ви також можете скористатися цим, скориставшись попередньою попередньою версією. https://github.com/yanglr/WindowsDevTools/blob/master/awosomeTerminal/WindowsTerminal_SelfSigned_x86_x64_arm64.7z

Після встановлення результати роботи нижче:

pic1

pic2

pic3

pic4


0

Розширення відповідей aikeru та n.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-терміналу запустить термінал у домашній папці користувача. Вибачте, якщо це насправді працював JScript-код, я не маю уявлення про ці мови сценаріїв.

Збереження цього у вигляді файлу vbscript.vbs та виконання з cmd підказки

wscript vbscript.vbs

потім відкриває вікно терміналу xfce4 (дане XMing або подібне працює) через 2 секунди затримки. Перетворення цього в ярлик, як це запропоновано роботами n.caillou, і натискання цього ярлика автоматично породжує нове вікно терміналу xfce з деякою затримкою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.