Emacsのスタート画面をイケメンにする

100分の1秒でもemacsの起動を早くしようと試行錯誤している一方、起動のたびに真黒なScratch画面と向きあっていると気分も暗くなってくる。せめて初期画面くらいは、ホットするようなものにしたい…ということで、dashbord.elを導入してみた。

![Alt Text](https://jubilee-live.flickr.com/65535/48721753511_36677bd214_b.jpg) 

## dashbord.elを入れる

```lisp
M-x package install dashbord.el
```

<!-- ![Alt Text](https://c1.staticflickr.com/5/4468/37784565211_10ca0426a6_c.jpg) -->

設定は以下の通り。
私の場合、MacOSとLinuxの両方で設定ファイルを共用しているのでTileの設定は二つ書いてます。

```Emacs-lisp
(use-package dashboard
  :bind (("<f10>" . open-dashboard)
  	 :map dashboard-mode-map
  	 ("c" . browse-calendar)
	 ("w" . browse-tenki)
  	 ("m" . browse-gmail)
  	 ("t" . browse-tweetdeck)
  	 ("s" . browse-slack)
  	 ("h" . browse-homepage)
  	 ("l" . line-app-open)
   	 ("<f10>" . quit-dashboard))
  :hook (after-init . dashboard-setup-startup-hook)
  :config
  ;; Set the title
  (when (eq system-type 'darwin)
    (setq dashboard-banner-logo-title
	  (concat "GNU Emacs " emacs-version " kernel "
		  (car (split-string (shell-command-to-string "uname -r")))  " x86_64 Mac OS X "
		  (car(split-string (shell-command-to-string "sw_vers -productVersion") "-")))))
  (when (eq system-type 'gnu/linux)
    (setq dashboard-banner-logo-title
	  (concat "GNU Emacs " emacs-version " kernel "
		  (car (split-string (shell-command-to-string "uname -r")))  " x86_64 Debian GNU/Linux "
		  (car (split-string (shell-command-to-string "cat /etc/debian_version") "_")))))
  ;; Set the banner
  (setq dashboard-startup-banner "~/Dropbox/emacs.d/emacs.png")

  ;; Use icons
  (setq dashboard-set-heading-icons t)
  (setq dashboard-set-file-icons t)

  ;; Set the footer
  (setq dashboard-footer "Always be joyful. Never stop praying. Be thankful in all circumstances!")
  (setq dashboard-footer-icon
	(all-the-icons-octicon "dashboard" :height 1.1 :v-adjust -0.05 :face 'font-lock-keyword-face))
  (when (eq system-type 'darwin)
    (setq dashboard-items '((recents  . 10))))
  (when (eq system-type 'gnu/linux)
    (setq dashboard-items '((recents  . 8))))

  ;; Insert custom item
  (defun dashboard-insert-custom (list-size)
    (insert (if (display-graphic-p)
		(all-the-icons-faicon "google" :height 1.2 :v-adjust -0.05 :face 'error) " "))
    (insert "   Calendar: (c)    Weather: (w)    Mail: (m)    Twitter: (t)    LINE: (l)    Slack: (s)    GH: (h)"))
  (add-to-list 'dashboard-item-generators  '(custom . dashboard-insert-custom))
  (add-to-list 'dashboard-items '(custom) t)

  (defun open-dashboard ()
    "Open the *dashboard* buffer and jump to the first widget."
    (interactive)
    (delete-other-windows)
    ;; Refresh dashboard buffer
    (if (get-buffer dashboard-buffer-name)
	(kill-buffer dashboard-buffer-name))
    (dashboard-insert-startupify-lists)
    (switch-to-buffer dashboard-buffer-name)
    ;; Jump to the first section
    (goto-char (point-min))
    (dashboard-goto-recent-files))

  (defun quit-dashboard ()
    "Quit dashboard window."
    (interactive)
    (quit-window t)
    (when (and dashboard-recover-layout-p
	       (bound-and-true-p winner-mode))
      (winner-undo)
      (setq dashboard-recover-layout-p nil)))

  (defun dashboard-goto-recent-files ()
    "Go to recent files."
    (interactive)
    (funcall (local-key-binding "r"))))


```

- Recent listは、Tab(Shift+Tab)キーを押すことで選択できる。
- F10 でDashboardのOpen/quitをtoggleします。<br>Quitすると一つ前のBufferに切り替わり、Open時にはdel-other-windowsののちDashboard画面をRefreshします。
- Dashboard画面からお気に入りのWEBページをワンキーで開けます。（hydraを使う）
- Bannerのemacs.pngは自作です。必要な方はどうぞお使いください。

![Alt Text](https://live.staticflickr.com/65535/48645442688_fa13a1556d_o.png) 

PS:
2019.09.11 HydraでQuick Menu機能をつけました。
2019.08.30 icon対応とし、クイックメニュー機能を追加しました。