在Emacs启动以最大化窗口之后,按下alt-f10(在GNU / Linux中)是很常见的(在Emacs术语中,它实际上是一个帧)。大多数时候我按三次是因为我太早了按下第一个alt-f10,它会在迷你缓冲区周围出现一些垃圾(Emacs显示错误?)
如何自动化这个? (也许使用Gnome设置或使用elisp?)
我正在使用emacs24(来自bzr repo)。
请注意,这不是我想要的常规全屏,按f11即可获得。
答案 0 :(得分:14)
(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)))
可能会奏效。 (取自here。)
答案 1 :(得分:10)
;; 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)) ) )
此代码保留了Windows / Gnome / KDE
下底部任务栏的某个位置答案 2 :(得分:9)
OSX:
Emacs Trunk的开发者版本有一个名为toggle-frame-maximized
的函数,该函数包含在.../lisp/frame.el
中。该函数可以添加到after-init-hook
或emacs-startup-hook
,或者只包含在启动时加载的.emacs
文件中。在OSX上,它一举增加了宽度和高度。
Windows XP:
在make-frame
命令之后,或在Emacs生成初始帧之后,可以使用以下命令。
(w32-send-sys-command 61488)
OSX和Windows
以下是设置初始帧大小和位置的示例 - 我将其放在.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.")))) ))
以下是我用来创建新框架的示例 - 控制确切的尺寸和位置:
(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.")))) )))
答案 3 :(得分:3)
把它放到我的〜/ .emacs中对我有用(Debian GNU / Linux上的Emacs 24.5.1):
(toggle-frame-maximized)
为了找到它,我检查了M-F10快捷方式调用的命令名称:Ch M-F10:它返回“toggle-frame-maximized”,我只是在〜/ .emacs中调用。 / p>
另一种解决方案,甚至可能更好,找到here:
(add-to-list 'initial-frame-alist '(fullscreen . maximized))
答案 4 :(得分:2)
出于某种原因,x-send-client-message在某些时候对我不起作用(或者不可靠,无论如何)。因此我用这个:
(defun set-maximized ()
(interactive)
(shell-command "wmctrl -r :ACTIVE: -badd,maximized_vert,maximized_horz"))
在启动时这样做:
(add-hook 'window-setup-hook 'set-maximized t)