龙芯平台python答案_在龙芯平台上⾃⼰编写原创应⽤——“动
态壁纸”
▲定时切换桌⾯壁纸
简单来说,我们要编写的程序需要开机⾃动运⾏,可⾃动更换当前登录⽤户的登录界⾯图⽚、桌⾯背景图⽚。图⽚来源有两种:
1、 本机指定⼀个⽂件夹,存放要播放的背景图。
2、 指定⼀个⽹络位置的⽂件夹(⽐如说FTP服务器上的⽬录)
每隔⼀定时间⾃动更换桌⾯背景(时间可以默认2⼩时,⽀持修改)。除了桌⾯背景之外,开机登录图⽚、锁屏图⽚也要同时修改。
三、为什么要使⽤Python?
▲如⽕如荼的Python
Python可以说是⽬前最⽕的语⾔。它⼏乎集成了所有现代编程语⾔的优点:免费、开源,⾯向⾼层问题,
不需要编译,⾯向对象、可扩展性,具有丰富的第三⽅类库。由于Python的开源本质和可移植性的特点,Python已经被移植在许多平台上,这些平台包括Linux、Windows、FreeBSD、Macintosh甚⾄还有Google的Android平台。所以Python程序⽆需修改就可以在上述任何平台上⾯运⾏。⽽且Python语⾔写的程序不需要编译成⼆进制代码,可以直接从源代码运⾏程序。
Python有活跃物社区和⽀持者,除了完成传统的系统管理、脚本任务等⼯作,Python还能够进⾏本地图形界⾯开发、Web开发、数据库开发,甚⾄连新潮的⼤数据、⼈⼯智能都有丰富的第三⽅库。⽬前国内的中⼩学信息化课程都开始学习Python了。
龙芯的所有操作系统都已经集成了Python语⾔环境。使⽤Python编写软件,发⾏时不需要编译,源码就是⼆进制,省去了以前使⽤
C/C++所⾯临的编译器、运⾏库等⼀系列令⼈头疼的依赖关系,可以说是⼀劳永逸。可以说,只要不是对性能要求特别⾼的场合,使⽤Python是可以极⼤提供开发效率的选择。
四、为什么使⽤JSON做配置⽂件?
我们的程序需要⼀个配置⽂件:.f ,使⽤的是json的格式。JSON是⼀种轻量级的数据交换格式,它基于Java的⼀个⼦集。JSON采⽤完全独⽴于语⾔的⽂本格式,但是也使⽤了类似于C语⾔
python怎么读取桌面上的文件家族的习惯(包括C, C++, C#, Java,Java, Perl, Python等)。这些特性使JSON成为理想的数据交换语⾔。易于⼈阅读和编写,同时也易于机器解析和⽣成。所以,现在流⾏的软件⼏乎都是使⽤JSON格式。
下⾯是我们定义的配置⽂件内容:
{"intervals": "10","directorys":[{"type": "directory","value": "/usr/share/backgrounds/mate/nature"},{"type": "directory","value": "/usr/share/backgrounds/mate/desktop"},{"type": "url","value": "ftp://10.2.5.28/tmp/ryf"}]}
▲配置⽂件基于JSON语法,简洁直观
五、怎样实现修改桌⾯背景?
龙芯的社区版Loongnix操作系统基于mate桌⾯,提供⼀个dconf命令可以更改桌⾯背景图⽚。
$ dconf write /org/mate/desktop/background/picture-filename
但是,对于开机登录图⽚、锁屏图⽚,需要使⽤不同的⽅法,是修改系统中的配置⽂件
/usr/share/backgrounds/f21/l。
六、技术要点
▲ “动态壁纸”的程序结构,在180⾏Python代码中实现
本程序的主要流程是⼀个循环结构:读取FTP上的图⽚,⾸先要根据FTP上存放图⽚的路径,把图⽚读取到本机上,再根据本机上的⽬录,读取该⽬录下的所有图⽚名称,再根据⽬录加集合⾥的图⽚名称⽤dconf命令更改桌⾯背景图⽚,和修改锁定屏幕的背景图⽚。
具体实现技术有:
1. 开机后⾃动执⾏壁纸切换:向/etc/xdg/autostart/⽬录下,增加了wallpaper.desktop⽂件,那么登录桌⾯后就会⾃动启动运⾏动态壁纸的后台程序。
2. 访问FTP服务器:使⽤Python内置类库ftplib,⾮常⽅便。
3. 定时执⾏:使⽤Python内置类库time.sleep。根据配置⽂件制定的时间,利⽤sleep()函数来执⾏定时切换图⽚的功能。
4. 配置⽂件:Python内置JSON语法解析器。
5. 更新配置:本程序的⼀个特⾊是,对于配置⽂件的修改,使⽤了信号机制通知后台进程重新加载配置⽂件。例如,⽤户⼿动修
改.f配置⽂件,进⼊终端执⾏命令:
#python changeconfig.py
这样就会重新读取修改后的图⽚⽬录,重新开始播放新的图⽚。在主程序中,我们⾸先使⽤signal.signal()函数来预设信号处理函数,等待信号。当执⾏changeconfig.py命令时,发送信号SIGUSR1给主程序,从暂停中恢复,并根据预设,执⾏SIGTSTP的信号处理函数myHandler()。我们可以根据⾃⼰的需要更改myHandler()中的操作,以针对不同的信号实现个性化的处理。
七、⼀切为了开放!
本项⽬已经在github开放源代码和⽂档资料:
▲ “动态壁纸”的源代码在github上开放
⼋、总 结
“动态壁纸”为龙芯桌⾯提供了不亚于PC机软件的体验。龙芯已经具有⾃由开发应⽤程序的能⼒,龙芯应⽤⽣态必将蓬勃发展。⼤家有新的创意也可以⾃⼰实现,如果有新的⼼得体会或者更好的平台记得反馈给我们,或者在龙芯论坛()上提供新的技术成果,⼀起把龙芯软件⽣态完善起来!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论