RemoteDesktop · Rust · macOS & Windows

Máy ở xa,
nhưng bấm là ăn ngay

Phần lớn phần mềm điều khiển từ xa cho cảm giác trễ vì ảnh phải đi vòng qua RAM và CPU. Ở đây chụp màn hình, mã hoá, giải mã và vẽ đều nằm trên GPU — độ trễ trung vị khoảng 10 ms ở độ phân giải gốc.

Kèm sẵn Tailscale Không cần mở cổng router Gửi tệp & chat
10 msđộ trễ trung vị (p50)
12 mstrường hợp xấu (p99)
60 fpsở 1920 × 1080
20–24Mbps băng thông

Đo trên MacBook Apple Silicon, HEVC 4:2:2 phần cứng, tính trọn chuỗi chụp → mã hoá → truyền → giải mã → vẽ.

Kiến trúc

Ảnh không một lần nào rời khỏi GPU

Mỗi chặng dùng đúng bộ máy phần cứng mà hệ điều hành cung cấp, thay vì một thư viện chung chạy đâu cũng được.

Chặng
macOS
Windows
Chụp màn hình
ScreenCaptureKit
DXGI Desktop Duplication
Mã hoá
VideoToolbox — HEVC 4:2:2 10-bit
Media Foundation — HEVC 4:2:0 8-bit
Giải mã
VideoToolbox
Media Foundation (DXVA)
Vẽ lên màn hình
wgpu ← IOSurface
wgpu ← texture D3D12 dùng chung
Bơm chuột & phím
CGEvent
SendInput

Đường truyền QUIC

Video đi bằng datagram: mất gói thì bỏ luôn khung đó chứ không dừng chờ gửi lại. Điều khiển, chat và tệp đi bằng stream tin cậy riêng.

Hai chiều

Không chia máy chủ với máy khách. Máy nào cài xong cũng vừa chia sẻ được màn hình vừa điều khiển được máy khác.

Gửi tệp và chat

Kéo tệp sang máy kia ngay lúc đang điều khiển, và có khung chat để trao đổi mà không cần mở thêm phần mềm khác.

Viết bằng Rust, không chạy nền lén lút

Phần mềm cần quyền ghi màn hình và giả lập chuột phím — đúng những quyền mà phần mềm gián điệp cũng xin. Vì vậy mọi lỗi lúc khởi động đều hiện thành hộp thoại và được ghi nhật ký, và mỗi bản phát hành đều kèm mã SHA-256 để bạn đối chiếu file tải về.

Tải về

Cài RemoteDesktop

Cài trên cả hai máy: máy cần được điều khiển và máy bạn ngồi. Bộ cài đã kèm Tailscale.

macOS: cho phép mở app lần đầu

Bản macOS chưa qua bước notarize (Apple quét và đóng dấu cho app) nên lần đầu mở, macOS sẽ chặn lại. Chỉ cần cho phép một lần trong Quyền riêng tư & Bảo mật, những lần sau mở bình thường.

  1. Mở app, bấm Xong

    Kéo Remote Desktop vào Applications rồi mở. macOS báo Không mở được — bấm Xong, đừng bấm Chuyển vào Thùng rác.

  2. Vào Quyền riêng tư & Bảo mật

    Menu Apple → Cài đặt hệ thống → Quyền riêng tư & Bảo mật. Cuộn xuống mục Bảo mật, bấm Vẫn mở cạnh dòng báo Remote Desktop bị chặn.

  3. Xác nhận Vẫn mở

    Bấm Vẫn mở rồi nhập mật khẩu máy hoặc chạm Touch ID. Sau đó cấp quyền Ghi màn hình và Trợ năng khi app hỏi, cũng trong Quyền riêng tư & Bảo mật.

Nút Vẫn mở chỉ hiện trong khoảng một giờ sau lần mở bị chặn. Không thấy nút thì mở app thêm một lần rồi quay lại Cài đặt. Hình trên là minh hoạ, chữ trên máy bạn có thể khác đôi chút theo phiên bản macOS.

Máy báo “ứng dụng bị hỏng” hoặc không có nút Vẫn mở?

File không hỏng, chỉ là macOS gắn cờ cách ly cho file tải bằng trình duyệt. Mở Terminal, chạy lệnh dưới đây rồi mở lại app:

xattr -cr "/Applications/Remote Desktop.app"
Kết nối qua Internet

Hai máy ở hai nơi: dùng Tailscale

Tailscale là mạng riêng ảo miễn phí: mỗi máy nhận một địa chỉ 100.x.y.z cố định, hai máy thấy nhau qua Internet mà không phải mở cổng router. RemoteDesktop dùng Tailscale làm đường nối chính.

  1. Cài Tailscale trên cả hai máy

    Windows: trong bộ cài RemoteDesktop, để nguyên mục Tailscale rồi bấm Next. macOS: trong cửa sổ .dmg, mở Cài Tailscale.pkg và làm theo. Lỡ bỏ qua thì tải tại tailscale.com/download.

  2. Đăng nhập cùng một tài khoản

    Mở Tailscale (biểu tượng trên thanh menu hoặc khay hệ thống), đăng nhập bằng Google, Microsoft hoặc Apple. Hai máy phải dùng chung một tài khoản. Trên macOS, bấm Cho phép khi được hỏi thêm cấu hình VPN.

  3. Kiểm tra trong RemoteDesktop

    Mở RemoteDesktop, khung Tailscale phải hiện Đã kết nối tailnet kèm địa chỉ dạng 100.x.y.z:47823. Nếu báo Đã cài nhưng chưa bật hay Chưa đăng nhập, bấm nút Bật kết nối hoặc Đăng nhập Tailscale ngay bên cạnh.

  4. Chia sẻ và kết nối

    Máy cần được điều khiển bấm Bắt đầu chia sẻ. Máy bạn ngồi bấm tên máy kia trong danh sách để điền sẵn địa chỉ, rồi bấm Kết nối. Cả hai máy đều của bạn thì đánh dấu ô vào thẳng, khỏi mật khẩu cho nhanh.

Minh hoạ khung Tailscale trong RemoteDesktop khi đã kết nối Tailscale Làm mới Đã kết nối tailnet 3 Địa chỉ để máy kia gõ: 100.101.7.42:47823 Chép Máy cùng tài khoản Tailscale vào thẳng, khỏi mật khẩu Bấm một máy để điền sẵn địa chỉ: pc-van-phong 100.93.40.17 macbook-nha 100.88.12.5 Cho điều khiển máy này Máy kia sẽ gõ: 100.101.7.42:47823 (Tailscale) Bắt đầu chia sẻ 4 Điều khiển máy khác Địa chỉ máy cần vào 100.93.40.17:47823 Kết nối 4
Hình minh hoạ khung Tailscale sau khi đăng nhập. Số trên hình ứng với các bước ở trên.