From ce8f24d28a192406d537b82a42d383908dc621c5 Mon Sep 17 00:00:00 2001 From: Daniel Weschke Date: Thu, 24 Dec 2020 16:22:24 +0100 Subject: [PATCH] change from startup into fullscreen to last saved geometry --- settings/general-settings.el | 2 +- settings/gui-settings.el | 37 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/settings/general-settings.el b/settings/general-settings.el index 5cbf8939..c398bba6 100644 --- a/settings/general-settings.el +++ b/settings/general-settings.el @@ -14,7 +14,7 @@ (add-to-list 'default-frame-alist item) ) '( - (fullscreen . maximized) + ;;(fullscreen . maximized) ;; restore saved geometry, see gui-settings.el my-frame-geometry- (tool-bar-position . left) ;;(horizontal-scroll-bars . t) ;; see gui-settings ) diff --git a/settings/gui-settings.el b/settings/gui-settings.el index 50f5196d..5b677d54 100644 --- a/settings/gui-settings.el +++ b/settings/gui-settings.el @@ -363,5 +363,42 @@ See also `dashboard-insert-section'." ;;:hook (help-mode . virtual-auto-fill-mode) ) +;; Custom functions/hooks for persisting/loading frame geometry upon save/load +(setq my-frame-geometry-file (concat user-cache-directory "frame-geometry.el")) +(defun my-frame-geometry-save () + "Gets the current frame's geometry and saves to ~/.emacs.frameg." + (let ((frameg-font (frame-parameter (selected-frame) 'font)) + (frameg-left (frame-parameter (selected-frame) 'left)) + (frameg-top (frame-parameter (selected-frame) 'top)) + (frameg-width (frame-parameter (selected-frame) 'width)) + (frameg-height (frame-parameter (selected-frame) 'height)) + (frameg-file my-frame-geometry-file)) + (with-temp-buffer + ;; Turn off backup for this file + (make-local-variable 'make-backup-files) + (setq make-backup-files nil) + (insert + ";;; This file stores the previous emacs frame's geometry.\n" + ";;; Last generated " (current-time-string) ".\n" + "(setq initial-frame-alist\n" + ;; " '((font . \"" frameg-font "\")\n" + " '(" + (format " (top . %d)\n" (max frameg-top 0)) + (format " (left . %d)\n" (max frameg-left 0)) + (format " (width . %d)\n" (max frameg-width 0)) + (format " (height . %d)))\n" (max frameg-height 0))) + (when (file-writable-p frameg-file) + (write-file frameg-file))))) +(defun my-frame-geometry-load () + "Loads ~/.emacs.frameg which should load the previous frame's geometry." + (let ((frameg-file my-frame-geometry-file)) + (when (file-readable-p frameg-file) + (load-file frameg-file)))) +;; Special work to do ONLY when there is a window system being used +(if (display-graphic-p) + (progn + (add-hook 'after-init-hook 'my-frame-geometry-load) + (add-hook 'kill-emacs-hook 'my-frame-geometry-save))) + (provide 'gui-settings) ;;; gui-settings.el ends here