如何给终端安上炫酷的皮神黄皮肤?

昨天看 Trending repositories on GitHub today 时,发现了一个不得了的东西:

Pokemon-Terminal,已经有 1200+ star

给终端安上超炫酷的皮神黄皮肤!
作为一个铁杆口袋迷+程序员,还有什么能比这更打动我的心吗?

一天后,在一番说麻烦也不麻烦,说不麻烦又学了很多新东西的折腾后,我成功入手了这款至尊皮神黄皮肤!

感觉又能元气满满地查 bug 了呢

如果你也是口袋迷,也想给终端安上这款皮肤(或者在 493 只不同的口袋妖怪皮肤中任选一款),那么你可以看看我对这趟折腾之旅的全过程介绍,或许可以少跳几个坑。

从零开始的项目安装

打开 Pokemon-Terminal 项目的 github 主页,我发现安装前有两个要求:

  1. 3.5及以上版本的 python;
  2. 已安装 iTerm2。

巧了,这两个要求我都不符合!

iTerm2 我从来没有接触过,根本不知道是什么。而比较久远的时候,我在试图将 OS X 系统自带的 python 2.+ 升级为 3.+ 时,跟着网上不知道靠不靠谱的教程误操作,以致 2.+ 删掉了 3.+ 却没安好,依赖于 python 的以 Xcode 为首的一系列软件全部罢工(而且过了一周左右才查出来是这个原因),最后灰溜溜地又下了一遍 2.+,从此留下了对 python 的心理阴影(但是我们这篇教程还是很靠谱的)。

吃瘪了

没关系,作为(准)程序员,要勇于折腾!我们一步一步的搞起。

iTerm2

我是先下载的 iTerm2,官网在此,下载即可。

iTerm2 是 OS X 系统下很好用的一款命令行工具,至于具体怎么好用,敬请百度了解。因为我现在只是为了皮神黄皮肤。当然之后我也会进一步学习使用。

python 3.5+

昨晚吃瘪后的我心有不甘,发了一条说说。然后幸得初中同学救驾:

向蔡老师低头

这个允许用户方便地安装不同版本的 python 并可以快速切换的 anaconda 帮助我解决了问题。官网提供了图形化安装和命令行安装两种方式,根据自己的专业程度选择下载即可。

选择 3.6 版本,安装后会自动帮你把 python 版本切换为3.6

这个 anaconda 据说也是 python 开发的利器之一,不过我也不会 python。也许之后机缘巧合会深入学习(想了解可以参照这篇文章Anaconda使用总结)。说实话为了给终端换个皮肤,让我本不宽裕的存储空间又少了 1G 左右,有些心疼。但是折腾还是给了我很多乐趣,也许之后有用呢。

那么要求都满足了。按照项目 README 要求,在 iTerm 2 中输入以下三条语句:

1
2
3
4
# Pokemon Installation
git clone https://github.com/LazoCoder/Pokemon-Terminal $HOME/.Pokemon-Terminal
echo PATH="$HOME/.Pokemon-Terminal:${PATH}" >> ~/.bash_profile
source ~/.bash_profile

安装完毕,皮神我来了!

1
$ pokemon pikachu

然后…出现以下报错提示:

1
.Pokemon-Terminal/./Scripts/background.scpt:39:46: script error: Expected end of line but found identifier. (-2741)

报错了,就很难受

翻越最后一座 bug 高山

想去给作者提一个 issue,就发现作者对于这个 bug 已经给出了解决方法

按照解决方法,我们需要对 .Pokemon-Terminal/scripter.py 文件进行一些修改(当然,不一定每个人都碰上了这个 bug)。其实我也不太会用 vim,所以以下操作参照了这篇文章修改文件内容 vi命令

用以下命令在终端打开:

1
vi .Pokemon-Terminal/scripter.py

然后按一下 i,从命令行模式进入插入模式。找到函数__terminal_script(在比较靠上的位置),将:

1
content = "tell application \"iTerm\"\n"

修改为:

1
content = "tell application \"iTerm2\"\n"

按 Esc 键进入命令行模式,再按:wq保存退出。大功告成!

再在 iTerm2 中输入pokemon pikachu,就会发现黑漆漆(或者白晃晃)的背景变成了皮神黄!

深度使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Usage:
pokemon [parameter]

Parameters:
[name] - Change the terminal background to the specified Pokemon.
[index] - Change the terminal background to a Pokemon by its index.
[region] - List all the Pokemon of the specified region.
[one letter] - List all Pokemon who's names begin with a particular letter.
[two letters] - List all Pokemon who's names begin with those two letters.

Other Parameters:
pokemon all - List all the Pokemon supported.
pokemon regions - List all the available regions.
pokemon extra - List all the Pokemon from the 'Extra' folder.
pokemon random - Change the terminal background to a random Pokemon.
pokemon random-kanto - Change the terminal background to a random Pokemon from the specified region.
pokemon ? - Identify the current Pokemon in the terminal.
pokemon _pikachu - Change the wallpaper to the specified Pokemon.
pokemon _random - Change the wallpaper to a random Pokemon.
pokemon _random-kanto - Change the wallpaper to a random Pokemon from the specified region.
pokemon _? - Identify the current Pokemon in the wallpaper.
pokemon slideshow - Iterate through each Pokemon.
pokemon slideshow-kanto - Iterate through each Pokemon in the specified region.
pokemon help - Display this menu.

以上是作者提供的用法。可以通过口袋妖怪的英文名或者编号切换皮肤,或者用pokemon random来切换成随机的皮肤。

我们现在还得每次打开 iTerm 后输入命令来切换皮肤。作者同样提供了点开就换的方法,只用在 iTerm 的 Preferences 里做一点配置:

可以去掉; clear以使终端界面不自己下滑来隐藏这条命令

想一想,通过配置为pokemon random,每次打开都是不同皮肤说不定更爽到。

最后作者建议你改变一下透明度之类的,使皮神看起来更酷炫有范:

作者的配置

我的配置是这样的:

我的配置

再看一次

结语

其实一个皮肤也没有那么重要(还是有那么一点爽的啦),重要的是通过这一番折腾,接触到了很多常规学习中可能不会接触的东西,包括 iTerm 和 anaconda。这也是我第一次有目的性地去看项目的 issue。希望自己以后能多一点这样地非常规学习。