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.
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.
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.
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.
Prova ad aggiungere il seguente codice a .emacs
(add-to-list 'default-frame-alist '(height . 24))
(add-to-list 'default-frame-alist '(width . 80))
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.
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)
Su windows, puoi rendere emacs frame massimizzato usando questa funzione:
(defun w32-maximize-frame ()
"Maximize the current frame"
(interactive)
(w32-send-sys-command 61488))
(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))
(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.