Very nice collection of toy projects, I resonate with you, I also wrote a ton of toy projects in sabbaticals, check the better ones out here : https://milgra.com/
I did exactly the same and my reason is : Linux is chaos, FreeBSD is order. FreeBSD is so very well engineered, everything feels just right and logical. It's not the case with the fragmented world of Linux distributions. Unfortunately FreeBSD doesn't have the laptop driver coverage Linux has so I'm using Void Linux on my laptops because it is the most BSDish Linux.
A popup on the first start with an alert and a password prompt is a good solution, but usually too many users type in their passwords blindly in case of a password prompt, so I would go with just an alert with "you need root privileges to run this app" and then they have to figure out 1. why do they need root privileges 2. how do they start an app with root privileges.
I don't know the exact issues but might be related to the issues why I left Apple : I was developing a very successful little tool for MacOS ( https://github.com/milgra/macmediakeyforwarder ) which listened for keypresses. From 2016 to 2019 it became harder and harder to install it because apple added more and more restrictions to apps like this. By 2019, you had to enable the application explicitly to listen for events at least in three places deep down in the system preferences, click accept in various popups and if you stuck somewhere then nobody could tell why it wasn't working. So I had a very expensive laptop and the OS didn't let me use it freely. So I just switched to freebsd and linux. Hardware quality is far away from Apple's but it is cheap, I don't have fancy productivity apps like photoshop and final cut but with open source tools and with my own desktop applications I created the best looking/most usable desktop experience MacOS will never have. ( https://swayos.github.io/ )
I just include them, everything works as before. If I have to create a library then I create a separate header file for the api functions and only the internals are headerless.
Very nice collection. My favorite C feature is actually a gcc/clang feature : the __INCLUDE_LEVEL__ predefined macro. It made me code&maintain my C projects exactly twice as fast as before because file count dropped to half : https://github.com/milgra/headerlessc .
Yes, they were on purpose, I really like the style of old cartoons and they do this - cuphead also does something similar. I wrote about the clojurescript development experience in the github readme ( https://github.com/milgra/cljs-brawl ), it was pleasant, I will port my other C/OpenGL games as soon as I have time.