@colin4123 我按照你的放在init也没成功。。。
在 *scratch*
中显示张图片:
代码:
(defvar my-picture-file
(let ((logo (expand-file-name "emacs.png" temporary-file-directory)))
(unless (file-exists-p logo)
(url-copy-file "https://www.gnu.org/software/emacs/images/emacs.png" logo))
logo)
"图片的完整路径。")
(setq initial-scratch-message
(with-temp-buffer
(insert-image (create-image my-picture-file) "image")
(insert "<= 我的图片\n")
(buffer-string)))
按照你这样改,下次更新会不会变回原来的样子?
当时改的时候没注意到 init 文件中有这个变量的参数
不过我现在配置基本稳定了,很少折腾,几乎不更新。
而且我不是 clone 的 spacemacs 的仓库,我是直接 download 的代码没法直接升级=。= 等下次想升级的时候再改配置
你方便贴下你的配置文件的相关代码吗?
(setq-default dotspacemacs-startup-banner '"path/to/my_photo")
我将上面的代码放到了
`(defun dotspacemacs/user-init ()
)` 当中。
你按照我的方法试试
你这图片 哪里找的?
在原来的logo上改的。。
可不可以设置成某个文件夹里多个图片随机出现啊?或者某个网址上的图片?比如必应主页的图片。那样会好看很多
随机选择图片不难,只要用个生成随机数来选择图片就可以了。
要用 Bing 的图……那个图超大啊。不过可以写个脚本每天自动下图压缩,
(defun chunyang-download-bing-picture (&optional directory filename resolution)
"下载 Bing 首页图片.
用 DIRECTORY 指定下载目录,省略或 nil 用当前路径.
用 FILENAME 指定文件名,省略或 nil 用服务器提供的.
用 RESOLUTION 指定分辨率,如\"1920*1086\",省略或 nil 用服务器提供的."
(interactive)
(let ((api
"http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN")
json pic-url pic-file)
(if filename
(setq pic-file (expand-file-name filename directory)))
(if (and pic-file (file-exists-p pic-file))
pic-file
(with-current-buffer (url-retrieve-synchronously api)
(set-buffer-multibyte t)
(goto-char (point-min))
(delete-region (point-min)
(1+ (re-search-forward "^$" nil t)))
(goto-char (point-min))
(require 'json)
(setq json (json-read))
;; http://bing.com/az/hprichbg/rb/PonteSantAngelo_ZH-CN15413822788_1920x1080.jpg
(setq pic-url
(concat
"http://bing.com"
(assoc-default 'url (aref (assoc-default 'images json) 0))))
;; 默认用一个分辨率较低的,适合 `fancy-splash-image'
;; http://bing.com/az/hprichbg/rb/PonteSantAngelo_ZH-CN15413822788_640x360.jpg
(setq pic-url
(replace-regexp-in-string
(rx "_" (1+ digit) "x" (1+ digit) ".jpg" string-end)
(if resolution
(format "_%s.jpg" resolution)
"_640x360.jpg")
pic-url))
(unless pic-file
(setq pic-file
(expand-file-name (file-name-nondirectory pic-url) directory)))
(unless (file-exists-p pic-file)
(url-copy-file pic-url pic-file))
pic-file))))
(setq fancy-splash-image (chunyang-download-bing-picture))
关于 API:
好像图片太大 C-h C-a
(about-emacs
) 就无法不了,我这边 1920x1080 就显示不了,但 640x360 可以。
也可以在下载的时候选择分辨率。
这个 URL http://signavatar.com/50020_s.gif 下有关于 Honey Select 的图片,会自动轮换,可以当作“随机”的。
我刚才写了个命令 chunyang-about-honey-select
,每次运行都会显示一张不同的图片,效果图:
代码(注意要开启 lexical-binding
)
;; -*- lexical-binding: t; -*-
(defun chunyang-about-honey-select (&optional dir)
"Fetch a picture on Honey Select to DIR and display in *About GNU Emacs*.
Argument nil or omitted means save to `default-directory'."
(interactive)
(unless dir
(setq dir (let ((default "~/Pictures/Honey Select"))
(if (file-exists-p default)
default
default-directory))))
(let ((default-directory dir)
(process-environment (append '("LC_ALL=C") process-environment))
buf proc)
(setq buf (get-buffer-create "*wget*"))
(setq proc (get-buffer-process buf))
(when proc (kill-process proc))
(with-current-buffer buf
(setq proc (start-process
"wget" buf "wget"
"--server-response"
"--content-disposition"
"--no-clobber"
"http://signavatar.com/50020_s.gif"))
(require 'shell)
(shell-mode)
(display-buffer buf)
(set-process-sentinel
proc
(lambda (_proc event)
(cond ((string= event "finished\n")
(with-current-buffer buf
(save-excursion
(goto-char (point-min))
(re-search-forward " Location: \\(.+\\)$")
(setq fancy-splash-image
(expand-file-name (file-name-nondirectory (match-string 1))))
(kill-buffer)
(delete-other-windows)))
(about-emacs)))))
;; Use the comint filter for proper handling of carriage motion
;; (see `comint-inhibit-carriage-motion'),.
(set-process-filter proc 'comint-output-filter))))
谢谢,太感谢了,明天试试。
这两个函数是不是只能在linux下系统使用啊? Windows上可以吗?
Windows 上有 weget 在 PATH 里就够了。
God help us!..
banner要被玩坏了。。。