Indie Hacker Diary: Coding Spotmark for Mac on a Hackintosh and an Old PC
Indie Hacker Diary: Coding Spotmark for Mac on a Hackintosh and an Old PC
Hello, it’s me again from CatalystPack Studio.
If you followed the previous post, you probably know I chose Native (C++/Qt) over Electron to build Spotmark (a direct screen annotation and drawing tool). The sole purpose was to keep the app lag-free and RAM-efficient.
That decision sounds very “cool” on paper, but when put into practice, it led to a series of struggles that a low-budget Indie Hacker like myself didn’t anticipate.
Today, I want to share a bit about this Build in Public journey – a story without shiny MacBook Pro M3s or high-end PC rigs.
The “Cross-platform” promise of C++ and the harsh reality
When using Web technologies like Electron, the operating system is almost abstracted away. You code the UI on Windows, and it runs perfectly on Mac.
But with Native, it’s different. Especially for a Screen Marker like Spotmark – an application that needs to interact deeply with the OS to create a transparent full-screen window, allow click-throughs, and bypass security layers.
C++ source code can be shared, but the system APIs of Windows (Win32), Linux (X11/Wayland), and macOS (Cocoa) clash wildly. To solve this, I absolutely needed physical machines to compile and test.
But the problem was… I had no budget!
Linux and the Wayland puzzle on an old PC
For Spotmark to run well on Linux, I had to test it on both environments: X11 (old) and Wayland (new).
Lacking a dedicated Linux machine, I reformatted an old PC sitting in the corner of my room and installed Ubuntu. The machine ran on an HDD, so pulling Qt libraries and running CMake to compile C++ took quite a bit of waiting time. But slow build times weren’t the biggest issue.
The real problem was Wayland. Unlike X11, Wayland has extremely strict security protocols: by default, it doesn’t allow an application to create an overlay window on top of everything else, and it heavily restricts “click-throughs”.
On Windows, creating a transparent overlay is quite simple with the Win32 API. But on Linux, Wayland’s mechanism requires a completely different approach. Testing the click-through feature and drawing over other windows required precise configurations to be compatible with Desktop Environments like KDE and GNOME. When everything was finally set up on that old PC and the Liquid ink flowed smoothly on the Ubuntu screen without being constrained by window borders, it felt incredibly rewarding.
macOS: Reluctantly resorting to Hackintosh
Unlike Windows or Linux, you cannot build a macOS app (a .dmg or .app file) without a Mac. In the early stages, the cost of buying a MacBook just for cross-platform testing was a bit out of reach. The only solution at the time: Install a Hackintosh.
I decided to “experiment” on an available Dell Vostro laptop. Those of you who have tinkered with Hackintosh will understand: working with OpenCore, configuring .plist files, finding and patching Kexts (Drivers) for WiFi or the iGPU is a massively time-consuming process. Booting into a black screen Kernel Panic was a daily occurrence.
After a few days of grinding, the machine booted into macOS stably enough. But macOS presented another hurdle: Accessibility and Screen Recording permissions. Apple blocks any interaction with the screen unless the application is explicitly granted permission in System Settings. Testing this permission flow and the Cocoa API drawing mechanics on a low-spec Hackintosh was sometimes laggy, but eventually, the build ran successfully and as smoothly as it did on Windows.
Next steps: From Proof of Concept to Production
Looking back at the recent process, building cross-platform natively definitely takes more environment setup time compared to web frameworks. But that trade-off is completely worth it when looking at the actual performance.
Today, the Spotmark v0.4.5 Beta for Windows is officially released, achieving the exact initial goal: Extremely lightweight with ultra-low latency.
For macOS and Linux, the first Proof of Concept (PoC) builds have run successfully on that Dell Vostro and old PC. The team’s next task is to optimize the source code and integrate the project into an automated CI/CD pipeline (like GitHub Actions) to generate standard installation files (.dmg for Mac and .AppImage for Linux).
If you are using Windows, I invite you to try out the latest Beta: Download Spotmark v0.4.5 Beta (Windows) →
If you are on Mac or Linux, please leave your email to get notified as soon as the official Native versions are complete!
The optimization journey continues. 💻