如何自定义默认启动 frame 大小

根据平常使用的软件窗口、屏幕大小和文本的宽度,我自己设置了 frame 的宽度。

  (when window-system (set-frame-size (selected-frame) 96 36))

在 spacemacs 中 SPC f e R 后确实生效,但是重启 Emacs 后只闪了一下(长宽都是自定义的大小),就变回了 spacemacs 的默认窗口大小。

我在 spacemacs 的设置中没找到专门的 length 和 width 设置,上面的代码是在 Emacs 的 wiki里找的,有什么不对的地方吗?请问如何自定义设置 frame 的大小更好?

  (defun liu233w/reset-frame-size (&optional frame)
    "重设窗体大小"
    (interactive)
    (when frame
      (select-frame frame))
    (set-frame-width (selected-frame) 100)
    (set-frame-height (selected-frame) 30))
;;设置窗口大小
(liu233w/reset-frame-size)
;;在这里学到: https://github.com/syl20bnr/spacemacs/issues/4365 @raawaa
;;可以使用这个hook来在加载frame之后调用制定的函数,frame将作为参数被传递给
;;这个函数
(add-hook 'after-make-frame-functions 'liu233w/reset-frame-size)

可以参考我的配置: https://github.com/Liu233w/.spacemacs.d/blob/master/layers/liu233w/config.el#L6

1 个赞

Thx! 我试了这个配置,set-frame-heightset-frame-width 两行只有放在前面的一行生效,另一个不生效,交换位置后也是。 请问您遇到类似的问题吗?

I use following lines to define frame size, more here:

(cond
 ((eq window-system 'w32)
  ;; cleaner font setting
  (set-fontset-font
   "fontset-default"
   'han (font-spec :family "NSimSun" :size 16))
  (setq default-frame-alist
        '((top . 80) (left . 250)
          (width . 128) (height . 45)
          ;; if you like anti-alias, use this to have a try
          (font . "Inconsolata-11")
          )))
 ((eq window-system 'ns)
  (set-fontset-font
   "fontset-default"
   'han (font-spec :family "Microsoft Yahei" :size 14))
  ;; OS X 下,只有雅黑字體的標點符號顯示的不是那麼難看
  (set-fontset-font
   "fontset-default"
   'cjk-misc (font-spec :family "Microsoft Yahei" :size 14))
  (setq default-frame-alist
        '((top . 100) (left . 600)
          (width . 166) (height . 70)
          ;; (font . "Bitstream Vera Sans Mono-14")
          ))))
1 个赞

并没有。。。我的配置基本上只在windows下测试过_(:зゝ∠)_

其实你可以把那两行直接改成你的 (set-frame-size (selected-frame) 96 36) 的。

1 个赞

好吧,我在 Linux 下测试,重启机器之后打开 Emacs 长宽两项都不起作用了,用 set-frame-size 这句也不行。

  1. 加载顺序对spacemacs的设置有很大影响,我的那段代码是放在config.el里面的,如果想保证尽量在后面加载的话放进user-config函数里面也可以。
  2. 如果自定的长度超过了屏幕的最大长度,emacs不会修改frame的大小

我的经验就这些了_(:зゝ∠)_

1 个赞