Fullscreen Emacs in OSX

The build of Emacs distributed via http://emacsforosx.com doesn't include the fullscreen option.

If you use the Homebrew package manager, you can install Emacs with fullscreen support via

brew install emacs --cocoa

You'll then want to link Homebrew's Emacs.app to one in your /Applications directory:

ln -s `brew --prefix`/Cellar/emacs/23.2/Emacs.app /Applications/Emacs.app

Now you'll be able to use fullscreen mode via ns-toggle-fullscreen.


This feature is present in Emacs 24.4. From the NEWS file:

Changes in Emacs 24.4 on Non-Free Operating Systems

...

Improved fullscreen support on Mac OS X.

Both native (>= OSX 10.7) and "old style" fullscreen are supported. Customize `ns-use-native-fullscreen' to change style. For >= 10.7 native is the default.

And:

New commands toggle-frame-fullscreen and toggle-frame-maximized, bound to <f11> and M-<f10>, respectively.


If you want to keep your version of GNU Emacs, here are two possible tested approaches.

From Amit's Thoughts: Emacs: full screen on Mac OS X for GNU (Cocoa/Nextstep) Emacs 23 :

I'm using a patched version of maxframe.el, and this function from the EmacsWiki page:

(defvar maxframe-maximized-p nil "maxframe is in fullscreen mode")
(defun toggle-maxframe ()
  "Toggle maximized frame"
  (interactive)
  (setq maxframe-maximized-p (not maxframe-maximized-p))
  (cond (maxframe-maximized-p (maximize-frame))
        (t (restore-frame))))
(define-key global-map [(alt return)] 'toggle-maxframe)

Unfortunately this doesn't hide the menubar or titlebar.

Another article recommends :

If you want to make GNU Emacs fullscreen, there are three things you should do:

  1. Disable tool bar
    This can be accomplished executing (inside Emacs) (tool-bar-mode -1)
  2. Disable menu bar
    This can be done executing (menu-bar-mode -1)
  3. Go to full screen mode
    You have to execute (set-frame-parameter nil 'fullscreen 'fullboth)

If you want to disable always tool bar and menu bar, like me, and you want to be able to go to full screen with a keystroke (F11, for example), add this to your .emacs:

;; F11 = Full Screen
(defun toggle-fullscreen (&optional f)
  (interactive)
  (let ((current-value (frame-parameter nil 'fullscreen)))
    (set-frame-parameter nil 'fullscreen
      (if (equal 'fullboth current-value)
        (if (boundp 'old-fullscreen) old-fullscreen nil)
        (progn (setq old-fullscreen current-value)
          'fullboth)))))
(global-set-key [f11] 'toggle-fullscreen)

;; Disable tool-bar
(tool-bar-mode -1)

;; Disable Menu Bar
(menu-bar-mode -1)