Nhật ký Indie Hacker: Code Spotmark cho Mac bằng Hackintosh và chiếc PC cũ kỹ

Nhật ký Indie Hacker: Code Spotmark cho Mac bằng Hackintosh và chiếc PC cũ kỹ

Xin chào, lại là mình từ CatalystPack Studio đây.

Nếu bạn có theo dõi bài viết trước, bạn hẳn đã biết mình quyết định chọn Native (C++/Qt) thay vì Electron để xây dựng Spotmark (công cụ vẽ và chú thích trực tiếp lên màn hình). Mục đích duy nhất là để app không bị giật lag và không ngốn RAM.

Quyết định đó nghe thì rất “ngầu” trên giấy tờ, nhưng khi bắt tay vào thực tế, nó đã kéo theo một chuỗi ngày “hành xác” mà một Indie Hacker (nhà phát triển độc lập) nghèo như mình không lường trước được.

Hôm nay, mình muốn chia sẻ một chút về chặng đường Build in Public này – một câu chuyện không có những chiếc MacBook Pro M3 sáng loáng hay những dàn PC xịn sò.


Lời hứa “Cross-platform” của C++ và sự thật phũ phàng

Khi dùng các công nghệ Web như Electron, hệ điều hành gần như đã được làm mờ đi. Bạn code giao diện trên Windows, qua Mac nó vẫn chạy tốt.

Nhưng với Native thì khác. Đặc biệt là với một Screen Marker như Spotmark – ứng dụng yêu cầu phải tương tác sâu với hệ điều hành để tạo ra một cửa sổ trong suốt toàn màn hình, xuyên thủng các cú click chuột, và vượt qua các lớp bảo mật.

Mã nguồn C++ thì dùng chung được, nhưng các API hệ thống của Windows (Win32), Linux (X11/Wayland) và macOS (Cocoa) thì lại đánh nhau chan chát. Và để giải quyết, mình bắt buộc phải có máy thật để compile (biên dịch) và test.

Nhưng vấn đề là… mình làm gì có tiền!


Linux và bài toán Wayland trên PC cũ

Để Spotmark chạy tốt trên Linux, mình bắt buộc phải test trên cả hai môi trường: X11 (cũ) và Wayland (mới).

Vì không có máy Linux chuyên dụng, mình format lại một con PC cũ có sẵn trong góc phòng để cài Ubuntu. Máy chạy ổ HDD nên mỗi lần kéo thư viện Qt về và chạy CMake compile mã nguồn C++ tốn khá nhiều thời gian chờ đợi. Nhưng phần build chậm không phải là vấn đề lớn nhất.

Vấn đề thực sự nằm ở Wayland. Khác với X11, Wayland có cơ chế bảo mật cực kỳ khắt khe: nó mặc định không cho phép một ứng dụng tạo ra cửa sổ overlay nằm đè lên mọi ứng dụng khác, và càng cấm việc “click xuyên qua” (click-through) cửa sổ đó.

Trên Windows, việc tạo overlay trong suốt khá đơn giản với Win32 API. Nhưng trên Linux, cơ chế của Wayland yêu cầu cách tiếp cận khác hoàn toàn. Quá trình test tính năng click-through (click xuyên) và vẽ đè lên cửa sổ khác đòi hỏi phải thiết lập chuẩn xác để tương thích với các Desktop Environment như KDE hay GNOME. Khi mọi thứ setup xong xuôi trên con PC cũ và thấy nét bút Liquid vẽ được mượt mà lên màn hình Ubuntu mà không bị vướng khung viền cửa sổ, cảm giác rất bõ công.


macOS: Bất đắc dĩ phải dùng Hackintosh

Khác với Windows hay Linux, bạn không thể build app macOS (file .dmg hay .app) nếu không có máy Mac. Ở giai đoạn đầu, chi phí mua một chiếc MacBook chỉ để test cross-platform là hơi quá tầm với. Giải pháp duy nhất lúc đó: Cài Hackintosh.

Mình quyết định “thí nghiệm” trên chiếc laptop Dell Vostro có sẵn. Những bạn nào từng nghịch Hackintosh chắc sẽ hiểu: làm việc với OpenCore, config các file .plist, tìm và patch các Kexts (Driver) cho card WiFi hay iGPU là một quá trình cực kỳ tốn thời gian. Khởi động gặp lỗi Kernel Panic màn hình đen là chuyện xảy ra hàng ngày.

Sau khoảng vài ngày hì hục thì máy cũng boot được vào macOS khá ổn định. Nhưng macOS lại có một rào cản khác: Quyền Accessibility (Trợ năng)Screen Recording. Apple chặn đứng mọi thao tác tương tác với màn hình nếu ứng dụng chưa được cấp quyền trong System Settings. Việc test luồng xin quyền (Permission flow) và cơ chế vẽ của Cocoa API trên một chiếc máy Hackintosh cấu hình thấp đôi khi khá giật lag, nhưng cuối cùng bản build cũng chạy thành công và mượt mà y như trên Windows.


Bước tiếp theo: Từ Proof of Concept đến Production

Nhìn lại quá trình vừa qua, việc build cross-platform bằng Native thực sự tốn nhiều thời gian setup môi trường hơn so với các framework web. Nhưng sự đánh đổi đó hoàn toàn xứng đáng khi nhìn vào hiệu năng thực tế.

Đến hôm nay, phiên bản Spotmark v0.4.5 Beta cho Windows đã chính thức ra mắt, đạt được đúng mục tiêu ban đầu: Cực kỳ nhẹ và độ trễ cực thấp.

Với macOS và Linux, các bản Proof of Concept (PoC) đầu tiên đã chạy thành công trên chiếc Dell Vostro và dàn PC cũ. Công việc tiếp theo của team là tối ưu lại source code và đưa dự án vào quy trình CI/CD tự động (như GitHub Actions) để build ra các file cài đặt chuẩn (.dmg cho Mac và .AppImage cho Linux).

Nếu bạn đang dùng Windows, mời bạn trải nghiệm thử bản Beta mới nhất: Tải Spotmark v0.4.5 Beta (Windows) →

Nếu bạn dùng Mac hay Linux, hãy để lại email để nhận thông báo ngay khi các phiên bản Native chính thức hoàn thiện nhé!

Hành trình tối ưu vẫn còn tiếp tục. 💻

TRUY CẬP BẢO MẬT

Đăng nhập

Chào mừng bạn quay lại CatalystPack

Truy cập nhanh chóng, bảo mật với Google 🚀Nhiều tùy chọn đăng nhập khác sắp ra mắt.
THANH TOÁN THÀNH CÔNG

Chào mừng bạn tới bản Pro! 🎉

Cảm ơn bạn đã đồng hành cùng CatalystPack Pro. Tài khoản của bạn đã được nâng cấp và bây giờ bạn có toàn quyền truy cập vào các tính năng cao cấp.

Dashboard