Ben, > 7. Select a font 8. (nothing happens) 9. Click on a currently open > emacs frame (not the Preferences window). 10. (the Preferences > window loses keyboard focus) 11. Select a font (from the font panel) > 12. (The font of the currently focused frame will change.) 13. (The > font of the second frame will not change.) I don't think that the font panel should apply globally (at least not in GNU Emacs); also because it gives the user less control. However, it should set the font for future frames, because there is no other way to set that through the GUI (w/o customization buffer). Perhaps that would serve as a working compromise. For that, try the code below. (defun ns-respond-to-change-font () "Respond to changeFont: event, expecting ns-input-font and\n\ ns-input-fontsize of new font." (interactive) (let ((face 'default)) (set-face-attribute face t :family ns-input-font :height (* 10 ns-input-fontsize)) (set-face-attribute face (selected-frame) :family ns-input-font :height (* 10 ns-input-fontsize)) (let ((spec (list (list t (face-attr-construct 'default))))) (put face 'customized-face spec) (custom-push-theme 'theme-face face 'user 'set spec) (put face 'face-modified nil))))