当我启动 emacs 时,它总是全屏。我找不到让 emacs 启动的配置不是全屏(最大化)。我不是唯一一个有这个问题的人:
http://ubuntuforums.org/showthread.php?t=2282182
系统:
- 戴尔 XPS 15
- Ubuntu 14.04(工厂安装)
- Emacs 24.3.1(工厂安装,更新)
我试过这个--geometry
选项,它可以通过命令行使用,但不会改变 Dock 图标的行为。即使我删除图标,使用 custom 从命令行启动--geometry
,并锁定新图标 - 它也会再次以全屏模式启动。我在设置方面也没有任何运气*-frame-alist
。还有什么其他配置可以做到这一点?
答案1
我也有一台配备 HiDPI 屏幕的 Dell XPS,也遇到了同样的问题。结果 Emacs 占用的屏幕空间比可用的空间要多,因为在我的 Emacs 启动文件中,我设置的框架宽度为 88 个字符,而这个宽度被翻倍了,因为我将 UI 比例因子设置为 2,以便在 HiDPI 显示屏上可读。因此,窗口管理器(正确地)改为以全屏模式打开 Emacs。当我尝试 ennob 的解决方案时,我才明白这一点http://ubuntuforums.org/showthread.php?t=2282182。在 ennob 的代码中,框架大小为 40 x 25 个字符,这导致我的系统上的框架大小为 80x50。经过一些实验,证实 Emacs 在设置框架的实际宽度和高度时会将请求的文本宽度和高度乘以比例因子。
您可以从 dconf 中获取比例因子:
dconf read /com/ubuntu/user-interface/scale-factor
在我的系统上返回{'eDP1': 16}
。比例因子 1 给出{'eDP1': 8}
。所以我概括了 ennob 的代码,并将其添加到我的 Emacs 启动文件中(对我来说,~/.emacs.d/init.el)
:
(defun my:window-setup-hook ()
(when (and (string= system-type "gnu/linux") window-system)
(toggle-frame-maximized)
(let* ((dconf-entry
(shell-command-to-string
"dconf read /com/ubuntu/user-interface/scale-factor"))
(scale-factor (progn (string-match "'[eD][FD]P1': \\([0-9]+\\)[,\}]"
dconf-entry)
(string-to-int (match-string 1 dconf-entry))))
(text-width (truncate (/ desired-width (/ scale-factor 8.0))))
(text-height (truncate (/ desired-height (/ scale-factor 8.0)))))
(message "set-frame-size is %dx%d, scale-factor is %s"
text-width text-height scale-factor)
(set-frame-size (selected-frame) text-width text-height))))
(setq window-setup-hook 'my:window-setup-hook)
对于比例因子 >= 2 且我的默认字体为 14 pt ( (set-face-attribute 'default nil :height 140)
) 的情况,此方法对我有效。因此,我仍然不明白其中涉及的无数因素,但我眼前的问题已得到解决,希望这对您也有帮助。
答案2
@chris-simpkins 的回答对我来说几乎有用,但切换全屏的功能由于某种原因不起作用:/根据我的评论,这里是对我有用的代码(我更喜欢更窄的屏幕):
(defun toggle-fullscreen-x11 ()
"Toggle full screen on X11"
(interactive)
(when (eq window-system 'x)
(set-frame-parameter
nil 'fullscreen
(when (not (frame-parameter nil 'fullscreen)) 'fullboth))))
(defun my:window-setup-hook ()
(toggle-fullscreen-x11)
(when window-system
(let* ((dconf-entry
(shell-command-to-string
"dconf read /com/ubuntu/user-interface/scale-factor"))
(scale-factor (progn (string-match "{'eDP1': \\([0-9]+\\)}"
dconf-entry)
(string-to-int (match-string 1 dconf-entry))))
;; text-width make room for gutter and fringes
(text-width (truncate (/ 48 (/ scale-factor 8.0))))
(text-height (truncate (/ 50 (/ scale-factor 8.0)))))
(set-frame-size (selected-frame) text-width text-height))))
(setq window-setup-hook 'my:window-setup-hook)