3 điểm bởi GN⁺ 2023-10-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là một MVP/POC nhằm dùng máy tính bảng cũ làm màn hình terminal SSH thay vì màn hình phụ dựa trên pixel; cách làm là kết nối từ ứng dụng SSH trên Android vào máy tính rồi chèn phím gõ vào phiên screen
  • Cách thiết lập này phù hợp với các trường hợp sử dụng muốn tránh việc gửi pixel tới máy tính bảng khi card đồ họa đã chạm giới hạn hoặc không tìm được adapter màn hình ảo, và khi chỉ cần xem văn bản như tail log
  • Luồng cơ bản là mở SSH server trên máy tính, kết nối bằng terminal/SSH client trên máy tính bảng, tạo phiên bằng DISPLAY=:0 screen -R aux, rồi dùng một chương trình nhập liệu riêng để đưa ký tự vào phiên theo kiểu screen -S aux -X stuff x
  • Với thiết lập DISPLAY=:0, khi chạy các lệnh như xdg-open ., emacs &, git gui & trong terminal thì có thể xem kết quả ở phiên GUI chính
  • Đây là trạng thái MVP/POC với các ràng buộc rõ ràng về bảo mật và khả năng sử dụng
    • Phải cấp cho ứng dụng di động quyền truy cập toàn bộ máy tính
    • Phải mở SSH server trên máy tính, và cách dùng được đề xuất là chỉ khởi động trên mạng đáng tin cậy rồi tắt đi ở các trường hợp khác
    • Có các vấn đề như xử lý đầu vào C-SPC, cách chạy screen cho từng phím, và khó tìm terminal client trên thiết bị cũ
    • Cả hai cách đều phụ thuộc vào LAN
  • Trong môi trường văn phòng với Kindle Fire, nó hoạt động tốt như một terminal; nhưng trong môi trường gia đình với iPad thì quá chậm để dùng làm màn hình Emacs
  • Dán nội dung được thực hiện bằng Ctrl+Shift+V để chèn toàn bộ clipboard vào phiên screen, còn sao chép thì vẫn chưa được giải quyết
  • Các hướng tiếp cận được cho là tốt hơn gồm các thành phần của hyper, xterm.js, hiển thị qua trình duyệt, truyền phím qua WebSocket và cấu hình server dựa trên PTY

1 bình luận

 
GN⁺ 2023-10-08
Ý kiến trên Hacker News
  • Trên môi trường desktop GNOME của Linux, có thể dùng máy tính bảng không chỉ cho terminal mà còn làm màn hình phụ: https://www.omgubuntu.co.uk/2022/06/use-ipad-as-second-monit...
    Vẫn đang chờ một giải pháp tốt hơn để stream cả game lên “màn hình” máy tính bảng thứ hai như thế này

    • Vừa thử xong, nhưng khi cài Microsoft RDP client thì báo cần iOS 15 trở lên, nên không cài được trên iPad cũ
      Rốt cuộc có vẻ khó dùng iPad cũ theo cách này trong thực tế, dù có thể thử tìm một RDP client khác còn hoạt động
    • Không hoạt động trên X11, và con trỏ cũng không hiển thị
      Nếu không cần con trỏ thì chạy khá ổn
    • Không biết KDE có làm được không, hoặc có giải pháp tương tự nào không
  • Đã thử Weylus: https://github.com/H-M-H/Weylus
    Chạy qua LAN và có thể điều khiển chuột từ máy tính bảng
    Thỉnh thoảng có độ trễ, nhưng có thể chỉnh độ phân giải để dùng ít băng thông hơn; còn độ ổn định thì không chắc
    Không dùng thường xuyên

  • Nếu có laptop hoặc thiết bị dư chạy Windows, SpaceDesk là một ứng dụng miễn phí tốt. Không phải mã nguồn mở: https://www.spacedesk.net/
    Đang dùng cùng WSL2 trên máy phát triển Windows và tận dụng laptop cũ làm màn hình ngoài; chạy tốt cả qua Wi-Fi

    • Đã chạy được SpaceDesk qua USB-C trên một máy tính bảng Amazon giá rẻ, sau khi nhận ra cần bật chế độ PTP trên máy tính bảng
      Có vẻ khá ổn để làm màn hình phụ khi đi du lịch, và ngay cả ở 60fps cùng thiết lập cao cũng hầu như không cảm thấy độ trễ
    • Thấy yêu cầu có iOS 9.3+ nên đã kỳ vọng, nhưng ứng dụng không cài được trên chiếc iPad 2 còn nguyên vẹn đang cất
      Trên iPad vẫn còn được hỗ trợ, thỉnh thoảng tôi dùng tính năng màn hình phụ iPad tích hợp của macOS và nó chạy khá tốt
  • Giá mà đầu nối cáp ribbon LVDS của các thiết bị này được chuẩn hóa hơn thì hay hơn
    Khi đó chỉ cần mua adapter HDMI/DisplayPort là dùng ngay được; thực tế có những adapter như vậy, nhưng theo tôi biết thì tiêu chuẩn cáp ribbon LVDS không hề được thống nhất thành một chuẩn duy nhất, hay thậm chí gần như vậy

  • Cảm thấy systemctl khó gõ
    Nếu thường xuyên khởi động/dừng service, nên dùng alias kiểu alias sc='sudo systemctl'
    Nó cũng khớp với sc, tiện ích “service control” của các phiên bản Windows NT đời sau, và sẽ hoạt động trong bash/fish
    Khi phát triển service, bọc stop, status, start bằng các hàm như sce, sci, scs có thể giảm phiền phức phải đổi tiểu lệnh st* và đối số thứ hai mỗi lần

    • Đồng ý. Nhưng tôi thấy journalctl còn tệ hơn để gõ
  • Tương tự, nếu muốn dùng điện thoại cũ làm giải pháp thay thế Stream Deck, có thể dùng TouchPortal: https://www.touch-portal.com/
    Không miễn phí nhưng không đắt, và hoạt động tốt đến ngạc nhiên

    • Có vẻ là phần mềm miễn phí, mã nguồn mở làm việc tương tự: https://stream-pi.com/
      Theo video tôi đang nghe, hiện client chỉ có cho Linux, còn host hỗ trợ Windows và Linux
      Tôi đã dùng thử một chút Surface Pro chạy Linux làm client và Windows làm host; thứ đang cản trở hiện nay là thiếu plugin
      Tôi dùng Stream Deck để quản lý phiên chơi game, nhưng để xử lý Steam, Discord, soundboard và giọng nói của Voicemod, đôi khi là OBS, khởi chạy game, v.v., thì ở trạng thái hiện tại có lẽ chỉ quản lý được OBS và những thứ đã cấu hình phím tắt
  • Máy tính bảng lẽ ra nên có đầu vào HDMI/DisplayPort để có thể dùng trực tiếp làm màn hình

    • Tiến thêm một bước nữa, lẽ ra mọi thiết bị nên có giao thức truyền thông chuẩn như TCP
      Màn hình cũng xuất hiện như một thiết bị nữa có thể đọc và ghi byte, và mọi thiết bị đều có giao diện tự mô tả dựa trên HTTP/HATEOAS có thể truy vấn
      HDMI/DisplayPort hay USB A/B/C/.../Z cũng dùng giao thức như gigabit Ethernet hoặc Thunderbolt, và băng thông sẽ quyết định tốc độ khung hình tối đa ở độ phân giải bất kỳ
      Khi đó có thể truy vấn metadata giao diện thiết bị để gửi/nhận mảng byte với màn hình, máy in, thiết bị lưu trữ, theo một cấu trúc chỉ khác nhau ở phần đầu header
      Với camera và scanner, đáng lẽ cũng có thể tải trực tiếp file ảnh và video như thư mục tài liệu trên web server mà không cần driver của nhà sản xuất; không có lý do kỹ thuật nào khiến việc đó bất khả thi, và tôi cho rằng Microsoft cùng Apple đã liên tục ngăn cản sự khái quát hóa như vậy
      Các tiêu chuẩn web cũng trôi theo kiểu thiết kế bằng ủy ban, làm mất hy vọng tích hợp những thứ này; smartphone và tablet trông như cực điểm của tư duy tiêu dùng độc quyền đã bị hàng hóa hóa
    • Cắm USB HDMI capture dongle vào máy tính bảng là có thể dùng như vậy
      Hầu như trình xem webcam nào cũng xem được, và trên iPad còn có ứng dụng chuyên dụng như https://orion.tube/
      Tôi biết Android cũng có lựa chọn, nhưng không có máy tính bảng Android hiện đại để thử
  • Trước đây đã dùng Duet để giải quyết nhu cầu này
    Nó cho phép mở rộng màn hình laptop sang màn hình iPad, nên chạy ổn: https://www.duetdisplay.com/

  • Ý tưởng hay
    Tôi đã làm một thứ tương tự bằng bash, awk, xev, xdotool thay vì chương trình riêng
    Trong screen thì dùng cắt/dán của screen, còn phần còn lại có thể dùng bộ đệm sao chép của screenxclipboard