Hello, I've attempted to implement support for detecting and responding to changes between system dark and light mode on Mac OS. This patch makes it so that the ns-appearance parameter of a frame is always bound — if it isn't set by the user, it's set to 'dark or 'light depending on the operating system's default setting. It also listens for changes in the systemwide appearance, changes the ns-appearance on all frames when that happens, and runs a new hook, ns-dark-mode-change-hook. (It's still possible to set ns-appearance on a frame-by-frame basis, but such changes will be overridden the next time the systemwide appearance changes.) This enables users to automatically set Emacs to change their theme when the system changes from dark to light, for example. (Since Mac OS 10.15, there is a mode in the system which automatically changes to dark mode in the evening and light mode during the day; various third-party utilities existed to provide similar behaviour before 10.15. So this helps Emacs follow that automatic change, for example.) This is my first Emacs patch, and also the first time I've written Objective-C in probably ten years. So there are probably still gremlins lurking here and there, and I'd appreciate feedback! Many thanks Daphne Preston-Kendal