Show HN: ใช้แท็บเล็ตเครื่องเก่าเป็นจอเสริม
(github.com/alex028502)- นี่คือ MVP/POC สำหรับใช้แท็บเล็ตเครื่องเก่าเป็น หน้าจอเทอร์มินัล SSH แทนการเป็นจอเสริมแบบส่งพิกเซล โดยเชื่อมต่อจากไคลเอนต์ SSH บน Android ไปยังคอมพิวเตอร์ แล้วส่งคีย์อินพุตเข้าเซสชัน
screen - แนวทางนี้เหมาะกับกรณีที่การ์ดจอถึงขีดจำกัดแล้วหรือหา virtual display adapter ไม่ได้ และต้องการหลีกเลี่ยงการส่งพิกเซลไปยังแท็บเล็ตเมื่อดูเฉพาะข้อความ เช่น การ tail log
- โฟลว์พื้นฐานคือ เปิด SSH server บนคอมพิวเตอร์ จากนั้นเชื่อมต่อด้วยเทอร์มินัล/ไคลเอนต์ SSH บนแท็บเล็ต แล้วสร้างเซสชันด้วย
DISPLAY=:0 screen -R auxโดยมีโปรแกรมรับอินพุตแยกต่างหากที่ส่งตัวอักษรเข้าเซสชันในลักษณะเช่นscreen -S aux -X stuff x - การตั้งค่า
DISPLAY=:0ทำให้เมื่อรันคำสั่งอย่างxdg-open .,emacs &,git gui &จากเทอร์มินัล ก็จะเห็นผลลัพธ์บนเซสชัน GUI หลักได้ - ปัจจุบันยังเป็น MVP/POC ที่มีข้อจำกัดด้านความปลอดภัยและการใช้งาน
- ต้องให้สิทธิ์แอปมือถือเข้าถึงคอมพิวเตอร์ทั้งเครื่อง
- ต้องเปิด SSH server บนคอมพิวเตอร์ และแนะนำให้เปิดใช้งานเฉพาะบนเครือข่ายที่เชื่อถือได้ แล้วปิดในกรณีอื่น
- มีปัญหาเรื่องการจัดการอินพุต
C-SPC, การเรียกscreenแยกสำหรับทุกปุ่มกด และความยากในการหาไคลเอนต์เทอร์มินัลบนอุปกรณ์รุ่นเก่า - ทั้งสองวิธีต่างพึ่งพา LAN
- ผู้เขียนระบุว่าในสภาพแวดล้อมสำนักงานที่ใช้ Kindle Fire มันทำงานเป็นเทอร์มินัลได้ดี แต่ในบ้านเมื่อใช้ iPad เป็นหน้าจอ Emacs นั้นช้าเกินไป
- การวางใช้
Ctrl+Shift+Vเพื่อส่งเนื้อหาในคลิปบอร์ดทั้งหมดเข้าเซสชันscreenส่วนการคัดลอกยังแก้ปัญหาไม่ได้ - แนวทางที่อาจดีกว่าซึ่งถูกเสนอไว้คือใช้ส่วนประกอบของ hyper, xterm.js, การแสดงผลผ่านเบราว์เซอร์, การส่งคีย์อินพุตผ่าน WebSocket และเซิร์ฟเวอร์แบบ PTY
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
บน สภาพแวดล้อมเดสก์ท็อป GNOME ของ Linux สามารถใช้แท็บเล็ตเป็นจอภาพเสริมได้ ไม่ใช่แค่สำหรับเทอร์มินัล: https://www.omgubuntu.co.uk/2022/06/use-ipad-as-second-monit...
ยังรอโซลูชันที่ดีกว่าสำหรับสตรีมเกมไปยัง “จอ” แท็บเล็ตตัวที่สองแบบนี้อยู่
สุดท้าย iPad รุ่นเก่าน่าจะใช้งานจริงด้วยวิธีนี้ได้ยาก และอาจลองหา RDP client ตัวอื่นที่ใช้ได้ดู
ถ้าไม่ต้องใช้เคอร์เซอร์ก็ทำงานได้ค่อนข้างดี
เคยลองใช้ Weylus: https://github.com/H-M-H/Weylus
ทำงานผ่าน LAN และควบคุมเมาส์จากแท็บเล็ตได้
บางครั้งมีดีเลย์ แต่ปรับความละเอียดให้ใช้แบนด์วิดท์น้อยลงได้ และไม่ค่อยแน่ใจว่าเสถียรแค่ไหน
ไม่ได้ใช้เป็นประจำ
ถ้ามีแล็ปท็อปหรืออุปกรณ์เหลือ ๆ บน Windows SpaceDesk เป็นแอปฟรีที่ดี ไม่ใช่โอเพนซอร์ส: https://www.spacedesk.net/
ใช้ร่วมกับ WSL2 บนเครื่องพัฒนา Windows และเอาแล็ปท็อปเก่ามาใช้เป็นจอภายนอกอยู่ ซึ่งทำงานได้ดีแม้ผ่าน Wi‑Fi
น่าจะค่อนข้างดีสำหรับใช้เป็นจอเสริมเวลาเดินทาง และแทบไม่รู้สึกถึงดีเลย์แม้ที่ 60fps และการตั้งค่าสูง
บน iPad ที่ยังรองรับอยู่ บางครั้งก็ใช้ฟีเจอร์จอเสริม iPad ในตัวของ macOS ซึ่งทำงานได้ค่อนข้างดี
ถ้า คอนเน็กเตอร์สายแพ LVDS ของอุปกรณ์พวกนี้มีมาตรฐานมากกว่านี้คงดี
จะได้ซื้อแค่อะแดปเตอร์ HDMI/DisplayPort มาใช้ได้ทันที แม้ในความเป็นจริงจะมีอะแดปเตอร์แบบนั้นอยู่ แต่เท่าที่รู้มาตรฐานสายแพ LVDS ไม่ได้รวมเป็นหนึ่งเดียวหรือใกล้เคียงเลย
รู้สึกว่า
systemctlพิมพ์ยากถ้าต้อง start/stop service บ่อย ๆ แนะนำให้ตั้ง alias เช่น
alias sc='sudo systemctl'ยังเข้ากันได้ดีกับ
scซึ่งเป็นยูทิลิตี “service control” ใน Windows NT รุ่นหลัง ๆ และน่าจะใช้ได้ใน bash/fishตอนพัฒนา service ถ้าห่อ
stop,status,startด้วยฟังก์ชันอย่างsce,sci,scsก็ช่วยลดความยุ่งยากที่ต้องคอยเปลี่ยนทั้งคำสั่งย่อยst*และอาร์กิวเมนต์ตัวที่สองทุกครั้งjournalctlพิมพ์แย่กว่านั้นอีกถ้าจะใช้โทรศัพท์เก่าคล้าย ๆ กันเป็น ทางเลือกแทน Stream Deck สามารถใช้ TouchPortal ได้: https://www.touch-portal.com/
ไม่ฟรี แต่ไม่แพง และทำงานได้ดีอย่างน่าประหลาดใจ
จากวิดีโอที่กำลังฟังอยู่ ตอนนี้ client มีเฉพาะ Linux ส่วน host รองรับ Windows และ Linux
เคยลองใช้ Surface Pro ที่รัน Linux เป็น client และ Windows เป็น host อยู่บ้าง แต่สิ่งที่ฉุดไว้ตอนนี้คือ ปลั๊กอินยังน้อย
ใช้ Stream Deck สำหรับจัดการเซสชันเกมอยู่ แต่ถ้าต้องจัดการ Steam, Discord, ซาวด์บอร์ดและเสียงของ Voicemod, OBS เป็นครั้งคราว, การเปิดเกม ฯลฯ ตอนนี้ทำได้แค่ OBS กับสิ่งที่ตั้งคีย์ลัดไว้ประมาณนั้น
แท็บเล็ตควรมี อินพุต HDMI/DisplayPort เพื่อให้ใช้เป็นจอแสดงผลได้ทันที
จอแสดงผลก็จะปรากฏเป็นอุปกรณ์อีกชิ้นหนึ่งที่อ่านและเขียนไบต์ได้ และอุปกรณ์ทุกชิ้นมีอินเทอร์เฟซแบบ self-documenting บน HTTP/HATEOAS ที่ query ได้
HDMI/DisplayPort หรือ USB A/B/C/.../Z ก็ควรใช้โปรโตคอลอย่างกิกะบิตอีเทอร์เน็ตหรือ Thunderbolt แล้วให้แบนด์วิดท์เป็นตัวกำหนดเฟรมเรตสูงสุดที่ความละเอียดใด ๆ ก็พอ
น่าจะ query metadata ของอินเทอร์เฟซอุปกรณ์ แล้วส่งรับอาร์เรย์ของไบต์กับจอแสดงผล เครื่องพิมพ์ หรืออุปกรณ์เก็บข้อมูลได้ โดยโครงสร้างต่างกันแค่ส่วนต้นของ header
แม้แต่กล้องและสแกนเนอร์ก็น่าจะดาวน์โหลดไฟล์ภาพและวิดีโอโดยตรงได้เหมือนโฟลเดอร์เอกสารบนเว็บเซิร์ฟเวอร์ โดยไม่ต้องใช้ไดรเวอร์จากผู้ผลิต ไม่มีเหตุผลทางเทคนิคที่ทำให้เป็นไปไม่ได้ และมองว่า Microsoft กับ Apple คอยขัดขวางการทำให้เป็นแบบทั่วไปเช่นนี้มาตลอด
มาตรฐานเว็บก็ไหลไปในแนวทางการออกแบบแบบคณะกรรมการ ทำให้ความหวังที่จะรวมสิ่งเหล่านี้หายไป และสมาร์ตโฟนกับแท็บเล็ตก็ดูเหมือนเป็นสุดขั้วของแนวคิดบริโภคนิยมแบบ proprietary ที่ถูกทำให้เป็นสินค้า
โดยทั่วไปน่าจะดูผ่านเว็บแคมวิวเวอร์ตัวไหนก็ได้ และบน iPad ก็มีแอปเฉพาะอย่าง https://orion.tube/
รู้ว่า Android ก็มีตัวเลือกอยู่ แต่ไม่มีแท็บเล็ต Android รุ่นใหม่ ๆ ให้ทดสอบ
เมื่อก่อนใช้ Duet แก้โจทย์นี้
ขยายหน้าจอแล็ปท็อปไปยังจอ iPad ได้ เลยใช้งานได้ดี: https://www.duetdisplay.com/
เป็นไอเดียที่ดี
เคยทำแบบคล้ายกันด้วย bash, awk, xev, xdotool แทนที่จะใช้โปรแกรมแยกต่างหาก
ภายใน
screenก็ใช้การตัด/วางของscreenส่วนที่เหลือใช้ copy buffer ของscreenกับxclipboardก็พอ