When I run emacs, everything is ok, my init.el is read. However, after starting a daemon (emacs --daemon), an emacsclient GUI frame (emacsclient -c) is not configured for the following setting:

  • font size
(set-face-attribute 'default nil :font "Inconsolata-12.5")
  • icons in the mode line (doom mode line)
(use-package doom-modeline
  :init (doom-modeline-mode 1))
  • ivy package (until I use it)
(use-package ivy
  :bind (("C-s" . swiper)
     :map ivy-minibuffer-map
     ("TAB" . ivy-alt-done)
     ("C-l" . ivy-alt-done)
     ("C-j" . ivy-next-line)
     ("C-k" . ivy-previous-line)
     :map ivy-switch-buffer-map
     ("C-k" . ivy-previous-line)
     ("C-l" . ivy-done)
     ("C-d" . ivy-switch-buffer-kill)
     :map ivy-reverse-i-search-map
     ("C-k" . ivy-previous-line)
     ("C-d" . ivy-reverse-i-search-kill))
  (ivy-mode 1))

Here and here, it is mentioned that Emacs daemon doesn't know about the graphical frame, so every/some option that is needed for GUI is sort of neglected. In my init.el I commented out every line that has that option, but it didn't help.

I couldn't find anything helpful in the Emacs or Emacsclient manuals. Are there any arguments that I should add when starting Emacs daemon (other than --daemon) or emacsclient (other than -c)? or do I have to edit init.el file?

Debian Buster/Sid -- Emacs version: 27.1

  • 3
    Have you tried calling set-face-attribute from after-make-frame-functions? The Emacs daemon reads your user-init-file with a dummy initial frame that is never shown, so settings against that frame don't usually affect normal frames created thereafter with emacsclient -t or emacsclient -c.
    – Basil
    Nov 5, 2020 at 13:41
  • I couldn't figure out how to do that call. could you give me hint?
    – ali b
    Nov 6, 2020 at 5:57
  • 3
    (add-hook 'after-make-frame-functions (lambda (f) (set-face-attribute 'default f :font "Inconsolata-12.5")))
    – Basil
    Nov 6, 2020 at 7:23
  • 2
    BTW, see (info "(emacs) Fonts") for preferred ways of changing the font.
    – Basil
    Nov 6, 2020 at 7:25
  • It works. Thanks Basil!!
    – ali b
    Nov 6, 2020 at 7:26


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.