2011-10-14 4 views
20

È normale per me premere alt-f10 (in GNU/Linux) dopo l'avvio di Emacs per massimizzare la finestra (nella terminologia di Emacs, in realtà è un frame). Il più delle volte premo tre volte perché ero troppo presto per premere il primo alt-f10 che fa apparire dei garbage attorno al minibuffer (Emacs display bug?)Massimizza Emacs all'avvio? (non a schermo intero)

Come posso automatizzare questo? (Forse con le impostazioni di Gnome o con elis?)

Sto usando emacs24 (da repo bzr).

Si noti che non è il normale schermo intero che voglio ottenere premendo f11.

+0

Perché non imposta 'iniziale-frame-alist' o le corrispondenti risorse' xrdb' alla geometria che si desidera, invece? Vedi http://stackoverflow.com/questions/92971/how-do-i-set-the-size-of-emacs-window per codice e puntatori. – tripleee

+0

Voglio avere lo schermo intero, la risposta accettata soddisfa le mie necessità. grazie per il link BTW. – kindahero

risposta

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))) 

potrebbe funzionare. (Tratto da here.)

+1

wow che è stato veloce e ha funzionato troppo .. – kindahero

+3

Questo codice non funziona sotto Windows/Mac OS X. Guarda la mia soluzione ... – gavenkoa

+0

@gavenkoa Sì, corretto. Ma OP ha menzionato 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)) 
    )) 

Questo codice preserv un posto per la barra delle applicazioni nella parte inferiore sotto Windows/Gnome/KDE

Ma invece di chiedere provare leggere: http://www.emacswiki.org/emacs/FullScreen

+1

grazie .. non ha funzionato questo. sì, avrei dovuto prima andare su emacswiki. è solo che ho letto molto su SO ultimamente. – kindahero

+0

Ho dimenticato di aggiungere che questo codice funziona solo su Emacs in caricamento, quindi è necessario inserirlo nel file .emacs ... Spero che questo aiuto ... – gavenkoa

+0

sì. L'ho capito ... ma sembra che non lo volessi. dal momento che utilizzo i monitor con risoluzioni diverse, volevo ottenere la massimizzazione della finestra piuttosto che la dimensione specifica. – kindahero

8

OSX:

La build dello sviluppatore di Emacs Trunk ha una funzione chiamata toggle-frame-maximized, inclusa in .../lisp/frame.el. Questa funzione può essere aggiunta a after-init-hook o emacs-startup-hook o semplicemente inclusa nel file .emacs che viene caricato all'avvio. Su OSX, aumenta sia la larghezza che l'altezza in un colpo solo.


Windows XP:

Il seguente comando può essere usato dopo un comando make-frame, o dopo Emacs genera il fotogramma iniziale.

(w32-send-sys-command 61488) 

OSX e Windows

Ecco un esempio per impostare le dimensioni del fotogramma iniziale e il percorso - ce l'ho vicino all'inizio del mio file .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.")))))) 

Ecco un esempio di ciò che uso per creare nuovi fotogrammi - controllando le dimensioni e la posizione esatte:

(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

Per qualche motivo x-send-client-messaggio non funzionava per me a un certo punto (o comunque non affidabile). Per questo motivo io uso questo:

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

Per fare che in fase di avvio:

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

Mettendo questo nelle mie ~/.emacs funziona per me (Emacs 24.5.1 su Debian GNU/Linux):

(toggle-frame-maximized)

per scoprire che, ho controllato il nome del comando chiamato dal collegamento M-F10 con: Ch M-F10: è tornato "Toggle-frame-massimizzato ", che ho appena chiamato nel mio ~/.emacs.

Un'altra soluzione, probabilmente anche meglio, trovato here:

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