后记,关于gnome-shell和农历插件,有一些笔记与大家分享。
1. 自己如何添加个人节日。我们在拷贝liblunar-data时,会在/usr/share/liblunar/中有三个文件,分别是holiday.zh_CN,holiday.zh_TW,holiday.zh_HK,相对应的,我们打开大陆节日表holiday.zh_CN这个文件中,在相关的公历,阴历或周中添加自己的节日,格式和文件本身数据格式保持一致就可以了。
2.lunar插件结构主要分为四个部分,一是插件的主文件extension.js,二是设置文件数据convenice.js(这个只是取得相关的数据接口),三是设置文件的ui接口(prefs.js,prefs.ui,schemas),四是整个插件元信息(metadata.json)。
3.该插件本质上是对liblunar-data.so的依赖,但GJS这里比较恶心,原以为仅是调用一个阴历的库,所以随便一个JS的阴历库应该都可以调用的,在这里花了很长一段时间,去试探如何在GJS中调用外面的NODE JS的包,但很遗憾没有成功。GJS调用外包,我从其调用GTK等C动态库来分析并翻阅资料,才知道,这货调用外部C动态库,需要一个中间xml说明文件,在此又返回查看该插件说明所依赖的两个包(girl-lunar-date,liblunar-date)去分析,前者提供了动态库的调用说明,后者提供了动态库。这便是二者关系
4.在extension.js中函数_getLunarClockDisplay 是用于topbar中间内容的显示,如图(我这个显示内容,自己简单更改过,与原版本不太一样)


而LunarCalendarSection._reloadEvents函数则是对应于日历消息栏的信息,这个大家也可以调整更改,如图(简单添加了一句话),这里addMessage方法只接受MessageList.Message及其派生类,原插件中其派生类是LunarCalendarMessage这个类将canclear,canclose两个方法均设置为false,即不能清除和关闭该消息,如果我们直接用MessageList.Message创建message,其canclear,canclose两个方法默认为true,即我们会看到在消息条目上有关闭按纽,也可以通过清除消息来删掉该信息。


当然,还有其他相关信息更改,如阴历年的显示区域,这个在updateData函数中,通过data_label.text来设置的。
好了,就想到这些了。