2011-10-14 7 views
20

Es común para mí presionar alt-f10 (en GNU/Linux) después de que Emacs se inicia para maximizar la ventana (en la terminología de Emacs, en realidad es un cuadro). La mayoría de las veces presiono tres veces porque era demasiado pronto para presionar primero alt-f10, lo que hace que aparezca algo de basura alrededor del minibúfer (¿Emacs muestra errores?)Maximice Emacs en el arranque? (no en pantalla completa)

¿Cómo puedo automatizar este? (Tal vez con la configuración de Gnome o con elisp?)

Estoy usando emacs24 (de bzr repo).

Tenga en cuenta que no es la pantalla completa normal que quiero que podría presionar f11.

+0

¿Por qué no pones '-frame-alist' inicial o los correspondientes recursos' xrdb' a la geometría que desea en su lugar? Consulte http://stackoverflow.com/questions/92971/how-do-i-set-the-size-of-emacs-window para ver el código y los punteros. – tripleee

+0

Quiero tener pantalla completa, la respuesta aceptada satisface mi necesidad. gracias por el enlace por cierto. – kindahero

Respuesta

13
(defun fullscreen (&optional f) 
     (interactive) 
     (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 
       '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)) 
     (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 
       '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))) 

podría funcionar. (Tomado de here.)

+1

guau que fue rápido y funcionó ... – kindahero

+3

Este código no funciona en Windows/Mac OS X. Mire mi solución ... – gavenkoa

+0

@gavenkoa Sí, correcto. Pero OP mencionó Gnu/Linux. – phimuemue

9
 
;; Next code works with Emacs 21.4, 22.3, 23.1, 24.3. 
(when window-system 
    (let (
     (px (display-pixel-width)) 
     (py (display-pixel-height)) 
     (fx (frame-char-width)) 
     (fy (frame-char-height)) 
     tx ty 
     ) 
    ;; Next formulas discovered empiric on Windows host with default font. 
    (setq tx (- (/ px fx) 7)) 
    (setq ty (- (/ py fy) 4)) 
    (setq initial-frame-alist '((top . 2) (left . 2))) 
    (add-to-list 'initial-frame-alist (cons 'width tx)) 
    (add-to-list 'initial-frame-alist (cons 'height ty)) 
    )) 

Este código Preserv algún lugar de la barra de tareas en la parte inferior bajo Windows/Gnome/KDE

Pero en lugar de pedir a tratar de leer: http://www.emacswiki.org/emacs/FullScreen

+1

gracias ... no funcionó esta. Sí, debería haber ido al emacswiki primero. Es solo que he estado leyendo mucho en SO últimamente. – kindahero

+0

Se me olvida agregar que este código solo funciona en la carga de Emacs, por lo que debe ubicarlo en el archivo .emacs ... Espero que esta ayuda ... – gavenkoa

+0

sí. Lo entendí ... pero parece que no es lo que yo quería. dado que uso monitores con diferentes resoluciones, quería obtener la maximización de la ventana en lugar del tamaño específico. – kindahero

8

OSX:

La compilación de desarrollador de Emacs Trunk tiene una función llamada toggle-frame-maximized, que se incluye en .../lisp/frame.el. Esa función se puede agregar al after-init-hook o emacs-startup-hook, o simplemente se incluye en el archivo .emacs que se carga al inicio. En OSX, aumenta tanto el ancho como la altura de una sola vez.


Windows XP:

El siguiente comando se puede utilizar después de un comando make-frame, o después de Emacs genera la trama inicial.

(w32-send-sys-command 61488) 

OSX y Windows

Aquí se muestra un ejemplo para ajustar el tamaño de la trama inicial y la ubicación - lo tengo cerca del comienzo de mi archivo .emacs:

(let ((frame (selected-frame))) 
    (cond 
    ((eq system-type 'darwin) 
     (setq ns-auto-hide-menu-bar t) 
     (set-frame-position frame 0 0) ;; must come after `ns-auto-hide-menu-bar` 
     (cond 
     ((and 
      (= 1920 (display-pixel-width)) 
      (= 1080 (display-pixel-height))) 
      (set-frame-size frame 1895 1054 t)) 
     ((and 
      (= 1920 (display-pixel-width)) 
      (= 1200 (display-pixel-height))) 
      (set-frame-size frame 1895 1174 t)) 
     ((and 
      (= 1280 (display-pixel-width)) 
      (= 800 (display-pixel-height))) 
      (set-frame-size frame 1265 774 t)))) 
    ((and 
     (eq system-type 'windows-nt) 
     (equal (w32-version) '(5 1 2600))) 
     ;; (w32-send-sys-command #xf030) 
     (set-frame-position frame 0 0) 
     (cond 
     ((and 
      (= 1920 (display-pixel-width)) 
      (= 1003 (display-pixel-height))) 
      (set-frame-size frame 1898 924 t)) 
     ((and 
      (= 1920 (display-pixel-width)) 
      (= 1123 (display-pixel-height))) 
      (set-frame-size frame 1876 1052 t)) 
     ((and 
      (= 1280 (display-pixel-width)) 
      (= 723 (display-pixel-height))) 
      (set-frame-size frame 1250 670 t)))) 
     ((and 
      (eq system-type 'windows-nt) 
      (equal (w32-version) '(6 1 7601))) 
     (set-frame-position frame 0 0) 
     (cond 
      ((and 
       (= 1920 (display-pixel-width)) 
       (= 1080 (display-pixel-height))) 
      (set-frame-size frame 1890 1003 t)) 
      (t 
      (message "Not yet contemplated.")))))) 

Aquí hay un ejemplo de lo que uso para crear nuevos cuadros: controlando el tamaño y la ubicación exactos:

(defun lawlist-make-frame (&optional alist) 
    (let ((frame (make-frame alist))) 
    (set-frame-position frame 0 0) 
    (cond 
     ((eq system-type 'darwin) 
     (cond 
      ((and 
       (= 1920 (display-pixel-width)) 
       (= 1080 (display-pixel-height))) 
      (set-frame-size frame 1895 1054 t)) 
      ((and 
       (= 1920 (display-pixel-width)) 
       (= 1200 (display-pixel-height))) 
      (set-frame-size frame 1895 1174 t)) 
      ((and 
       (= 1280 (display-pixel-width)) 
       (= 800 (display-pixel-height))) 
      (set-frame-size frame 1265 774 t)))) 
     ((and 
      (eq system-type 'windows-nt) 
      (equal (w32-version) '(5 1 2600))) 
     (select-frame frame) 
     (cond 
      ((and 
       (= 1920 (display-pixel-width)) 
       (= 1003 (display-pixel-height))) 
      (set-frame-size frame 1898 924 t)) 
      ((and 
       (= 1920 (display-pixel-width)) 
       (= 1123 (display-pixel-height))) 
      (set-frame-size frame 1876 1052 t)) 
      ((and 
       (= 1280 (display-pixel-width)) 
       (= 723 (display-pixel-height))) 
      (set-frame-size frame 1250 670 t)))) 
     ((and 
      (eq system-type 'windows-nt) 
      (equal (w32-version) '(6 1 7601))) 
     (select-frame frame) 
     (cond 
      ((and 
       (= 1920 (display-pixel-width)) 
       (= 1080 (display-pixel-height))) 
      (set-frame-size frame 1890 1003 t)) 
      (t 
      (message "Not yet contemplated."))))))) 
1

Por algún motivo, x-send-client-message no funcionaba para mí en algún momento (o no confiablemente, de todos modos). Por esa razón yo uso esto:

(defun set-maximized() 
    (interactive) 
    (shell-command "wmctrl -r :ACTIVE: -badd,maximized_vert,maximized_horz")) 

para hacer eso en el inicio:

(add-hook 'window-setup-hook 'set-maximized t) 
2

Su puesta en mis ~/.emacs que funciona para mí (Emacs 24.5.1 en Debian GNU/Linux):

(toggle-frame-maximized)

Declarar que, he comprobado el nombre del comando llamado por el acceso directo M-F10 con: Ch M-F10: volvió "Toggle-frame-maximizada ", que acabo de llamar en mis ~/.emacs.

Otra solución, probablemente incluso mejor, encontró here:

(add-to-list 'initial-frame-alist '(fullscreen . maximized))

Cuestiones relacionadas