Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

in GNU Emacs OSX, how to hide title bar?

In GNU Emacs on OSX Mavericks, how can I hide the title bar even when I'm not in Mavericks full-screen mode? I'd rather have my Emacs fill the entire frame.

title bar

like image 421
incandescentman Avatar asked Jun 03 '14 17:06

incandescentman


3 Answers

You can set the variable ns-auto-hide-menu-barto a non-nil value to hide the menu bar.

Also, you can position the window title above the top of the screen, if you do it programmatically. (OS X doesn't allow you to drag the frame above the top of the screen, though.)

For example: The following will position the editable area at the top of the display.

(setq ns-auto-hide-menu-bar t)
(set-frame-position nil 0 -24)
(tool-bar-mode 0)
(set-frame-size nil 150 80)     ;; Pick values matching your screen.

Note: This might require Emacs 24.4 (which is still in pretest).

Alternatively, you could use the package Multicolumn to position and resize the frame (it's not OS X specific, but it's aware of features like auto-hiding the menu bar.)

like image 112
Lindydancer Avatar answered Nov 02 '22 21:11

Lindydancer


EDIT: I've contributed this patch as --with-no-titlebar for the homebrew formula "emacs-plus".


Below is my update of an old patch by Jay McCarthy. The following patch is compatible with GNU Emacs 25.2:

diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index d9ad0a5..9e52d0f 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -446,6 +446,7 @@ minibuffer-prompt-properties--setter
        (ns-use-native-fullscreen ns boolean "24.4")
              (ns-use-fullscreen-animation ns boolean "25.1")
              (ns-use-srgb-colorspace ns boolean "24.4")
+             (ns-use-titled-windows ns boolean "25.2")
        ;; process.c
        (delete-exited-processes processes-basics boolean)
        ;; syntax.c
diff --git a/src/nsterm.m b/src/nsterm.m
index 1b44a73..d013101 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -6775,11 +6775,13 @@ - (BOOL)isOpaque
    maximizing_resize = NO;
  #endif

-  win = [[EmacsWindow alloc]
+  win = [[EmacsFSWindow alloc]
              initWithContentRect: r
                        styleMask: (NSResizableWindowMask |
  #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
-                                  NSTitledWindowMask |
+                                  (ns_use_titled_windows ?
+                                   NSTitledWindowMask :
+                                   NSWindowStyleMaskBorderless) |
  #endif
                                    NSMiniaturizableWindowMask |
                                    NSClosableWindowMask)
@@ -6812,6 +6814,7 @@ - (BOOL)isOpaque
    [win setTitle: name];

    /* toolbar support */
+  if ( ns_use_titled_windows ) {
    toolbar = [[EmacsToolbar alloc] initForView: self withIdentifier:
                          [NSString stringWithFormat: @"Emacs Frame %d",
                                    ns_window_num]];
@@ -6833,6 +6836,7 @@ This avoids an extra clear and redraw (flicker) at frame creation.  */
    }
  #endif
    FRAME_TOOLBAR_HEIGHT (f) = 0;
+  }

    tem = f->icon_name;
    if (!NILP (tem))
@@ -8759,6 +8763,12 @@ Nil means use fullscreen the old (< 10.7) way.  The old way works better with
  This variable is ignored on OSX < 10.7 and GNUstep.  */);
    ns_use_srgb_colorspace = YES;

+  DEFVAR_BOOL ("ns-use-titled-windows", ns_use_titled_windows,
+     doc: /*Non-nil means to include a title on windows.  Nil means to
+omit the title on OSX >= 10.7.  This variable is ignored on OSX <
+10.7.  Default is nil.  */);
+  ns_use_titled_windows = NO;
+
    /* TODO: move to common code */
    DEFVAR_LISP ("x-toolkit-scroll-bars", Vx_toolkit_scroll_bars,
          doc: /* Which toolkit scroll bars Emacs uses, if any.

Many people call this "borderless", sometimes without referring to the title bar at all.

like image 40
Braham Snyder Avatar answered Nov 02 '22 22:11

Braham Snyder


In emacs-plus@29 put this line in your init.el:

(add-to-list 'default-frame-alist '(undecorated . t))
like image 3
Ruben Dario Guarnizo Martinez Avatar answered Nov 02 '22 22:11

Ruben Dario Guarnizo Martinez