LoginSignup
5
7

More than 3 years have passed since last update.

Cygwin/XでリモートのLinuxのアプリケーションをWindowsから利用する

Last updated at Posted at 2019-01-26

概要

WindowsにX Serverをインストールして、VirtualBox上のLinuxでGUIアプリケーションを起動した時、Windows側にウィンドウが表示されるようにする。

  • X Serverには Cygwin/X を使用。
  • VirtualBox上のLinuxは Fedora 27。

以下、「ローカル側」はWindows、「リモート側」はVirtualBox上のLinuxを表すものとする。

インストール

CygwinによるX Window利用 を参考に、X11とopensshをインストールする。

X Server起動

ローカル側で、Cygwinのターミナルを起動し、以下を実行。

startxwin -- -listen tcp

タスクトレイにCygwin/X Serverのアイコンが表示される。

なお、Cygwin/Xをインストールすると、Windowsのスタートメニューに「Cygwin-X」というグループが作成され、そこに「XWin Server」というメニューが現れる。このメニューでもCygwin/X Serverを起動できるが、デフォルトではTCPでの接続を受け付けないようになっており、リモート側から接続することができない。

準備

Windows ファイアウォール

ローカル側で、ポート6000~6063くらいまでの受信を許可する。
Windows 10の場合は以下の手順で「Windows Defender ファイアウォール」の画面を表示する。

設定
→ネットワークとインターネット
→Windowsファイアウォール
→詳細設定

「Windows Defender ファイアウォール」の画面で、「受信の規則」に新しい規則を追加する。

プロトコルおよびポート:

項目 設定値
プロトコルの種類 TCP
ローカルポート 6000-6063

xauth

ローカル側で、新しいCygwinのターミナルを起動し、以下を実行。

export DISPLAY=localhost:0.0
xauth generate $DISPLAY

作成された .Xauthority の内容を確認。

xauth list

出力結果の例:

MY-COMPUTER/unix:0  MIT-MAGIC-COOKIE-1  1234567890abcdef1234567890abcdef

利用時

ssh接続

ローカル側のCygwinのターミナルで、以下のように実行し、リモート側に接続する。ローカル側でCygwin/X Serverが実行中であるとする。

export DISPLAY=localhost:0.0
/bin/ssh -i /private/key/path -Y user@hostname

DISPLAY環境変数確認

リモート側で以下のように実行する。値が出力されることを確認する。

echo $DISPLAY

出力結果の例:

localhost:10.0

ssh接続時に、sshコマンドに -Y オプションを指定しないと、値が空になる。

アプリケーション実行

リモート側で以下のように実行する。以下は xclock を実行する例。

xclock

ローカル側に xclock のウィンドウが表示されたら成功。

日本語入力設定

キーボード配列の設定

ローカル側で、Cygwin/XのXサーバが起動している状態とする。

以下のコマンドを実行する。

export DISPLAY=localhost:0.0
setxkbmap -model jp106 -layout jp

リモート側のibus設定

ssh接続中のリモート側で以下のように実行する。

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
export NO_AT_BRIDGE=1
xset -r 49
ibus-daemon -d -x

このコマンドを実行したターミナルから起動したアプリケーションでは、日本語入力ができる。

参考ページ

設定関連

トラブルシューティング関連

過去のメモ

以下は、必要かと思ったが、必要なさそうな手順。

xhost

ローカル側のCygwinターミナルで、以下のように実行する。リモート側のIPアドレスが192.168.10.2であるとする。

export DISPLAY=localhost:0.0
xhost 192.168.10.2

出力結果の例:

192.168.10.2 being added to access control list

xhostへのリモート側の追加は、X Serverを起動するたびに必要。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7