我最近使用Linux Mint Xfce的时间比较多,这个操作系统虽然运行效率高,占用资源少,但是感觉Xfce桌面稳定性还存在不足,经常出现莫名其妙的画面抖动及部分区域出现花屏的现象,还容易出现使用者误删面板、应用程序加入到面板发生错误的情况,虽然不太影响使用,但是使用体验还是要差一些。本月想下载Ubuntu最新版来尝尝鲜,体验一下最新的GNOME的最新技术进展。由于我是使用的10年前的Thinkpad T400,只是更换了SSD硬盘,出现了安装完最新版的Ubuntu后,发现这个操作系统太消耗资源、经常出现鼠标停顿的现象,我想主要是由GNOME桌面系统引起的,确实没办法用,只能放弃。

我之前在使用优麒麟系统、深度Deepin系统、Linux Mint Xfce系统的时候,文件管理器都更换为了Nemo,因为只有这个文件管理器用起来更顺手,而且便于切换到root模式下,而Nemo是由Linux Mint Cinnamon发行版依据Nautilus进行修改而来的。所以一直我都想试用一下拥有Nemo软件的Linux Mint Cinnamon发行版。

通过最近几天的使用,发现这个发行版特别优秀,运行效率高,在我的电脑上与Linux Mint Xfce版本的性能非常接近,查看资料发现是开发团队对底层性能做了大量优化工作,而且界面非常美观,具备高度的可定制化能力,因为界面部分引入了GNOME Shell技术,由名为CJS的javascript通过GObject Introspection技术来调用底层代码生成用户操作界面。应用程序运行显示状态正常,比如Variety选择背景图片的滚动栏就不会发生Xfce那样图片进入面板下方的情况。

当然在安装工作环境的时候还是发现了一些需要需改的地方,但是都很顺利的进行:

第一,希望系统自带的日历能够增加显示中国农历,因为Cinnamon Calendar Applet是由javascript写成的js文件,所以为我们自行修改提供了可能,要使用已有的现成功能,减少代码的修改量,就先安装Ubuntu软件库中的gir1.2-lunar-date-2.0和liblunar-date-2.0-0这两个解决农历问题的基本软件包。liblunar-date-2.0-0这个软件包是实现农历转换等基本功能的函数库,而gir1.2-lunar-date-2.0是农历库函数与其它语言之间的接口,使用GObject Introspection技术来实现的,安装完这个软件包后会生成两个文件:/usr/lib/girepository-1.0/LunaDate-2.0.typelib和/usr/share/gir-1.0/LunarDate-2.0.gir,这是GJS javascript调用底层函数的关键。由于Cinnamon桌面可能带有类似于Deepin操作系统那样的机制来避免用户修改默认的组件或者操作系统更新覆盖,我发现我做的修改第二天就消失了。因此要修改这个Applet就要将他复制并修改为自己命名的Applet,我将/usr/share/cinnamon/applets/calendar@cinnamon.org目录拷贝到我的用户目录/home/ericden/.local/share/cinnamon/applets下,修改目录名为calendar@ericden.org,将目录中的metadata.json文件的calendar@cinnamon.org修改为calendar@ericden.org,将目录中applet.js文件的calendar@cinnamon.org修改为calendar@ericden.org,如果不做这个修改就会出现Applet的配置按钮无法工作,也就无法完成如“是否显示周数”等参数的配置。完成这些步骤就可以通过“小程序”配置工具将原有的calendar@cinnamon.org Applet删除,重新安装calendar@ericden.org Applet。后面的修改后就可以看到修改后的效果,要让修改生效,要用Alt+F2,在弹出的对话框中输入“r”,重启动Cinnamon。下面是对两个主要文件applet.js和calendar.js的修改。

一)、applet.js:

1、在文件中加入语句:const LunarDate = imports.gi.LunarDate;

2、在_updateClockAndDate()函数中,将语句this._date.set_text(dateFormattedFull)做修改,目的是在标题部分显示完整的农历日期,修改为:

let ld = new LunarDate.Date();

let now = new Date();

ld.set_solar_date(now.getFullYear(),(1 + now.getMonth()),now.getDate(),18);

let out = ld.strftime("%(NIAN)年%(YUE)月%(RI)");

this._date.set_text(dateFormattedFull + "\n" + "农历" + out);

二)、calendar.js

1、在文件的开始部分加入以下语句:

const LunarDate = imports.gi.LunarDate;

const jieri_str = LunarDate.DATE_MAJOR_VERSION >= 3 || LunarDate.DATE_MAJOR_VERSION == 2 && LunarDate.DATE_MINOR_VERSION >= 9 ? "%(holiday)" : "%(jieri)";

2、在_update(forceReload)函数的while循环前加入语句:let ld = new LunarDate.Date();,将循环中的语句let button = new St.Button({ label: iter.getDate().toString())修改替换为以下语句:

ld.set_solar_date(iter.getFullYear(),(1 + iter.getMonth()),iter.getDate(),18);

let out = ld.strftime("%(RI)");

let first = ld.strftime("%(ri)");

let yueNum = ld.strftime("%(yue)");

if (first == 1)

out = ld.strftime("%(YUE)月");

if (ld.strftime(jieri_str) != "")

out = ld.strftime(jieri_str);

let button = new St.Button({ label: iter.getDate().toString() + "\n" + out});

修改完成后,重启Cinnamon,就实现了中国农历,当然因为增加了农历造成日历显示在部分主题中显示不完整,需要将自己使用的主题的cinnamon.css做修改,系统自带主题库中下载的CBlack等主题是放在用户目录中的,我是修改/home/ericden/.themes/CBlack/cinnamon/cinnamon.css文件,将Date applet部分的calendar-day-base的  width: 和height分别设置为3.2em和4.2em。最后的显示效果如下:

第二个问题就是中文支持不完整,通过sudo apt-get install language-pack-gnome-zh-hans语句就能极大程度的解决中文化的问题。

第三通过系统设置中的主题设置选项,中添加并选中CBlack主题来替换原有主题,用Windows-10的图标来替换系统默认图标,更加能够照顾原有的习惯,开始图标更换为linuxmint-logo-neon,并将原有的绿色通过inkscape软件修改为白色(透明度选择75%),当然这个也可以选择Windows-10的开始图标 。

第四:安装坚果云,安装过程都不报错,但是在开始菜单上点击图标却没有任何反应,我打开nutstore-menu.desktop文件一看,结果是Exec后面列出的是一个临时目录中的文件,该目录已经消。失,所以点击没有任何反应。将那一行语句修改为:Exec=sh -c "exec ~/.nutstore/dist/bin/nutstore-pydaemon.py"后运行基本正常了,坚果云可以打开,但是只有一个空白窗口,通过修改~/.nutstore/dist/conf/nutstore.properties文件中的webui.enable=true为webui.enable=false即可解决。

第五:解决面板右下角标准Applet图标、Systray图标间距不一致的问题。我发现现在应用软件基本上都是以标准Applet图标形式出现在右下角,不管是彩色图标还是符号图标,它们的大小和间距都很一致,比如坚果云、搜狗输入法、为知笔记、云日历、Variety等软件显示都很正常。但是腾讯发布的QQ for Linux和优麒麟发布的Ukylin-Wine版本的微信,它们都是放置在Systray中,Systray的样式只能作为一个整体由cinnamon.css文件来修改,因此QQ和微信图标的间距默认情况是固定的,而且很小,在我当前的CBlack主题中标准Applet的间距是.3em(相当于3px)整体看起来有点不协调,具体显示效果如下:

既然Systray只能作为一个整体修改样式,那么要修改QQ和微信图标的间距就只能从Systray的代码中来找解决办法,Systray也是一个Applet,它的名称是systray@cinnamon.org,位于/usr/share/cinnamon/applets目录中。该目录中需要查看修改的就是applet.js,文件中有两条语句觉得和间距非常有关,里面也含有spacing关键词:

manager = new Clutter.BoxLayout( { spacing: 4,orientation: Clutter.Orientation.HORIZONTAL });

manager = new Clutter.BoxLayout( { spacing: 4,orientation: Clutter.Orientation.VERTICAL });

将其中的4修改为8,QQ和微信图标的间距就扩大了,效果如下:

另外Systray作为一个整体,距离其它Applet也存在距离过近的情况,需要需改当前使用的主题的样式文件,我是修改~/.themes/CBlack/cinnamon/cinnamon.css,在文件的最后增加如下语句:

.systray {

padding: 3px;

}

第五:Qt字体的修改,通过配置界面的“选择字体”设置的系统字体目前对GTK编写的程序有效,但是Qt库编写的部分程序字体默认是ubuntu字体,是长方形的,需要使用系统自带的“Qt5设置”工具(Qt5ct)修改为自己系统中选定的默认字体,来确保所有软件的界面的字体能够保持一致。

为Linux Mint Cinnamon的日历小程序增加中国农历显示以及其它部分参数优化相关推荐

  1. 在XFCE桌面环境面板的clock插件之日历(calendar)部分增加中国农历显示功能

    在之前我通过修改calendar.js的方法解决了在Cinnamon桌面环境中增加中国农历显示的功能,但是在XFCE桌面环境中,面板的小部件不是由JavaScript编写的,功能修改起来就不一样了,需 ...

  2. Linux mint cinnamon 64bit 17.3 使用体验(一)

    前言 前天晚上在一台式机上安装了Linux mint cinnamon 64bit 17.3:昨晚回去开始体验mint,记录下操作过程. 更新软件源 系统安装好后,需要更新软件,为了缩短更新耗时,需要 ...

  3. python日历小程序_python写的日历小程序

    查看: 14785|回复: 262 [作品展示] python写的日历小程序 电梯直达 发表于 2013-8-19 21:38:32 | 只看该作者 |倒序浏览 |阅读模式 马上注册,结交更多好友,享 ...

  4. Calendar日历小程序

    //有待完善,有点bug package com.sunshine.framework.calendar.model; import java.util.Calendar; /**  *  * < ...

  5. 编程日历小程序,对小程序云开发和生成分享海报的实践

    1.起源 朋友圈晒的很多的一本日历书<了不起的程序员 2021>,我也买了,很厚,纸质书嘛,现在已经很少看了,加上这是一本日历书,希望是每天都打开看.可实际上的情况是,要么忘记看今天的内容 ...

  6. java gui 日历_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import jav ...

  7. 又发福利!日历小程序源码

    继续分享99个小程序源码. 本期分享的小程序是是一个日历小程序,可以实现上下翻页的.这个小程序是单机版的,导入开发工具就可以运行,开发者可以在此基础上根据业务场景二次开发. 如上图所示,可以展示星期几 ...

  8. Java实现简单的日历小程序之Java图形界面开发小日历

    首先创建一个CalendarBean类,用于基本的日期计算: package other1;import java.util.Calendar; public class CalendarBean { ...

  9. java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个calendarbean类,用于基本的日期计算: package other1; import jav ...

最新文章

  1. xmlHttpRequest避免缓存的办法
  2. python-管理MySQL之ConfigParser模块
  3. Mysql多表查询(案例2)
  4. 深度学习框架TensorFlow(3.变量)
  5. 1080*1920 下看网站很爽
  6. 深度学习工作笔记002---曼哈顿距离_欧氏距离
  7. 清空缓存的命令_布隆过滤器应用——解决Redis缓存穿透问题
  8. Css单位px,rem,em,vw,vh的区别
  9. @SuppressLint(HandlerLeak),或Handler使用有警告;
  10. http重定向到https
  11. 特色租房管理系统/租房管理系统/房屋租赁管理系统
  12. font-family:中文字体的英文名称 (宋体 微软雅黑)
  13. 一文搞懂什么是禁忌搜索算法Tabu Search【附应用举例】
  14. android平板识别光驱,平板电脑看不了光盘?一个ORICO外置光驱就可以轻松搞定
  15. 标准单元库的corner简述
  16. matlab 输出 syms,matlab中latex和syms的完美结合
  17. 达梦数据库修改字段(列)(基表修改语句)
  18. Linux文件系统以及目录结构简介
  19. 使用PS(Adobe Photoshop CC)设计Banner
  20. 在linux系统上查看本机ip地址

热门文章

  1. centos8安装gcc
  2. 【愚公系列】2022年03月 微信小程序-富文本编辑器
  3. 获取当前局域网下所有连接设备的ip地址和mac地址
  4. python+气象 | 在地图背景下绘制全国站点气温分布图
  5. windows10 修改用户名全局生效--最有效快速的办法
  6. kalman滤波总结
  7. cp2102 usb驱动官网
  8. Java之详解坦克大战游戏(六)
  9. 西门子s7-200解密软件下载_西门子强势推出S71200主打优势是什么,卖点如何?
  10. 偏微分方程简明教程第六章部分答案