diff --git a/core/core-popups.el b/core/core-popups.el index ffba07189..da2517bde 100644 --- a/core/core-popups.el +++ b/core/core-popups.el @@ -85,7 +85,9 @@ is enabled/disabled.'") (tabulated-list-mode :noesc t))) :config - (shackle-mode 1) + (if (display-graphic-p) + (shackle-mode +1) + (add-transient-hook! 'after-make-frame-functions (shackle-mode +1))) (defun doom*shackle-always-align (plist) "Ensure popups are always aligned and selected by default. Eliminates the need diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index 9a251a57a..4c4c62140 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -48,12 +48,13 @@ '("*Command Line*" :size 8)) ;; Set cursor colors later, presumably once theme is loaded - (add-hook! 'after-init-hook + (defun +evil*init-cursors (&rest _) (setq evil-default-cursor (face-attribute 'cursor :background nil t) evil-normal-state-cursor 'box evil-emacs-state-cursor `(,(face-attribute 'warning :foreground nil nil) box) evil-insert-state-cursor 'bar evil-visual-state-cursor 'hollow)) + (advice-add #'load-theme :after #'+evil*init-cursors) ;; highlight matching delimiters where it's important (defun +evil|show-paren-mode-off () (show-paren-mode -1)) diff --git a/modules/feature/workspaces/config.el b/modules/feature/workspaces/config.el index b03ba018a..8bf27de91 100644 --- a/modules/feature/workspaces/config.el +++ b/modules/feature/workspaces/config.el @@ -42,17 +42,24 @@ renamed.") ;; auto-save on kill persp-auto-save-opt 1) - (add-hook! 'after-init-hook - (persp-mode +1) + (defun +workspaces|init (&rest _) + (unless persp-mode + (persp-mode +1)) ;; The default perspective persp-mode makes (defined by `persp-nil-name') is ;; special and doesn't actually represent a real persp object, so buffers ;; can't really be assigned to it, among other quirks. We create a *real* ;; main workspace to fill this role. (persp-add-new +workspaces-main) ;; Switch to it if we aren't auto-loading the last session - (when (= persp-auto-resume-time -1) + (when (or (= persp-auto-resume-time -1) + (equal (safe-persp-name (get-current-persp)) persp-nil-name)) (persp-frame-switch +workspaces-main))) + (add-hook! 'after-init-hook + (if (display-graphic-p) + (+workspaces|init) + (add-hook 'after-make-frame-functions '+workspaces|init))) + (define-key persp-mode-map [remap delete-window] #'+workspace/close-window-or-workspace) ;; Per-frame perspectives diff --git a/modules/ui/doom-dashboard/config.el b/modules/ui/doom-dashboard/config.el index 3450a63dc..39ebbec06 100644 --- a/modules/ui/doom-dashboard/config.el +++ b/modules/ui/doom-dashboard/config.el @@ -41,17 +41,20 @@ ;; (setq doom-fallback-buffer +doom-dashboard-name) -(add-hook 'after-make-frame-functions #'+doom-dashboard-deferred-reload) -(add-hook! 'window-setup-hook +(defun +doom-dashboard|init (&rest _) + (add-hook 'after-make-frame-functions #'+doom-dashboard-deferred-reload) + (add-hook 'window-configuration-change-hook #'+doom-dashboard-reload) (add-hook! 'kill-buffer-query-functions (or (not (+doom-dashboard-p)) (ignore (ignore-errors (+doom-dashboard-force-reload)) (bury-buffer)))) - (add-hook 'window-configuration-change-hook #'+doom-dashboard-reload) (+doom-dashboard-reload) (when (equal (buffer-name) "*scratch*") (switch-to-buffer (doom-fallback-buffer)))) +(add-hook! '(after-make-frame-functions window-setup-hook) + #'+doom-dashboard|init) + ;; Compatibility with `midnight-mode' and `clean-buffer-list' (after! midnight-mode (push +doom-dashboard-name clean-buffer-list-kill-never-buffer-names) diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index 9961270d1..11c0cc90c 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -51,8 +51,9 @@ :group 'doom) ;; Dark frames by default - (push (cons 'background-color (face-background 'default)) default-frame-alist) - (push (cons 'foreground-color (face-foreground 'default)) default-frame-alist) + (when (display-graphic-p) + (push (cons 'background-color (face-background 'default)) default-frame-alist) + (push (cons 'foreground-color (face-foreground 'default)) default-frame-alist)) (defun +doom|buffer-mode-on () "Enable `doom-buffer-mode' in buffers that are real (see