3 ポイント 投稿者 GN⁺ 2023-10-08 | 1件のコメント | WhatsAppで共有
  • 古いタブレットをピクセルベースの補助ディスプレイではなく SSHターミナル画面 として使うためのMVP/POCで、AndroidのSSHクライアントからコンピューターに接続した後、screen セッションにキー入力を注入する方式
  • グラフィックカードがすでに限界に達している、あるいは仮想ディスプレイアダプターが見つからず、ログのtailのようにテキストだけを見る状況で、タブレットへピクセルを送る回避策を避けたいユースケースに合わせた構成
  • 基本の流れは、コンピューターでSSHサーバーを開き、タブレットのターミナル/SSHクライアントで接続した後、DISPLAY=:0 screen -R aux でセッションを作成し、別の入力プログラムが screen -S aux -X stuff x のような形で文字をセッションに入れる構造
  • DISPLAY=:0 の設定により、ターミナルで xdg-open ., emacs &, git gui & のようなコマンドを実行したとき、その結果をメインのGUIセッションで見ることができる
  • セキュリティと使い勝手の制約が明記されたMVP/POC段階
    • モバイルアプリにコンピューター全体へのアクセス権を与える必要がある
    • コンピューターでSSHサーバーを開く必要があり、信頼できるネットワークでのみ起動し、それ以外では停止する運用が提案されている
    • C-SPC 入力処理の問題、キーごとに screen を実行する方式、古い機器ではターミナルクライアントを見つけにくい問題がある
    • どちらの方式もLANに依存する
  • Kindle Fireのオフィス環境ではターミナルとしてうまく動作したが、自宅のiPad環境ではEmacs画面として使うには遅すぎた、という使用結果が示されている
  • 貼り付けは Ctrl+Shift+V でクリップボード全体を screen セッションに注入する方式で、コピーはまだ未解決
  • より良いアプローチの候補として、hyper の構成要素や xterm.js、ブラウザー表示、WebSocket経由のキー入力送信、PTYベースのサーバー構成が提案されている

1件のコメント

 
GN⁺ 2023-10-08
Hacker News のコメント
  • Linux の GNOME デスクトップ環境では、タブレットをターミナル用だけでなくサブモニターとしても使える: https://www.omgubuntu.co.uk/2022/06/use-ipad-as-second-monit...
    こうした2台目のタブレット「モニター」へゲームまでストリーミングできる、より良い解決策をまだ待っているところ

    • さっき試してみたが、Microsoft RDP クライアントをインストールしようとすると iOS 15 以上が必要と表示され、古い iPad にはインストールできなかった
      結局、古い iPad ではこの方法を実用的に使うのは難しそうで、動作する別の RDP クライアントを探すことはできるかもしれない
    • X11 では動作せず、カーソルも表示されない
      カーソルが不要ならかなりうまく動作する
    • KDE でもできるのか、あるいは似た解決策があるのか気になる
  • Weylusを使ってみた: https://github.com/H-M-H/Weylus
    LAN 経由で動作し、タブレットからマウスを操作できる
    ときどき遅延はあるが、解像度を調整して帯域幅の使用を減らすことができ、安定しているかはよく分からない
    定期的には使っていなかった

  • Windows で余っているノートPCやデバイスがあるなら、SpaceDesk は良い無料アプリだ。オープンソースではない: https://www.spacedesk.net/
    Windows の開発マシンで WSL2 と一緒に使い、古いノートPCを外部ディスプレイとして活用しているが、Wi-Fi でもうまく動作する

    • 安価な Amazon タブレットで USB-C 経由の SpaceDesk を動かせた。タブレット側で PTP モードを有効にする必要があると気づいてから成功した
      旅行時のサブモニターとしてかなり良さそうで、60fps と高めの設定でも遅延はほとんど感じない
    • 要件に iOS 9.3+ とあったので期待したが、保管していた問題なく動く iPad 2 にはアプリをインストールできなかった
      まだサポートされている iPad では macOS 内蔵の iPad サブ画面機能をたまに使っているが、かなりうまく動作する
  • こうしたデバイスの LVDS リボンケーブルコネクタ がもっと標準化されていればよかったと思う
    HDMI/DisplayPort アダプタを買うだけですぐ使えるはずだが、実際そういうアダプタはあるものの、知る限り LVDS リボンケーブルの標準は一つに統一されているわけでも、それに近い状態でもない

  • systemctl は入力しにくいと感じる
    サービスを頻繁に開始/停止するなら、alias sc='sudo systemctl' のようなエイリアスをすすめる
    Windows NT 後期バージョンの “service control” ユーティリティである sc とも相性がよく、bash/fish で動作するはず
    サービス開発時には、scesciscs のような関数で stopstatusstart をラップすると、st* サブコマンドと2番目の引数を毎回変える手間を減らせる

    • 同意する。ただし journalctl はさらに入力しづらいと感じる
  • 同様に、古いスマートフォンを Stream Deck の代替として使うなら TouchPortal が使える: https://www.touch-portal.com/
    無料ではないが高くはなく、驚くほどうまく動作する

    • 似たことをする無料のオープンソースソフトウェアのようだ: https://stream-pi.com/
      今聞いている動画によると、現時点でクライアントは Linux のみで、ホストは Windows と Linux をサポートしている
      Linux を実行する Surface Pro をクライアント、Windows をホストとして少し使ってみたが、現状の足かせになっているのは プラグイン不足
      Stream Deck はゲームセッション管理に使っているが、Steam、Discord、Voicemod のサウンドボードと音声、ときどき OBS、ゲーム起動などを扱うには、今の状態では OBS とショートカットキーが設定されたもの程度しか管理できない
  • タブレットには HDMI/DisplayPort 入力があり、そのままディスプレイとして使えるべきだ

    • さらに一歩進めて、すべての機器に TCP のような 標準通信プロトコルがあるべきだった
      ディスプレイもバイトを読み書きできるもう一つのデバイスとして現れ、すべてのデバイスが問い合わせ可能な HTTP/HATEOAS ベースの自己記述インターフェースを持つ、という形だ
      HDMI/DisplayPort や USB A/B/C/.../Z もギガビット Ethernet や Thunderbolt のようなプロトコルを使い、帯域幅が任意の解像度での最大フレームレートを決めればよかった
      デバイスインターフェースのメタデータを問い合わせて、ディスプレイ、プリンタ、ストレージデバイスとバイト配列をやり取りし、ヘッダーの先頭部分だけが異なる構造にできたはずだ
      カメラやスキャナでも、メーカー製ドライバなしに Web サーバーのドキュメントフォルダのように画像や動画ファイルを直接ダウンロードできたはずで、技術的に不可能だった理由はなく、Microsoft と Apple がこうした一般化をずっと妨げてきたのだと思う
      Web 標準も委員会式の設計に流れてしまい、こうしたものを統合する希望は消え、スマートフォンとタブレットは商品化された独占的消費主義的発想の極端な例に見える
    • タブレットに USB HDMI キャプチャドングルを挿せば、このように使える
      どんなウェブカメラビューアでもたいてい見られるはずで、iPad には https://orion.tube/ のような専用アプリもある
      Android にも選択肢があるのは知っているが、テストできる最近の Android タブレットは持っていない
  • 以前は Duet でこの用途を解決していた
    iPad の画面にノートPCの画面を拡張できるので、うまく動作する: https://www.duetdisplay.com/

  • 良いアイデアだ
    別プログラムではなく、bash、awk、xev、xdotoolで似たものを実装した
    screen 内では screen のカット/ペーストを使い、それ以外は screen のコピーバッファと xclipboard を使えばよい