|
現: 2021-06-08 (火) 18:00:37 yuji  |
| + | * Android端末をLinuxマシンのディスプレイにする [#jb3f5621] |
| + | Android端末をLinuxマシンのディスプレイにする方法。 |
| | | |
| + | 今回は,[[VNC>https://ja.wikipedia.org/wiki/Virtual_Network_Computing]]を使って,Android端末をLinuxマシンのディスプレイにしてみる。 |
| + | |
| + | Linuxマシンは,VMware Workstation Playerで動かしているUbuntu 20.04を利用している。 |
| + | |
| + | ** Linuxマシンでのマルチディスプレイ [#yf860f05] |
| + | Linuxマシンで複数のディスプレイデバイスを接続して使用するマルチディスプレイを構成する方法は,いくつかの方法がある。~ |
| + | |
| + | Linux/Unixでは,GUIとしてX Window Systemを使用している。X Window Systemを使ってマルチディスプレイを構成方法は以下がある。~ |
| + | - スクリーンを分割する方法~ |
| + | X Window Systemでマルチディスプレイを構成する最も古い方法。~ |
| + | 物理ディスプレイのそれぞれにXのスクリーンを割り当てる。このため,各スクリーンは独立して動作する。~ |
| + | XのディスプレイにはDISPLAY環境変数によって:0のようにIDが一つだけ指定されるが,マルチディスプレイでは各スクリーンを指定する場合に,DISPLAY環境変数で指定する。~ |
| + | 一番目のスクリーンは:0.0,二番目のスクリーンは:0.1といったようにアサインされる。~ |
| + | この方法の場合は,ウィンドウを別のスクリーンに移動させることは出来ない。GIMPやEmacsなどこの方式のマルチディスプレイに対応しているアプリケーションでは出来るようになっている。~ |
| + | ほとんどのアプリケーションでは,DISPLAY環境変数により表示するディスプレイを変更する。~ |
| + | - Xineramaを使用する~ |
| + | Xineramaも,Xのマルチディスプレイを実現する古い方法。~ |
| + | Xineramaでは,全てのディスプレイを単一のスクリーン(:0)にまとめて管理するので,複数ディスプレイ間を移動したりすることが出来る。~ |
| + | Xの設定ファイルをマルチディスプレイに静的に設定することで動作する。RandRのように動的に制御することは出来ない。~ |
| + | - RandRを使用する~ |
| + | RandR(Rotate and Resize)は,Xのスクリーンを動的に変更(リサイズ,回転など)出来るようにするためのX Window Systemの拡張機能。~ |
| + | RandRでは,xrandrコマンドを使って動的にセッションの設定をしたり,xorg.confファイルを使って静的にも設定することが出来る。~ |
| + | RandRでは,複数の物理ディスプレイを仮想のディスプレイにマッピングして管理するので,アプリケーションの画面を自由にディスプレイ間を移動したりすることが出来る。 |
| + | - TwinViewを使用する~ |
| + | TwinViewは,nVidiaのビデオカードが持つ複数のディスプレイを1つのディスプレイと管理するX Window System拡張。~ |
| + | nVidiaのビデオカード(チップ)を搭載したマシンでないと使用できない。~ |
| + | |
| + | * Android端末をLinuxマシンのディスプレイとして使用する(ミラー表示) [#x7dbe51c] |
| + | Linuxマシンにディスプレイが接続されていて,同じ画像をAndroid端末にミラー表示させる。Android端末を独立したセカンドディスプレイとして使うのではない。~ |
| + | |
| + | これは,VNCでリモートデスクトップを行う方法と何も変わらない。 |
| + | |
| + | ** Linuxマシン側にVNC Serverをインストールする [#v11d5166] |
| + | LinuxマシンにはVNC Serverをインストールする。Ubuntu 20.04の場合は,最初からVNC Serverであるvinoがインストールされている。~ |
| + | |
| + | もしインストールされていない場合は,以下のようにしてインストールする。~ |
| + | # apt install vino |
| + | |
| + | 次にVNC Serverの設定をする。~ |
| + | - Ubuntuのデスクトップで右クリックして,設定>共有を開く~ |
| + | - 右ペインの共有の右にあるスイッチをオンにする~ |
| + | - 画面共有のスイッチをアクティブにする~ |
| + | コンピューター名には,マシン名がデフォルトで入っている。 |
| + | - 接続設定の画面が表示される~ |
| + | 「このスクリーンの操作する接続を許可する」をマークする。~ |
| + | 接続するときに使用するパスワードを設定する。~ |
| + | |
| + | この設定を行うと,''/etc/xdf/autostart/vino-server.desktop''がセットアップされる。これでGNOME環境にログインすると自動的にvinoが起動される。~ |
| + | |
| + | この後,Android端末とVNCで接続するには暗号化接続が使用できないので,ターミナルを起動し, |
| + | $ gsettings set org.gnome.Vino require-encryption false |
| + | として,暗号化した接続を使用しないようにしておく。~ |
| + | |
| + | Linuxマシンが使用しているNetworkのIP Addressを以下のようにして調べておく。(ブリッジ接続) |
| + | $ ifconfig |
| + | |
| + | ** Android端末側へVNC Viewerをインストールする [#f25f2364] |
| + | Android端末側には,[[VNC Viewer>https://play.google.com/store/apps/details?id=com.realvnc.viewer.android&hl=ja]]をインストールする。~ |
| + | Google Playからインストールするか,ADBからインストールする。~ |
| + | 今回はADBを使って, |
| + | > adb install vncviewer_3.7.1.44443.apk |
| + | として&ref(vncviewer_3.7.1.44443.apk);をインストールした。 |
| + | |
| + | Android端末でVNC Viewerを起動し, |
| + | - +で接続先を追加する~ |
| + | - 接続先として''LinuxマシンのIPアドレス''を設定する。接続名に適当な名前を付ける。~ |
| + | - 接続にはパスワードを聞かれるので,Linux側で設定したパスワードを入力する。~ |
| + | - View onlyスイッチをonにする。~ |
| + | |
| + | その他は,デフォルトのままで大丈夫だった。 |
| + | |
| + | 接続するポート番号は,デフォルトの'':5900''となる。 |
| + | |
| + | ** Android端末からVNCで接続する [#b785cd15] |
| + | Android端末でVNC Viewerを起動し,接続用のパスワードを使ってLinuxマシンのIP Addressに接続する。~ |
| + | Remember passwordをonしておくと,次からパスワード入力はしなくて済む。 |
| + | |
| + | 接続できると,Linuxマシンのディスクトップ画面がAndroid端末に表示(ミラー)されます。~ |
| + | ''セカンドディスプレーとして使わなければ'',これでAndroid端末をディスプレイとして使用できる。 |
| + | |
| + | * Android端末をLinuxマシンのセカンドディスプレイにする [#u94f9510] |
| + | Ubuntu 20.04に最初からインストールされているvinoは,標準ディスプレイをミラー化したX Windowを使用するリモートデスクトップを実現するVNC Server。~ |
| + | なので,VNCで接続する別のセカンドディスプレイとして(例えば:1)のVNC Serverとしては利用できない。 |
| + | |
| + | VNCで接続する別のセカンドディスプレイを作るために,別のVNC Serverである''tightvncserver''をインストールして使用することにした。~ |
| + | tightvncserverはユーザーモードのみで動作するVNC Serverで,通常のデスクトップ環境はもちろん,デスクトップ無しの単なる表示のみといった環境も作成できる。~ |
| + | |
| + | 注意することとして,''tightvncserverはRANDR拡張には対応していない。'' ''RANDR拡張を利用する場合はtightvncserverをフォークして開発されているtigervncが使用できる。''~ |
| + | |
| + | tightvncserverは以下のようにしてインストールした。~ |
| + | # apt install tightvncserver |
| + | 物理ディスプレイを使用しているなどでミラー化したVNC Serverが必要なければ,画面共有のスイッチはオフにする。~ |
| + | また,ミラー化VNC Serverの''vino''と別ディスプレイとしてのVNC Serverである''tightvncserver''は共存できる。~ |
| + | |
| + | 必要であればx2vncをインストールする。x2vncはキー操作やVNCに転送したり,マルチスクリーン管理をする。''表示だけ行えればいいのであれば,x2vncは必要ない。''~ |
| + | # apt install x2vnc |
| + | |
| + | そして,インストールしたVNC Serverを起動する。~ |
| + | $ vncserver |
| + | 最初に接続用のパスワード(max. 8文字)を設定する。 |
| + | |
| + | 一度,vncserverを停止する。~ |
| + | $ vncserver -kill :1 |
| + | |
| + | VNCの接続パスワードを変更する場合は, |
| + | $ vncpasswd |
| + | Password: ******** |
| + | Verify: ******** |
| + | のようにする。 |
| + | |
| + | ** VNC Serverを起動する [#w59964b6] |
| + | 現在のメインのディスプレイのDISPLAY番号を確認する。~ |
| + | $ echo $DISPLAY |
| + | :0 |
| + | '':0''が現在のメインディスプレイのDISPLAY番号になっている。(:1の場合もある) |
| + | |
| + | VNC Serverを起動する。~ |
| + | $ vncserver :1 -geometry 1080x1920 |
| + | Android端末の解像度を''-geometry''で設定している。2個めのディスプレイ:1を指定している。もしメインディスプレイが:1の場合は,:2とかにする。~ |
| + | |
| + | キー操作が必要な場合は,x2vncも起動しておく。~ |
| + | $ x2vnc -shared -west localhost:1 |
| + | |
| + | これで準備が出来た。 |
| + | |
| + | ** Android端末でVNC Viewerで接続する [#m9d318b5] |
| + | AndroidのVNC Viewerでは,接続IP Addressに'':5901''を追加する。(vncserverを:1で起動した場合)~ |
| + | 後は,connectで接続すれば,セカンドディスプレイとしてAndroid端末の画面が使用できる。 |
| + | |
| + | ** Linuxからセカンドディスプレイに画像を表示する [#fcdc1f9a] |
| + | セカンドディスプレイに画像を表示して確認のするために,ImageMagickをインストールする。~ |
| + | # apt install imagemagick |
| + | |
| + | ImageMagickのdisplayコマンドで画像を表示してみる。 |
| + | $ display -display :1 xxxxx.bmp |
| + | Android端末の画面に画像が表示された。 |
| + | |
| + | これで,2画面のディスプレイが使用出来るのを確認できた。 |