Chuyển Đổi Thiết Bị Di Động Thành Màn Hình Phụ Linux Với VirtScreen

VirtScreen là một ứng dụng mã nguồn mở cho hệ điều hành Linux, cho phép người dùng tận dụng iPad, máy tính bảng hoặc máy tính khác như màn hình phụ thông qua giao thức VNC — không cần phần cứng bổ sung hay chi phí mua màn hình vật lý.

Cơ chế hoạt động

Ứng dụng xây dựng trên nền tảng Python với giao diện đồ họa PyQt5, tích hợp chặt chẽ hai thành phần cốt lõi:

  • x11vnc: Máy chủ VNC nội bộ, phát sóng luồng màn hình từ X11 session hiện tại.
  • XRandR: Quản lý động cấu hình hiển thị (độ phân giải, vị trí, hướng xoay) thông qua lệnh dòng lệnh hoặc API.

Cài đặt nhanh

Phiên bản AppImage (khuyến nghị cho người mới):

chmod +x VirtScreen-x86_64.AppImage
./VirtScreen-x86_64.AppImage

Trên Debian/Ubuntu:

sudo apt update && sudo apt install -y x11vnc
sudo apt install ./virtscreen_0.9.2_amd64.deb

Cấu hình cơ bản

Sau khi khởi chạy, biểu tượng VirtScreen xuất hiện ở khay hệ thống. Nhấp chuột phải để mở bảng điều khiển và thiết lập:

  • Độ phân giải: ví dụ 1366x768, 2560x1440 hoặc tùy chỉnh theo tỷ lệ khung hình thiết bị đầu cuối.
  • Hướng hiển thị: chọn portrait hoặc landscape.
  • Tùy chọn Scale factor: bật 2.0 cho màn hình Retina hoặc cao cấp tương đương.

Kết nối thiết bị khách

Khi nhấn nút Start VNC Server, ứng dụng sẽ hiển thị địa chỉ IP cục bộ (ví dụ: 192.168.1.23:5900). Trên thiết bị mục tiêu (iPad, Android tablet, Windows PC), sử dụng bất kỳ ứng dụng VNC client nào (RealVNC, TigerVNC Viewer, hoặc bVNC) và nhập địa chỉ này để kết nối.

Thao tác nâng cao qua terminal

VirtScreen hỗ trợ toàn bộ chức năng qua CLI với các tùy chọn linh hoạt:

# Tự động áp dụng cấu hình lưu sẵn
virtscreen --resume

# Đặt màn hình phụ bên trái màn hình chính
virtscreen --position left --resolution 1280x800

# Đặt màn hình dọc phía dưới, với hệ số phóng to 1.5
virtscreen --position bottom --orientation portrait --scale 1.5

# Khởi động server VNC mà không mở GUI
virtscreen --headless --port 5901

Cấu trúc dự án chính

Các thành phần quan trọng trong kho mã nguồn:

  • src/core/launcher.py: Điểm vào chính, xử lý tham số dòng lệnh và khởi tạo phiên làm việc.
  • src/display/xrandr_manager.py: Gói lệnh xrandr thành lớp Python để quản lý output ảo.
  • src/ui/main_window.py: Giao diện người dùng dạng widget, không phụ thuộc QML.
  • config/default.json: Tệp cấu hình mặc định với các giá trị khởi tạo an toàn.

Ứng dụng thực tiễn

  • Lập trình đa cửa sổ: Chạy IDE trên màn hình chính, đồng thời xem log hoặc terminal trên thiết bị di động.
  • Thiết kế đồ họa: Dùng tablet làm bảng vẽ kỹ thuật số, kết nối trực tiếp với phần mềm như Krita hoặc GIMP qua màn hình ảo.
  • Học tập tương tác: Hiển thị slide bài giảng trên màn hình chính, ghi chú bằng bút stylus trên tablet được đồng bộ thời gian thực.

Xử lý sự cố thường gặp

Vấn đề: Kết nối VNC thất bại sau vài giây.
Giải pháp: Kiểm tra quy tắc tường lửa (sudo ufw status) và mở cổng 5900-5909 nếu cần.

Vấn đề: Ảnh hiển thị bị vỡ, thiếu độ sắc nét.
Giải pháp: Điều chỉnh --scale phù hợp với mật độ điểm ảnh thiết bị đầu cuối, tránh dùng --hidpi trên màn hình có DPI thấp.

Thẻ: linux VNC x11vnc xrandr PyQt5

Đăng vào ngày 20 tháng 10 lúc 10:44