トホホな疑問(47) Androidスマホの中でVNC接続、TermuxのGUI

Joseph Halfmoon

前回、スマホにSSH接続できたものの、トホホ勃発でTermuxの再インストールが必要でした。今回は気を取り直して対処してGUIを動作させてみました。GUIの動作確認は「一応」できたのですけれど、あれこれトホホがアチコチに散在。なかなか一発完動とはなりません。

前回、WindowsPCからAndroidスマホのTermuxにSSH接続し、パソコンの画面とキーボードを使ってAndroid上のLinuxアプリ共を動かせるようになって喜んだあとに、以下のトホホな件にガックリ来ました。

  1. Google Play版のTermuxはもはやアップデートされていない
  2. F-Driodというところに更新版がある
  3. Google Play版とF-Droid版を混ぜるな

つまり、相当昔にインストールしたGoogle Play版をアンインストールして、F-Droid版を新たにインストールし直せ、ということです。

F-Droid版への切り替え

F-Droidは、Freeなオープンソースソフトウエア(FOSS)のレポジトリだそうです。ホームページは以下に

F-Droid(日本語ページ)

Google Playを経由せず(いわゆる野良アプリ)を配布してくれています。各アプリのAPKファイルの直接ダウンロードも可能ですが、F-Droidをインストールすると、Google Play同様にF-Droidアプリから各種ソフトをダウンロードし、自動更新したりもできるようです。私は一度F-Droid入れたですが、結局、個別にAPKインストールに戻しました。勝手に更新されるのもまたいろいろあり。

ともあれGoogle Playの外に出ないとならないので、出所不明のAPKのインストールをするための権限を設定しないとなりません。切り替えのザックリした手順は以下です。

  1. Google Play版の$HOME配下の各種ファイルや、$PREFIX配下のLinuxアプリケーションなどをバックアップする
  2. Google Play版のTermuxをアンインストール
  3. F-Droid版のTermuxをインストール
  4. バックアップしてあった各種ファイルをリストア

バックアップはtar-gzipで300Mバイトくらいのファイルになったのでそれなりの時間がかかりました。ここでもトホホが。

上記の手順の通り(直接 tar する方法と、termux-backup スクリプトを 使う方法の2通り)やってみたのですが、一部ファイルが戻ってなかったです。PC上でtarボールを解凍したら入っていたので、個別に戻しました。ううむ、何かオプションでも足りなかったのか?トホホ。

まあ、ともかくF-Droid版に切り替え完了。

ImageMagick

さてTermuxのお陰で、スマホが、外出先で使えるLinux機となりました。そこで、スマホで撮った写真を題材にいろいろやってみよう、と考えました。写真を題材にするのなら ImageMagick 必要だな、と。

ImageMagickのインストールは、pkg ツールで一発でした。コマンドラインツール的にはトホホなしでOKでした。

しかし、C++のソースからImageMagickのAPIを呼び出そうとしたらトホホありです。Magick++-config はTermux上のPATHの通ったディレクトリに存在しているので、clang のコマンドラインから呼び出せるのです。またMagick++.hもあります。が、コンパイルすると何かファイルが不在にみえるエラーがでます。調べたところ ImageMagick関係の-devみたいな名前のパッケージは pkg ツールからは見つかりません。コンフィグのPATHなのだろうか。何が悪いのだろ、トホホ。追及はまた今度。

GUIのインストール

インストールした ImageMagick使って、スマホで撮った写真のリサイズができることを確認できました。となると、Androidアプリに頼らずに処理後の画像を見てみたいです。GUIが必要ですな。Termux上でのGUIについてのドキュメントが以下にあります。

Graphical Environment

STEP1)Termux上のアプリのウインドウをPC上で動作しているXサーバに飛ばしてみる

最低限のX11関係ファイルのインストール後、DISPLAY変数をXサーバの動作しているPCのIPアドレスに向けてやりました。これでスマホのウインドウが、PC上に開く筈、ということでやってみました。スマホのターミナルウインドウがPC上で開きました。こんな感じ。

aterm

bashが動いているという点では、いままでのssh接続のCUIのウインドウと変わりがありません。しかし上記はGUIの中です。上記のようにImageMagickで No such fileのようなエラーを起こしてしまうと、ほらこのように

imError

ImageMagickの魔法使い様のウインドウが開きます。トンデモないな、ビックリします。すみません、私がファイル名を間違えました。

ファイル名を修正して再度開いてみると、ほれこのように開けます。

pic

スマホ写真を ImageMagickでリサイズしたものが、PC上のウインドウに表示されました。

調子にのって3種類のウインドウを重ねてみました。一番下の紺色のウインドウが、PC上のSSHからスマホに接続しているCUIのウインドウです。左下が、スマホ上のatermのウインドウがPCのXサーバに飛ばされてきているもの。右がWindowsの「純正」paintのウインドウです。

ssh_aterm_paint

まあ、PCの画面と、キーボード、マウスを使えるので便利といえば便利です。しかし、出先でスマホだけでLinuxするためにはスマホの中でGUIが完結してくれないと。

STEP2)Termux上のvncserverで作った画面を、Android上のVNCビューワで表示

Graphical Environment に書いてある方法で、vncserverをセットアップしました。この後、Termuxとは別に、Google Play版のVNCビューワをインストール。これでスマホ内で完結したGUIが使えます。しかし、ここでもトホホが一つ。

vncserverセットアップ後に作製されるスタートアップスクリプト内では、twmを起動するように書かれてました。しかし通常twmはインストールされていないし、わざわざインストールして起動することもないでしょう。

上記のウインドウマネージャ不在の状態で、VNCビューワでTermux上のvnsserverに接続すると

真っ黒な画面上に真っ黒なatermウインドウ

が表示されます。最初、ウインドウが開いていると気づきませんでした。トホホ。これでは何ともならないので、上記のページを参照し、とりあえず一番上に書いてあった Fluxbox をインストールし、スタートアップのtwmをコメントアウトして代わりに Fluxbox としてみました。

起動して操作している画面を冒頭のアイキャッチ画像に掲げました。ちゃんとLinuxしてますな。ただ、vncビューワを指で操作するのがキーボードとマウスになれた年寄りには難儀です。根本的な問題だな。トホホ。

トホホな疑問(46) WindowsPCからAndoridスマホにSSH接続 へ戻る