2018年現在、Linux用WindowsサブシステムでGUIアプリを実行する最も簡単な方法は何ですか?


89

私はあちこち検索しましたが、現在2つの方法が提案されています。Linux用Windowsサブシステムの拡張機能をインストールし、XServerをインストールします。

どの方法が最も手間がかからず(インストールが簡単で、使用も簡単)、どちらの方法もメモリの使用量が少ないかを知りたいです。

SynapticとCMakeが欲しいだけです。なぜそれが組み込みの機能にならないのですか?


1
私の個人的な感覚は、WSLは冗談だということです!単にVMをロードしないのはなぜですか?
チャールズグリーン

3
@CharlesGreenメモリ...現在、かなり古いラップトップを使用しています。
ジョージホ

だから、私は、私は、私はWindowsのみで動作することを必要とする一つのプログラムのためにVMでのWindows 10を実行します
チャールズ・グリーン

1
@CharlesGreen VirtualBox?
ジョージホ

「私は本当にSteamを実行し、LinuxでPortal 2をプレイしたいです!」WSLはLinuxではないので、決して実現することはありませんWSLは、ゲームプラットフォームとしても意図されていません。しかし、また、WSLをサポートするための蒸気が起こるだろうことはありません。。
Rinzwind

回答:


29

簡単な答えは、WSLはまだこの機能をサポートしていないため、できないということです。WSLは、Linuxカーネルを備えた完全なLinuxインストールではありません。Windows(Microsoft)カーネルでいくつかのネイティブLinuxコマンド/バイナリを実行でき、制限があります。

https://github.com/Microsoft/WSL/issues/2356を参照してください

ただし、xming、sshなどのサードパーティXサーバーをWSLにインストールできます。

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

このチュートリアルは、いたるところにある(X over ssh)ので、ここではコピーしませんでした。一部のアプリは、この手法でも動作しないことが予想されます。


だから、手間のかからないという選択肢はありませんか?たぶん誰かが.... Windows用のシナプスは、将来的にWSLで動作するようになります
ジョージHovhannisian

1
WSLのグラフィカルプログラムは、WSLでSteamを使用できるという意味ではありません。WSLのサポートを作成するには、Valveが必要です。
リンツウィンド

7
SSHを使用する必要はまったくないことに注意してください。設定するだけDISPLAYで準備完了です(とにかくxmingとVcXsrvの場合)。
dma1324

5
1:完全に正確ではない、2:質問の精神ではない-はい、xserverを使用してwslでGUIアプリを実行できます。運営者はサポートされているアプリについて尋ねませんでした。(vcxserveまたは同様のものをインストールします。DISPLAYを設定した後、sudo apt-get synapticをインストールします
。ssh

1
代わりに@decuser Upvoteの方が良い答えです。ない場合は、書いてください。
ソルビョーン・ラヴン・アンデルセン

62

VcXsrv

VcXsrvWSL(Linux用Windows 10サブシステム)で使用することにしました。Windows 10 Ubuntu 16.04でグラフィカルユーザーインターフェイス(GUI)をサポートするためにいずれかを選択する前にxming、誰もが(受け入れられた回答)とVcXsrvの間で調査を行うことをお勧めします。

設置

インストールは簡単です。2019年3月17日の時点で、デフォルトをそのまま受け入れることができます。geditBashシェル/ターミナル内から呼び出したい場合は、次の~/.bashrc行を編集して挿入する必要があります。

export DISPLAY=localhost:0.0

VcXsrvのインストール後に何ができますか?

実行できました:

sudo apt install ubuntu-desktop
sudo apt install yad
sudo apt install gedit

... GUIデスクトップソフトウェアをインストールします。そして、これは私が実行を許可geditしてnautilus。またaptapt-getコマンドを使用してCLI(コマンドラインインターフェイス)から特定のGUIアプリケーションをインストールできました。

WSL内のUbuntu bashスクリプトの多くを試してみたい場合は、VcXsrvをインストールしてzenityyadユーザー入力用のx-windowsダイアログボックスを表示する必要があります。

他の人が指摘したように、WSL内のGUIは完全ではなく、いくつかの問題の解決に時間を費やすことが期待できます。また、一部のGUIソフトウェアはWSLで機能しません。

セットアップノート

/etc/environmentGUIドロップダウンメニューを調整するように変更しました。

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デュアルブートの両方で使用されるスクリプトを保存する場所であるため、異常なパスです。ほとんどのユーザーは、これをマシンに含めません。

1
@GeorgeHovhannisian私にとっての利点はgedit、Ubuntu Desktopの経験からよく知っているものを使用できることです。また、私のbashスクリプトの多くが使用しzenityたりyad、X-Windowsのダイアログボックスの。これらのbashスクリプトVcXsrvは、インストールされない限り実行されません 。
WinEunuuchs2Unix

6
+1陽気です:内部からWindowsシステムをUbuntuに密かに変換するにはどうすればよいですか?
デザート

8
これは簡単でした。Windowsでは、提供されたリンクを使用してVcXsrvをダウンロードしました。インストールして起動しました。次に、Ubuntuシェルを開いてを入力しましたexport DISPLAY=:0。今、私は実行することができxhostxeyesおよびgnuplotUbuntuの中で(これらのプログラムは、すでにUbuntuのWSLにインストールされて提供されます)。
ダニエルK.

2
コメントに@dessert +1。私のユーザー名が「Unixに切り替えられたWindowsユーザーによる制限」を意味することを考えると、それは二重に陽気です。WSLのおかげで、Windows 10を使用できるようになりました。Windows10内でUbuntuを実行できるからです。WinEunuuchs2Unix2WinSub4Linuxと呼ばれますか?:p
WinEunuuchs2Unix

2
またexport LIBGL_ALWAYS_INDIRECT=1、VcXsrvを使用してX上のGLアプリでハードウェアアクセラレーションを取得します
ジッパー

19

Windows(Ubuntu 16.04 Xenial x86_64 Linux 4.4.0-17074-Microsoft)上のUbuntuで、Win 10 BashでVcXsrvを使用して非常に良い経験をしました。Unityデスクトップは役に立たず、リソースを消費するため、実行に集中しませんでした。XServerを使用してWindows 10デスクトップからGUIモードでbashからアプリを実行しただけです。

  1. SourceforgeのここからVcXsrvをインストールします

  2. VcXsrvアプリを直接実行し、XLaunchを起動しないでください。localhost:0.0 - 0 clientsWin10タスクバーのアイコンにカーソルを合わせると表示されるはずです

  3. Ubuntu Bashを開きます。

    cd /mnt
    

    (結果はlocalhost @ localhost:/ mnt $になります)

    cd .. 
    

    (localhost @ localhost:/ $は、WSLが認識できる限り、このコマンドでハードドライブの先頭に移動できることを意味します...)

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

    (これにより、GUIの仮想コネクタを作成するための「dbus」、ユニティデスクトップ用の「Synaptic Package Manager」および「Nautilus」ファイルエクスプローラがインストールされます。

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

    session.confviエディターで開く場合)

    を押しiて挿入モードに入り、追加します

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

    ファイルの編集が完了したら、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のためにユニティのデスクトップを。私はまだ「Unreal」を実行するために急いで苦しんでいるので、「スチーム」を設定しようとしませんでした、幸運:)

誰かがgnome-terminalXTermではなくXServerで実行する方法を知っているなら、共有してください...

PS VcXsrvをWin10ブータブルとして追加
できます

元の投稿で指定された「スチーム」でソースを最大化するには、Windowsを少し調整して、ネットワークパッケージ管理(低レイテンシ)とCPU / GPU優先順位付けを行い、Win10XBoxを作成します…:)

「Unix」の下で「Steam」を実行しますが、シェルは「Windows」のままなので、「Unix」で「Steam」を起動できます…

Tcp Prep :;

regeditで:

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

ここで、サブキーのリストを調べて、インターネットへの接続に使用されるネットワークアダプターエントリを見つける必要があります。DHCPを使用している場合は、正しいアダプターを見つけるためにDhcpIPAdddress(システムデータ値ではない:0.0.0.0)エントリを探す必要があります。

正しいキーを見つけたら、それを右クリックして、「新規」>「Dword(32ビット)値」を選択します。

TcpFrequencyと名前を付けて、をクリックしますok

その後、値をダブルクリックして、そのDecimal値を1に設定します(デフォルト設定に戻すには、値を2に変更するかキーを削除します)。次のキーに移動します。 HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

キーをもう一度右クリックして、[ 新規]> [Dword(32ビット)値 ]を選択します。

新しいパラメーターにTcpDelayという名前を付けます

その後、それをダブルクリックし、そのDecimal値を1に変更します(後の時点でキーを復元するには、0に変更するか、キーを削除します)。

Nagleのアルゴリズム

Nagleのアルゴリズムは、いくつかの小さなパケットを単一の大きなパケットに結合して、より効率的な伝送を実現します。これは、データ送信のスループット効率を改善するように設計されています。「ナグリング」を無効にすると、一部のゲームで遅延/ pingを削減できます。Nagleのアルゴリズムは、Windowsでデフォルトで有効になっています。この調整を実装するには、次のレジストリキーを変更します。

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とLeague of Legendsをプレイする際の調整によりレイテンシが短縮されたとの報告もありますが、一部では機能しません。Dota 2をプレイすると、試してみて、レイテンシが110ミリ秒から90ミリ秒(SEAサーバー)に改善されました。

ネットワーク調整インデックス

Windowsにはネットワークスロットリングメカニズムが実装されています。このようなスロットリングの背後にある考え方は、ネットワークパケットの処理がリソースを消費するタスクになる可能性があるということです。最大のスループットを達成するには、このような調整をオフにすることが有益です。

この調整を実装するには、regeditを実行してレジストリを変更します

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

SystemProfileの下で、DWORD値を作成してNetworkThrottlingIndexという名前を付け、ゲームと最大スループットのために16進値をffffffffに設定します。ffffffffはスロットルを完全に無効にします。


システムゲーミングレスポンシブネス(これについてはよくわかりません:)

「マルチメディアクラススケジューラ」サービス(MMCSS)を使用するマルチメディアストリーミングおよび一部のゲームは、CPUの80%までしか使用できません。「マルチメディアクラススケジューラ」サービス(MMCSS)は、優先度の低いバックグラウンドアプリケーションに対してCPUリソースを拒否することなく、CPUリソースへの優先アクセスを保証します。

この調整を実装するには、regeditを実行してレジストリキーを変更します

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

そこから、新しいDWORDを作成し、SystemResponsivenessという名前を付けて、純粋なゲーム/ストリーミング用に10進数の値を00000000に設定します。

上記の調整と同じレジストリハイブで、ゲームの優先度を変更することもできます。この調整を実装するには、

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

次のレジストリ値を変更します。

  • 「GPU Priority」は、ゲームの値を8に変更します。
  • ゲームの「優先度」は1に設定されています。

このWindows = Xboxの微調整の作者は、「不明」(私があなたの指示をコピーしてからしばらくはご容赦ください)を応援します...

PPS:XServerがやりたいことで失敗する場合は、Dockerで回避策を見つけてください。


6-5-7; :5-6-7
...-tenedas

非常に詳細な回答をありがとう。そうでなければ、編集を提案した人のおかげで、私は信じられませんが、人々は実際にSteamを実行するためのソリューションを提案しています。一方、人々はまだデスクトップを提案し続けていますが、それがどのように使用されるかはまだわかりません。個人的にはファイルマネージャも、フルフレックスデスクトップも必要ありません。
ジョージホ

XmingをWindowsにインストールし、セクション3のすべての手順を使用しました。ここ(上記)-dbusをインストールします(シナプスまたはnautilusの実際の必要性はありませんが、nautilusは良いチェックです)。サービス。その後、Nautilusはいくつかのエラーメッセージで正常に起動します。
MikeW

「VcXsrvアプリを直接実行する」とはどういう意味ですか-これを正確に行う方法は?
Erel Segal-Halevi

変更<auth>allow_anonymous</auth><auth>ANONYMOUS</auth>、その後、service dbus restartそしてgnome-terminal動作するはずです
ZAB

9

完全なGUIデスクトップ環境はMicrosoftによって「公式に」サポートされていませんが、機能します。

Windowsの機能のオンまたはオフに
Linux用のWindowsサブシステムを有効に
コンピュータの再起動
を起動し、マイクロソフトストア
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

.xsessionを作成および変更する

cd /home/user/
sudo vim .xsession

テキストを追加:

gnome-session --session=ubuntu-2d

viを保存して終了する

sudo chmod 755 .xsession
sudo systemctl enable xrdp

Ubuntuで2つ目のアカウントが必要になります

sudo adduser remote
sudo usermod -aG sudo remote

startwm.shを変更します

cd /etc/xrdp
sudo chmod 777 startwm.sh
vim startwm.sh

下の2行をコメントアウトします

#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
ユーザー名:リモート
パスワード:パスワード

xfceをお楽しみください!

完了したら、リモートデスクトップ接続を閉じます
Ubuntuコマンドラインに戻ります

sudo /etc/init.d/xrdp stop
exit

1
これは機能しています。私はubuntu 16を使用しました。ubuntuのネイティブGUIの外観はありませんでした。XorgがXRDPリストには使用できません
トライン

「ディスプレイ0のログインに失敗しました」というエラーメッセージが表示されます。考え?xrdpがログインを許可しないのはなぜですか?
J-

2

簡単にしたいので... 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

私は約5ユーロでx410を軟膏で購入しました。


2

簡単な既製のソリューションが必要な場合は、MobaXTermを使用してください。WSLを直接サポートする優れたマルチタブターミナルエミュレーターであり、最適化されたXサーバーが組み込まれています。モバでは常にシナプスを使用しています。RStudioでも。


1

パンサーの答えを選んだのは、それが唯一だからというだけでなく、それが正しい答えだからでもあります。GUIアプリを実行するための手間のかからない(簡単な)方法はありません。

また、私はこのチュートリアルをいくつかの変更を加えて使用しました。

  1. xfceなぜデスクトップが必要なのかわからないので、インストールしませんでした。
  2. 選んMultiple WindowsXLaunch(ノーDE、1つの巨大な窓のために、したがって必要はありません)
  3. mkdirを修正する必要はなく、別のターミナルも必要ありません。

どのGUIアプリをインストールしましたか?SynapticとCMakeのみ。WSLで必要なものは他に何も考えられないからです。

Pantherが指摘したのとまったく同じ理由で、VM / Dual Bootを実行しません。完全なフレックスOSではなく、便利な(私にとって)開発環境が必要です。


vagrantup.com/docs/other/wsl.html-vagrantは、開発環境を迅速に立ち上げる優れたツールです。wslをサポートしているようです。まだ試していませんが。
-TamusJRoyce

1

私の研究に基づいて、wslはもともとGUIユーザー向けには設計されていませんでした。ただし、サードパーティからXサーバーをインストールしてGUIを表示できます。Debian Linux-desktopを表示するために、VcXsrvが適切にセットアップされていることをテストしました

私のアプローチはスムーズに動作し、WindowsサブシステムLinux Debianでmate-desktop(GUI)を表示すると思います。mate-desktop(GUI)をwsl Debianにゼロからインストールして表示する方法に関するビデオを作成しました。リンク:https : //youtu.be/QjogEWudpaM

Ubuntuでのmate-desktopのインストールはわずかに異なります。

ステップ1:wslをインストールする

  • PowerShellを管理者として開き、入力しますEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Microsoftストアから「Debian」または「Ubuntu」をインストールします。

ステップ2:メイトデスクトップなどのグラフィックユーザーインターフェースをインストールします。

Debianのユーザー:

  • Windows 10でLinuxコンソールを開き、次を入力してmate-desktopをインストールします。Enterキーを押しますsudo apt-get update
  • 更新が完了したら、とsudo apt install task-mate-desktop入力してEnterキーを押します。

またはUbuntuユーザーの場合:

  • Windows 10からUbuntuコンソールを開きます
  • 入力しsudo apt install tasksel、Enterキーを押します
  • 入力しsudo apt update、Enterキーを押します
  • 入力しsudo tasksel install ubuntu-mate-desktop、Enterキーを押します

ステップ3:Windows 10にXサーバーをインストールします。VcXsrvと呼ばれるオープンソースサーバーを使用しました。https://sourceforge.net/projects/vcxsrv/からダウンロードできます
インストールが完了したら:

  • Windows 10でXLauchを開く

  • 次のセットアップを実行します。

    • 選択する: "One large window"
    • 選択する Display number: 0
    • クリック next
    • 選択する Start no client
    • クリック next
    • クリック finish

ステップ4:Linuxコンソールでセットアップします。

  • タイプ export DISPLAY=:0

  • タイプexport LIBGL_ALWAYS_INDIRECT=1(この賞賛は必要ないかもしれません)

ステップ5:mate-desktop GUIを表示します。

  • タイプmate-sessionのためのDebianユーザー

  • タイプmate-sessionまたはlightdm-sessionのためのUbuntuのユーザー

私の説明について混乱した場合は、YouTubeビデオチェックして、GUI(mate desktop)をMicrosoft Windows Subsystem Linuxにインストールしてください。


-1

通常、VirtualBoxゲストのホストには10.0.2.2でアクセスできます。

これで、シームレスなWindowsであっても、FedoraデスクトップでWSL Xプログラムを実行できます。


今、これは面白いです。私はフェドラの大ファンではありません。Archでも同じことができますか?
ジョージホ

そのように思う。Xサーバーはデフォルトでsshを介してFedoraでアクセスできますが、Archでいくつかのsshd設定を変更する必要があるかもしれません。
weberjn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.