3P by GN⁺ | ★ favorite | 댓글 1개
  • 오래된 태블릿을 픽셀 기반 보조 디스플레이가 아니라 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 기반 서버 구성이 제안됨

댓글과 토론

Hacker News 의견들
  • Linux GNOME 데스크톱 환경에서는 태블릿을 터미널용뿐 아니라 보조 모니터로도 쓸 수 있음: https://www.omgubuntu.co.uk/2022/06/use-ipad-as-second-monit...
    이런 두 번째 태블릿 “모니터”로 게임까지 스트리밍하는 더 나은 해법을 아직 기다리는 중

    • 방금 시도해 봤는데 Microsoft RDP 클라이언트를 설치하려니 iOS 15 이상 필요라고 나와서 오래된 iPad에는 설치할 수 없었음
      결국 오래된 iPad는 이 방식으로 실제 사용하기 어려워 보이고, 동작하는 다른 RDP 클라이언트를 찾아볼 수는 있겠음
    • X11에서는 동작하지 않고, 커서도 보이지 않음
      커서가 필요 없다면 꽤 잘 작동함
    • KDE에서도 되는지, 아니면 비슷한 해법이 있는지 궁금함
  • Weylus를 써봤음: https://github.com/H-M-H/Weylus
    LAN으로 동작하고 태블릿에서 마우스를 제어할 수 있음
    가끔 지연이 있지만 해상도를 조정해 대역폭을 덜 쓰게 만들 수 있고, 안정적인지는 잘 모르겠음
    정기적으로 쓰지는 않았음

  • Windows에서 남는 노트북이나 기기가 있다면 SpaceDesk가 좋은 무료 앱임. 오픈소스는 아님: https://www.spacedesk.net/
    Windows 개발 머신에서 WSL2와 함께 쓰고, 오래된 노트북을 외부 디스플레이로 활용 중인데 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에서 동작할 것임
    서비스 개발 시에는 sce, sci, scs 같은 함수로 stop, status, start를 감싸면 st* 하위 명령과 두 번째 인자를 매번 바꾸는 번거로움을 줄일 수 있음

    • 동의함. 다만 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도 기가비트 이더넷이나 Thunderbolt와 같은 프로토콜을 쓰고, 대역폭이 임의 해상도에서 최대 프레임률을 결정하면 됨
      장치 인터페이스 메타데이터를 질의해 디스플레이, 프린터, 저장장치에 바이트 배열을 주고받고, 헤더 앞부분만 달라지는 구조가 가능했을 것임
      카메라와 스캐너에서도 제조사 드라이버 없이 웹 서버의 문서 폴더처럼 이미지와 동영상 파일을 직접 내려받을 수 있었을 텐데, 기술적으로 불가능했던 이유는 없었고 Microsoft와 Apple이 이런 일반화를 계속 막았다고 봄
      웹 표준도 위원회식 설계로 흘러가면서 이런 것들을 통합할 희망이 사라졌고, 스마트폰과 태블릿은 상품화된 독점 소비주의 사고의 극단처럼 보임
    • 태블릿에 USB HDMI 캡처 동글을 꽂으면 이렇게 쓸 수 있음
      어떤 웹캠 뷰어든 대체로 볼 수 있을 것이고, iPad에는 https://orion.tube/ 같은 전용 앱도 있음
      Android에도 선택지가 있는 건 알지만, 테스트할 현대적인 Android 태블릿은 없음
  • 예전에 Duet으로 이 용도를 해결했음
    iPad 화면으로 노트북 화면을 확장할 수 있어서 잘 작동함: https://www.duetdisplay.com/

  • 좋은 아이디어임
    별도 프로그램 대신 bash, awk, xev, xdotool로 비슷하게 구현했음
    screen 안에서는 screen의 잘라내기/붙여넣기를 쓰고, 나머지는 screen의 복사 버퍼와 xclipboard를 쓰면 됨