X-Git-Url: https://code.delx.au/dotemacs/blobdiff_plain/60cd635627490db83653fe6c54809bc52485623d..510ffe7b6f5e6bc9e96d4b2675bf55d5b5f84e75:/lisp/my-frame-title.el diff --git a/lisp/my-frame-title.el b/lisp/my-frame-title.el new file mode 100644 index 0000000..e640c45 --- /dev/null +++ b/lisp/my-frame-title.el @@ -0,0 +1,30 @@ +;;; -*- lexical-binding: t -*- + +(setq frame-title-format '((:eval (funcall #'my/generate-frame-title)))) + +(setq icon-title-format frame-title-format) + +(add-to-list 'post-command-hook #'my/terminal-update-title) + + +(defun my/generate-frame-title () + "Returns a string like 'filename (dirname) - Emacs'" + (if (buffer-file-name) + (concat + (file-name-nondirectory (buffer-file-name)) + (if (buffer-modified-p) + " +") + " (" + (abbreviate-file-name (substring (file-name-directory (buffer-file-name)) 0 -1)) + ") - Emacs" + ) + (concat + (buffer-name) + (if (buffer-modified-p) + " +") + " - Emacs"))) + +(defun my/terminal-update-title () + "If using a terminal frame then sends the escape codes to update the title." + (if (terminal-parameter (frame-terminal) 'terminal-initted) + (send-string-to-terminal (concat "\033]0;" (my/generate-frame-title) "\007"))))