2011-10-14 10 views
20

Powszechne jest dla mnie naciśnięcie alt-f10 (w systemie GNU/Linux) po uruchomieniu Emacsa w celu maksymalizacji okna (w terminologii Emacs jest to w rzeczywistości ramka). Przez większość czasu naciskałem trzykrotnie, ponieważ byłem zbyt wcześnie, aby nacisnąć pierwszy klawisz alt-f10, który powoduje pojawianie się niektórych śmieci wokół minibufora (błąd wyświetlania Emacs).Maksymalizuj Emacs podczas uruchamiania? (nie w trybie pełnoekranowym)

Jak mogę zautomatyzować ten? (Może z ustawieniami Gnome lub z elisp?)

Używam emacs24 (z repozytorium bzr).

Pamiętaj, że nie jest to normalny tryb pełnoekranowy, który chcesz uzyskać, naciskając klawisz f11.

+0

Dlaczego nie można ustawić 'początkowe ramki alist' lub odpowiednie' xrdb' zasoby do geometrii chcesz w zamian? Zobacz http://stackoverflow.com/questions/92971/how-do-i-set-the-size-of-emacs-window na kod i wskaźniki. – tripleee

+0

Chcę mieć pełny ekran, zaakceptowana odpowiedź spełnia moją potrzebę. dzięki za link BTW. – kindahero

Odpowiedz

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

może działać. (Taken from here.)

+1

Wow, który był szybki i działał zbyt ... – kindahero

+3

Ten kod nie działa w systemie Windows/Mac OS X. Zobacz moje rozwiązanie ... – gavenkoa

+0

@gavenkoa Tak, poprawne. Ale OP wspomniał o 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)) 
    )) 

ten kod Preserv jakieś miejsce na pasku zadań na dole pod Windows/Gnome/KDE

Ale zamiast pytać spróbować przeczytać: http://www.emacswiki.org/emacs/FullScreen

+1

dziękuję .. nie pracował ten. Tak, powinienem był pojechać najpierw do emacswiki. właśnie ostatnio dużo czytałem na SO. – kindahero

+0

Zapominam, że ten kod działa tylko przy ładowaniu Emacsa, więc musisz umieścić go w pliku .emacs ... Mam nadzieję, że ta pomoc ... – gavenkoa

+0

tak. Zrozumiałem to ... ale wydaje się, że nie to, że chciałem. Ponieważ używam monitorów o różnych rozdzielczościach, chciałem uzyskać maksymalizację okna zamiast określonego rozmiaru. – kindahero

8

OSX:

Deweloper zbudowany z Emacs Trunk ma funkcję o nazwie toggle-frame-maximized, która jest zawarta w .../lisp/frame.el. Ta funkcja może być dodana do after-init-hook lub emacs-startup-hook lub po prostu dołączona do pliku .emacs, który zostanie załadowany podczas uruchamiania. W systemie OSX zwiększa zarówno szerokość, jak i wysokość za jednym zamachem.


Windows XP:

To polecenie może być stosowany po poleceniu make-frame lub po Emacsa generuje początkowy ramki.

(w32-send-sys-command 61488) 

OSX i Windows

Oto przykład do ustawienia początkowego rozmiaru ramki i lokalizacja - mam go w pobliżu początku mojego pliku .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.")))))) 

Oto przykład tego, czego używam do tworzenia nowych ramek - kontrolując dokładny rozmiar i lokalizację:

(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

Z jakiegoś powodu x-send-client-message nie działał dla mnie w pewnym momencie (lub w niezawodny sposób). Z tego powodu używam to:

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

Aby to zrobić przy starcie:

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

Wyrażając to w moim ~/.emacs pracuje dla mnie (Emacs 24,5.1 o Debian GNU/Linux):

(toggle-frame-maximized)

aby znaleźć to, sprawdziłem nazwę komendy zwanej przez skrót M-F10 z: CH M-F10: powrócił „Toggle-frame-zmaksymalizowane ", które właśnie nazywam moim ~/.emacs.

Innym rozwiązaniem, chyba nawet lepiej, uznał here:

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

Powiązane problemy