2011-10-14 36 views
20

Thông thường tôi nhấn alt-f10 (trong GNU/Linux) sau khi Emacs khởi động để phóng to cửa sổ (trong thuật ngữ Emacs, nó thực sự là một khung). Hầu hết thời gian tôi bấm ba lần vì tôi đã quá sớm để nhấn alt-f10 đầu tiên mà làm cho một số rác xuất hiện xung quanh minibuffer (Emacs hiển thị lỗi?)Phóng to Emacs khi khởi động? (không phải toàn màn hình)

Làm thế nào tôi có thể tự động hóa này? (Có thể với cài đặt Gnome hoặc với elisp?)

Tôi đang sử dụng emacs24 (từ bzr repo).

Lưu ý rằng đó không phải là chế độ toàn màn hình thông thường mà tôi muốn bạn sẽ nhận được bằng cách nhấn f11.

+0

Tại sao bạn không thiết lập 'ban đầu-frame-alist' hoặc tương ứng với' nguồn xrdb' đến hình học mà bạn muốn thay thế? Xem http://stackoverflow.com/questions/92971/how-do-i-set-the-size-of-emacs-window để biết mã và con trỏ. – tripleee

+0

Tôi muốn có toàn màn hình, câu trả lời được chấp nhận đáp ứng nhu cầu của tôi. cảm ơn vì liên kết BTW. – kindahero

Trả lời

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

có thể làm việc. (Trích từ here.)

+1

wow đã nhanh chóng và hiệu quả .. – kindahero

+3

Mã này không hoạt động trong Windows/Mac OS X. Hãy tìm giải pháp của tôi ... – gavenkoa

+0

@gavenkoa Vâng, đúng. Nhưng OP đã đề cập đến 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)) 
    )) 

đang preserv này một số nơi cho thanh tác vụ ở phía dưới hệ điều hành Windows/Gnome/KDE

Nhưng thay vì hỏi thử đọc: http://www.emacswiki.org/emacs/FullScreen

+1

cảm ơn .. đã không làm việc này. vâng tôi nên đi đến emacswiki trước. chỉ là tôi đã đọc rất nhiều về SO gần đây. – kindahero

+0

Tôi quên thêm rằng mã này chỉ hoạt động trên tải Emacs, do đó bạn cần đặt nó vào tệp .emacs ... Hy vọng điều này sẽ giúp ... – gavenkoa

+0

có. Tôi hiểu điều đó .. nhưng có vẻ như không phải tôi muốn. kể từ khi tôi sử dụng màn hình với độ phân giải khác nhau, tôi muốn nhận được là tối đa hóa của cửa sổ chứ không phải là kích thước cụ thể. – kindahero

8

OSX:

Bản xây dựng nhà phát triển của Emacs Trunk có chức năng được gọi là toggle-frame-maximized, được bao gồm trong số .../lisp/frame.el. Có thể thêm chức năng đó vào after-init-hook hoặc emacs-startup-hook hoặc chỉ cần bao gồm trong tệp .emacs được tải khi khởi động. Trên OSX, nó tăng cả chiều rộng và chiều cao trong một ngã.


Windows XP:

Lệnh sau đây có thể được sử dụng sau khi một lệnh make-frame, hoặc sau khi Emacs tạo khung ban đầu.

(w32-send-sys-command 61488) 

OSX và Windows

Dưới đây là một ví dụ cho việc thiết lập kích thước khung hình ban đầu và vị trí - Tôi có nó gần đầu của tập tin .emacs tôi:

(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.")))))) 

Dưới đây là ví dụ về những gì tôi sử dụng để tạo khung hình mới - kiểm soát kích thước và vị trí chính xác:

(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

Vì lý do nào đó, tin nhắn x-send-client-không hoạt động cho tôi tại một số thời điểm (hoặc không đáng tin cậy). Vì lý do đó tôi sử dụng này:

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

Để làm điều đó lúc khởi động:

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

Đưa này vào tôi ~/emacs làm việc cho tôi (Emacs 24,5.1 trên Debian GNU/Linux):

(toggle-frame-maximized)

Để thấy rằng, tôi đã kiểm tra tên của lệnh gọi bằng các phím tắt M-F10 với: Ch M-F10: nó trả lại "BẬT-frame-tối đa ", mà tôi chỉ gọi trong ~/.emacs của tôi.

Một giải pháp khác, có lẽ thậm chí tốt hơn, tìm thấy here:

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

Các vấn đề liên quan