web-dev-qa-db-ja.com

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

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

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

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

78

簡単な答えは、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)ため、ここではコピーしませんでした。一部のアプリは、この手法でも動作しないことが予想されます。

25
Panther

VcXsrv

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

Installation

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

export DISPLAY=localhost:0.0

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

私は実行できました:

Sudo apt install ubuntu-desktop
Sudo apt install yad
Sudo apt install gedit

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

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

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

セットアップノート

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

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

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

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

  2. VcXsrvアプリを直接実行し、XLaunchを起動しないでください。 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
    

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

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

    session.confがviエディターで開く場合)

    押す 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をインストールして、nity Desktop for Ubuntを実行してみてください。私はまだ「Unreal」を実行するために急いで苦しんでいるので、「スチーム」を設定しようとしませんでした、幸運:)

誰かがXTermではなくXServerでgnome-terminalを実行する方法を知っている場合は共有してください...

追伸
次のことができます VcXsrvをWin10ブータブルとして追加

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

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

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

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

{NIC-id}については、IPアドレスがリストされているものを探します。この{NIC-id}キーの下に、次のDWORD値を作成します。

  • TcpFrequencyを1に設定して、ゲームの「ナグリング」を無効にします。
  • 「遅延」を無効にし、「ナグリング」を無効にするには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に設定します。

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

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

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

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

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

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

19
tenedas

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

Windowsの機能をオンまたはオフにします
Linux用のWindowsサブシステムを有効にする
コンピューターを再起動
Microsoftストアを起動します
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
ユーザー名:リモート
password:パスワード

Xfceをお楽しみください!

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

Sudo /etc/init.d/xrdp stop
exit
9
Guest

簡単にしたいので... Microsoft Storeに x41 というアプリがあります。基本的には、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を軟膏で買いました。多すぎる場合は、おそらく販売を待ってください。

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

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

  1. なぜデスクトップが必要なのかわからないので、xfceをインストールしませんでした。
  2. XLaunchMultiple Windowsを選択します(DEがないため、1つの巨大なウィンドウは不要です)
  3. Mkdirを修正する必要も、個別の端末も必要ありません。

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

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

1

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

1
abalter

通常、VirtualBoxゲストのホスト 10.0.2.2で到達可能

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

0
weberjn