it-swarm-eu.dev

Come posso impostare la dimensione della finestra di Emacs?

Sto cercando di rilevare la dimensione dello schermo su cui sto avviando emacs e di regolare le dimensioni e posizionare la finestra in cui sta iniziando (suppongo che sia la cornice in emacs-speak) di conseguenza. Sto cercando di configurare i miei .emacs in modo da ottenere sempre una finestra "abbastanza grande" con l'angolo in alto a sinistra vicino all'angolo in alto a sinistra del mio schermo.

Immagino che questo sia un grande chiedi il caso generale, quindi per restringere un po 'le cose mi interessa di più GNU Emacs 22 su Windows e (Debian) Linux.

101
Tom Dunham

Se vuoi modificare le dimensioni in base alla risoluzione, puoi fare qualcosa del genere (regolando la larghezza e le risoluzioni preferite in base alle tue esigenze specifiche):

(defun set-frame-size-according-to-resolution ()
  (interactive)
  (if window-system
  (progn
    ;; use 120 char wide window for largeish displays
    ;; and smaller 80 column windows for smaller displays
    ;; pick whatever numbers make sense for you
    (if (> (x-display-pixel-width) 1280)
           (add-to-list 'default-frame-alist (cons 'width 120))
           (add-to-list 'default-frame-alist (cons 'width 80)))
    ;; for the height, subtract a couple hundred pixels
    ;; from the screen height (for panels, menubars and
    ;; whatnot), then divide by the height of a char to
    ;; get the height we want
    (add-to-list 'default-frame-alist 
         (cons 'height (/ (- (x-display-pixel-height) 200)
                             (frame-char-height)))))))

(set-frame-size-according-to-resolution)

Si noti che il sistema di finestre è obsoleto nelle versioni più recenti di emacs. Un sostituto adatto è (display-graphic-p). Vedi questa risposta alla domanda Come rilevare che emacs è in modalità terminale? per un po 'più di background.

87
Bryan Oakley

Ho il seguente nel mio .emacs:

(if (window-system)
  (set-frame-height (selected-frame) 60))

Potresti anche guardare le funzioni set-frame-size, set-frame-position, e set-frame-width. Uso C-h f (aka M-x describe-function) per visualizzare la documentazione dettagliata.

Non sono sicuro se esiste un modo per calcolare l'altezza/larghezza massima di un telaio nell'attuale ambiente a finestre.

48
Chris Conway

Il modo più semplice che ho trovato per farlo in un ambiente X-Window è attraverso risorse X . La parte rilevante del mio .Xdefaults assomiglia a questo:

Emacs.geometry: 80x70

Dovresti essere in grado di suffissarlo con + 0 + 0 coordinate di posizione per forzarlo nell'angolo in alto a sinistra del display. (il motivo per cui non lo faccio è che occasionalmente spawn nuovi frame, e ciò crea confusione se appaiono nella stessa identica posizione del precedente)

Secondo il manuale, questa tecnica funziona anche su MS Windows , memorizzando le risorse come coppie chiave/valore nel registro. Non l'ho mai provato. Potrebbe essere fantastico, potrebbe essere molto più di un inconveniente rispetto alla semplice modifica di un file.

17
JB.

Prova ad aggiungere il seguente codice a .emacs

(add-to-list 'default-frame-alist '(height . 24))

(add-to-list 'default-frame-alist '(width . 80)) 
16
norbux

Puoi anche usare il parametro -geometry quando accendi emacs: emacs -geometry 80x60+20+30 ti darà una finestra larga 80 caratteri, alta 60 righe, con l'angolo in alto a sinistra 20 pixel a destra e 30 pixel in basso dall'angolo in alto a sinistra dello sfondo.

12
Graeme Perrow

Su Ubuntu fai:

(defun toggle-fullscreen ()
  (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))
)
(toggle-fullscreen)
7
ftravers

Su windows, puoi rendere emacs frame massimizzato usando questa funzione:

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))
5
Jérôme Radix
(setq initial-frame-alist
        (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
                initial-frame-alist))

(setq default-frame-alist
        (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO"))
                default-frame-alist))
1
Peter Miehle
(defun set-frame-size-according-to-resolution ()
  (interactive)
  (if window-system
  (progn
    ;; use 120 char wide window for largeish displays
    ;; and smaller 80 column windows for smaller displays
    ;; pick whatever numbers make sense for you
    (if (> (x-display-pixel-width) 1280)
           (add-to-list 'default-frame-alist (cons 'width 120))
           (add-to-list 'default-frame-alist (cons 'width 80)))
    ;; for the height, subtract a couple hundred pixels
    ;; from the screen height (for panels, menubars and
    ;; whatnot), then divide by the height of a char to
    ;; get the height we want
    (add-to-list 'default-frame-alist 
         (cons 'height (/ (- (x-display-pixel-height) 200)
                             (frame-char-height)))))))

(set-frame-size-according-to-resolution)

Preferisco le impostazioni di Bryan Oakley. Tuttavia 'height non funziona correttamente in my GNU Emacs 24.1.1.

0
WisdomFusion