What's?
ふだん、Windows+Linux(VM)を使っているのですが、SSHでLinux側に入った時にGUIをWindows側に表示したいなということで。
接続元のOSにXサーバーを立てて、LinuxにSSHでログインした際にDISPLAY
環境変数等を設定するようにしてみます。
環境(参考)
- 接続元OS: Windows 10
- Xサーバー: VcXsrv X Server 1.20.14.0
- 接続先OS: Ubuntu Linux 22.04 LTS
設定
.bashrc
に、以下のように記述しました。
.bashrc
if [ -n "$SSH_CONNECTION" ] ; then
export DISPLAY=$(echo $SSH_CONNECTION | awk '{print $1}'):0.0
export GTK_IM_MODULE=ibus
export XMODIFIERS='@im=ibus'
export QT_IM_MODULE=ibus
export NO_AT_BRIDGE=1
xset -r 49
if test $(ps auxw | grep $USER | grep -v grep | grep "ibus-daemon -d -x" 2> /dev/null | wc -l) -eq 0; then
ibus-daemon -d -x &
fi
alias gnome-terminal='dbus-launch gnome-terminal'
fi
SSH_CONNECTION
環境変数が設定されていた場合は、SSHでのログインになるのでこれを利用します。
また、ログイン元のIPアドレスもSSH_CONNECTION
環境変数に含まれています。
export DISPLAY=$(echo $SSH_CONNECTION | awk '{print $1}'):0.0
このあたりは、日本語入力の設定です。
export GTK_IM_MODULE=ibus
export XMODIFIERS='@im=ibus'
export QT_IM_MODULE=ibus
export NO_AT_BRIDGE=1
xset -r 49
if test $(ps auxw | grep $USER | grep -v grep | grep "ibus-daemon -d -x" 2> /dev/null | wc -l) -eq 0; then
ibus-daemon -d -x &
fi
この状態にすると、接続元にXサーバーを起動していないとSSHログイン時に応答待ちになってしまうので、その点には注意が必要です。