]> code.delx.au - dotemacs/blob - lisp/my-frame-title.el
kotline-mode
[dotemacs] / lisp / my-frame-title.el
1 ;;; -*- lexical-binding: t -*-
2
3 (setq frame-title-format '((:eval (funcall #'my/generate-frame-title))))
4
5 (setq icon-title-format frame-title-format)
6
7 (add-to-list 'post-command-hook #'my/terminal-update-title)
8
9
10 (defun my/generate-frame-title ()
11 "Returns a string like 'filename (dirname) (hostname)'"
12 (let ((t-name
13 (if (buffer-file-name)
14 (file-name-nondirectory (buffer-file-name))
15 (buffer-name)))
16 (t-directory
17 (if (buffer-file-name)
18 (concat
19 " ("
20 (abbreviate-file-name
21 (substring (file-name-directory (buffer-file-name)) 0 -1))
22 ")")))
23 (t-modified
24 (if (buffer-modified-p)
25 " +")))
26 (concat
27 t-name
28 t-modified
29 t-directory
30 " (" (system-name) ")")))
31
32 (defun my/terminal-update-title ()
33 "If using a terminal frame then sends the escape codes to update the title."
34 (if (terminal-parameter (frame-terminal) 'terminal-initted)
35 (send-string-to-terminal (concat "\033]0;" (my/generate-frame-title) "\007"))))