
Wenn ich Emacs starte, ist es immer im Vollbildmodus. Ich kann die Konfiguration zum Starten von Emacs nicht findennichtim Vollbildmodus (maximiert). Ich bin nicht der Einzige mit diesem Problem:
http://ubuntuforums.org/showthread.php?t=2282182
System:
- Dell XPS 15
- Ubuntu 14.04 (werkseitig installiert)
- Emacs 24.3.1 (werkseitig installiert, aktualisiert)
Ich habe die --geometry
Option ausprobiert und sie funktioniert über die Befehlszeile, ändert aber nicht das Verhalten des Dock-Symbols. Selbst wenn ich das Symbol entferne, über die Befehlszeile mit „Benutzerdefiniert“ starte --geometry
und das neue Symbol sperre, startet es einfach wieder im Vollbildmodus. Mit den Einstellungen hatte ich *-frame-alist
auch kein Glück. Welche andere Konfiguration könnte dies verursachen?
Antwort1
Ich habe auch einen Dell XPS mit einem HiDPI-Bildschirm und hatte das gleiche Problem. Es stellte sich heraus, dass Emacs mehr Bildschirmfläche belegen wollte, als verfügbar war, weil ich in meinen Emacs-Startdateien eine Rahmenbreite von 88 Zeichen eingestellt hatte, die verdoppelt wurde, weil ich meinen UI-Skalierungsfaktor auf 2 eingestellt hatte, um die Dinge auf dem HiDPI-Display lesbar zu machen. Also öffnete der Fenstermanager (richtigerweise) Emacs stattdessen im Vollbildmodus. Ich habe es herausgefunden, als ich ennobs Lösung ausprobiertehttp://ubuntuforums.org/showthread.php?t=2282182. Im Code von ennob beträgt die Rahmengröße 40 x 25 Zeichen, was auf meinem System zu einer Rahmengröße von 80 x 50 führte. Ein wenig Experimentieren bestätigte, dass Emacs die angeforderte Textbreite und -höhe mit dem Skalierungsfaktor multipliziert, wenn die tatsächliche Breite und Höhe des Rahmens festgelegt wird.
Den Skalierungsfaktor können Sie aus dconf abrufen:
dconf read /com/ubuntu/user-interface/scale-factor
was auf meinem System zurückgibt {'eDP1': 16}
. Ein Skalierungsfaktor von 1 ergibt {'eDP1': 8}
. Also habe ich den Code von ennob verallgemeinert und dies zu meiner Emacs-Startdatei hinzugefügt (für mich: ) ~/.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)
Das funktioniert bei mir bei Skalierungsfaktoren >= 2 und wenn meine Standardschriftart 14 pt ( (set-face-attribute 'default nil :height 140)
) ist. Ich verstehe also immer noch nicht die unzähligen Faktoren, die hier eine Rolle spielen, aber mein unmittelbares Problem ist gelöst und ich hoffe, das hilft Ihnen auch.
Antwort2
Die Antwort von @chris-simpkins hat bei mir fast funktioniert, aber die Funktion zum Umschalten des Vollbildmodus hat aus irgendeinem Grund nicht funktioniert :/ Gemäß meinem Kommentar ist hier der Code, der bei mir funktioniert (ich bevorzuge einen schmaleren Bildschirm):
(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)