# ubuntukylin-theme

　　ubuntukylin-theme 优麒麟主题包，此包包含开机动画、gtk主题、图标主题、光标主题、开机选择界面和搜狗输入法皮肤。

一、开机动画

　　控制开机动画文件在usr/share/plymouth/下，首先如何查看当前系统开机动画呢？重启不是一个好办法，你可以进入root权限后在终端输入:

	plymouthd

　　然后切到tty1-6任意，再次进入root权限并输入：

	plymouth --show-splash

　　就可以看见当前开机动画了，如果你想退出预览直接切回tty7即可。

　　如果你需要替换开机动画，那么在usr/share/plymouth/themes/ubuntukylin-logo/下存放着开机动画每帧的图片，连起来就是动画了，控制图片连起来的就是ubuntukylin-logo.script，如果图片数量发生改变请在此文件下对应值进行修改。当你修改完成后请放在系统对应目录下，然后再次执行命令查看开机动画。

二、gtk主题

　　想要修改gtk主题首先需要给系统安装sass，直接在终端输入命令：

	sudo apt install sass

　　然后建议学习一下sass，当然如果你熟悉css可以很快掌握，可以直接查看官网的教程(https://www.sass.hk/guide/)，也可以去看看阮一峰的教程(http://www.ruanyifeng.com/blog/2012/06/sass.html)。

　　学过CSS的人都知道，它不是一种编程语言。你可以用它开发网页样式，但是没法用它编程。也就是说，CSS基本上是设计师的工具，不是程序员的工具。所以这里使用的是sass，目的就是为了更加配合程序猿的使用习惯，使代码更有逻辑性。当然为了使系统能够读取，必须得在编包安装时把.scss文件转换成css。

　　在你修改主题之前要清楚一点，所谓gtk主题的错误并不会导致系统崩溃，但是可能会因为颜色的配置给人一种“某个按钮无法生效、某个控件没有被激活”这样的感受，这也是在修改时要注意的，把每个控件的各种状态情况考虑，如果某个控件完全没有样式或者样式完全没有被控制。

　　当某个控件的样式出现问题，可以通过删除代码或者修改颜色色值来定位，注意sass存在继承关系，如果要修改的控件被其他控件继承，会导致很大的影响。当然如果单独给某个控件颜色时，请把颜色写在对应控制颜色的文件下，这样会方便后续的维护。

　　当你修改完毕，想要尝试修改是否生效，可以直接在含有Makefile文件的文件下执行：

	make

	sudo make install

　　即可，但要注意的是在往github提交代码时请执行：

	make clean

　　清除make产生的多余文件，这对编包上传等工作百利无一害。


三、图标主题

　　首先在修改图标主题中的图片时，请遵守对图标命名的规范，最基础的就是不向文件夹里乱添加图片。为了使用户再切换主题时每个图标都能生效，这是必须的。

　　当你打开图片文件夹时，你可以看见很多按照规格排列的文件夹。是的，这就是图片大小，当你得到一张.png切符合命名规范的图片想要
替换到图标主题时，也请根据尺寸到相应文件夹以及相应类型下进行替换。请注意，scalable文件下没有尺寸，因为此文件夹下的图片为.svg
类型，.svg类型图片没有固定大小，颜色也可以根据程序进行改变。

　　目录下的index.theme文件是配置文件。如果你检查到明明对应文件夹里有图片却一直没有显示或者显示尺寸有错，那么可能是这里出错了，每个目录下的文件夹都会被此文件配置，如果有新增加的文件夹那么请一定要更新此配置文件，不然此文件夹下的所有内容都不会被调用。

　　那么到底要如何替换图标呢？截止目前为止，此目录下有170+的文件夹，有超过2.7万张图片，寻找某一张图片的无疑是大海捞针。方法一，在/usr/share/application目录下有对应的.desktop文件，打开对应软件的.desktop文件，可以看见Icon一行，后面接的就是对应软件名字；方法二，清楚需要替换的图片是属于什么类型，直接在对应类型的文件夹下寻找；这两种方法基本可以帮助你定位出错图片位置，当无法确认对应文件类型时就用排除法，删掉文件夹，如果被影响了，就说明图片在此文件夹下。

　　在图标主题下有很多相同的图标，那么我们该如何控制他们同时切换呢，这个时候就用到了软链接，因软链接生成的图片会跟着父级图片进行改变。为了方便批量替换，我写了一个脚本<https://github.com/kwwzzz/shell/tree/master/ukui-theme-icons-replace>用来替换同名的图标，这样能够节约部分时间提高效率，毕竟总是重复的工作会让人感觉枯燥。

　　关于图标命名规范，首先是和上游的图标名称相同，还有图标名中不可以出现空格，不可以出现奇怪的符号，图片的权限也必须合理等等，你可以通过编包，跑lintian来检查错误，由于主题包过大，编包跑lintian往往要很久时间，所以我写了一个脚本用于检查修改图片权限<https://github.com/kwwzzz/shell/tree/master/ukui-theme-icons-power>，这样也能够省去一些重复的编包测试工作。

四、光标主题

　　关于光标主题，为了让ukui的鼠标更有个性化，我调研了ubuntu的光标主题并以ubuntu为基础进行ukui的光标主题制作。

　　光标主题读取的不是简单的.png图片，是经过配置后的鼠标文件，直接使用图像工具无法打开，目前使用了gimp可以看见鼠标文件。并且尝试是否可以直接用gimp绘制鼠标文件，目前是不可行的，目前只有一种办法制作鼠标文件。

　　首先获取到所有光标名称，ubuntu下是90个，但由于软链接其实只有50种需要修改，现已经提取出这些鼠标文件名称（left_ptr是默认光标），使用gimp可以打开这些鼠标文件，绘制出对应合适的外观。该鼠标文件分为静态和动态，静态是由一张图片的三种尺寸组成（48x48px,32x32px,24x24px）共三张即可,动态同样是按照三种尺寸组成，但还需要按照帧数进行排列（ubuntu是30张图片完成一个动画），目前只有两张图片是动态（watch、left_ptr_watch），注意静态图片命名请按照：图片名_尺寸.png(如：left_ptr_48.png)，动态图片按照：图片名_序号_尺寸.png(如：watch_1_48.png、watch_2_48.png)。

　　绘制完图片后，制作.conf文件,內容格式為：

　　(size) (xhot) (yhot) (filename) (ms-delay)

　　其中：

　　(size)处写鼠标的大小（像素）

　　(xhot)(yhot)鼠标的有效区域以及偏移量

　　(filename)图片名

　　(ms-delay)动态鼠标使用，每帧图片的间隔时间

　　制作.conf后，通过命令制作成系统可读取的文件。生成命令：

　　xcursorgen xxxx.conf xxxx

　　以上是光标制作的具体流程，为了更加直观以及方便修改光标主题，我已经将光标制作自动化，如果有需要变化图片的光标直接在对应尺寸下替换图片即可，通过

	make

	make install

　　命令生成对应的光标主题，注意提交前执行

	make clean

　　删除多余文件
