I would like to have the Projectile project name as frame title and also have it updated when I switch between two different buffers in two different Projectile projects. I tried with the following:

(setq frame-title-format
      '("" (:eval projectile-project-name-function)))

This doesn't work at all. The frame title is blank with no text at all. Any ideas?


The following code works for me.

(setq frame-title-format
       (let ((project-name (projectile-project-name)))
         (unless (string= "-" project-name)
           (format " in [%s]" project-name))))))
  • Brilliant! Works just like I wanted it. Thanks! Sep 12 '17 at 10:51

I use this code

;; Set my-projectile-project-name to projectile-project-name,
;; so that later I can also set projectile project name when in *Messages* buffer etc
(defun my-projectile-switch-project-action ()
  (set-frame-parameter nil 'my-projectile-project-name projectile-project-name)

(setq projectile-switch-project-action 'my-projectile-switch-project-action)

(setq frame-title-format
       (let ((project-name (projectile-project-name)))
           (if (not (string= "-" project-name))
             (format " in [%s]" project-name)
             (format " in [%s]" (frame-parameter nil 'my-projectile-project-name)))))))

I've previously used https://github.com/john2x/nameframe.

It will switch to projectile project frame if there is already opened such.

It sets persistent projectile project name in frame title, but its format is not customizable and there appears separate window with *Messages*. And if you close it, all emacs frames are closed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.