本篇主要讲通过makefile方式来安装rhythmbox插件的相关知识。


makefile


如果makefile是什么,请自行谷歌

参考了pandasunny同学的rhythmbox-baidu-music,如有冒犯请指出

 SCHEMAS_DIR=$(DESTDIR)/usr/share/glib-2.0/schemas
PLUGIN_DIR=$(DESTDIR)/usr/lib/rhythmbox/plugins/xiami
PLUGIN_DATA_DIR=$(DESTDIR)/usr/share/rhythmbox/plugins/xiami
PLUGIN_USER_DIR=$(HOME)/.local/share/rhythmbox/plugins/xiami
PLUGIN_LOCALE_DIR=$(DESTDIR)/usr/share/locale clear:
rm -f *.py[co] */*.py[co]
install: install-po schemas
mkdir -p $(PLUGIN_DIR)
mkdir -p $(PLUGIN_DATA_DIR)
cp -r *.py baidu-music.plugin $(PLUGIN_DIR)
cp -r *.ui popup-ui.xml images $(PLUGIN_DATA_DIR)
install-local: install-po schemas
mkdir -p $(PLUGIN_USER_DIR)
cp -r *.py *.ui popup-ui.xml xiami.plugin images $(PLUGIN_USER_DIR)
uninstall:
rm -rf $(PLUGIN_DIR)
rm -rf $(PLUGIN_DATA_DIR)
rm -rf $(PLUGIN_USER_DIR)
rm -f $(SCHEMAS_DIR)/org.gnome.rhythmbox.plugins.xiami.gschema.xml
glib-compile-schemas $(SCHEMAS_DIR)
for i in ./po/*.po; do \
lang=`basename $$i .po`; \
rm -f $(PLUGIN_LOCALE_DIR)/$$lang/LC_MESSAGES/rhythmbox-xiami.mo; \
done
install-po:
for i in ./po/*.po; do \
lang=`basename $$i .po`; \
msgfmt -c ./po/$$lang.po -o ./po/$$lang.mo; \
mkdir -p $(PLUGIN_LOCALE_DIR)/$$lang/LC_MESSAGES; \
mv ./po/$$lang.mo $(PLUGIN_LOCALE_DIR)/$$lang/LC_MESSAGES/rhythmbox-xiami.mo; \
done
rm -f ./po/*.mo
schemas:
if [ ! -d $(SCHEMAS_DIR) ]; then \
mkdir -p $(SCHEMAS_DIR); \
fi
cp org.gnome.rhythmbox.plugins.xiami.gschema.xml $(SCHEMAS_DIR)
glib-compile-schemas $(SCHEMAS_DIR)

schema


由于编写插件的过程中需要处理一些设定文件,所以用到了

self.setting = Gio.Settings("org.gnome.rhythmbox.plugins.xiami")

Gio.Settings 实际上是封装了GTK 3的GSettings。它将需要的设定存到后缀名为gschema.xml的schema文件中。

下面给出schema文件的例子

 <schemalist>
<schema id="org.gnome.rhythmbox.plugins.xiami" path="/org/gnome/rhythmbox/plugins/xiami/">
<key name="username" type="s">
<default>''</default>
<summary>Username</summary>
<description>The username of xiami account.</description>
</key>
<key name="password" type="s">
<default>''</default>
<summary>Password</summary>
<description>The password of xiami account.</description>
</key>
<key name="lyric-path" type="s">
<default>'~/.lyrics/'</default>
<summary>Lyric dir</summary>
<description>The dir of lyrics</description>
</key>
<child name="source" schema="org.gnome.rhythmbox.source"/>
</schema>
</schemalist>

要想能在GSettings中能使用这个文件,还需要两步(如MakeFIle的39行和40行所示):

1将这个文件拷贝到文件夹/usr/share/glib-2.0/schemas/下

2用glib-compile-schemas编译这个文件夹。

参考了下面两篇文章:

http://www.micahcarrick.com/gsettings-python-gnome-3.html

http://lazka.github.io/pgi-docs/Gio-2.0/classes/Settings.html


po

对mo,po的解释这篇文章讲的很好,就不赘述了。MakeFile的27-34行描述了对mo,po文件的具体操作。


下一篇将详细介绍通过插件自定义rhythmbox界面的具体方法。

rhythmbox插件开发笔记3:安装 makefile && schema && po的更多相关文章

  1. rhythmbox插件开发笔记1:简介&入门

    rhythmbox是gnome下一款开源的音乐播放软件.ubuntu和fedora的桌面环境中均默认安装了rhythmbox. rhythmbox架构非常灵活,几乎所有地方都可以用插件来修改.用户想实 ...

  2. rhythmbox插件开发笔记2:背景知识学习 D-Bus&VFS&Gio& Python GTK+ 3

    这次主要简单介绍下相关的背景知识 D-Bus&VFS&Gio& Python GTK+ 3  D-Bus D-Bus是开源的进程通信(IPC)系统,它允许多个进程进行实时通信. ...

  3. CentOS学习笔记--Tomcat安装

    Tomcat安装 通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了.其中最大的一个问题就是Tomcat执行权限.普通方式配置的Tomca ...

  4. (转)ZooKeeper 笔记(1) 安装部署及hello world

    ZooKeeper 笔记(1) 安装部署及hello world   先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.or ...

  5. LNMP笔记:安装 Xcache 缓存扩展,降低服务器负载

    LNMP笔记:安装 Xcache 缓存扩展,降低服务器负载 2014/11/27 教程笔记 4,743 14     WordPress 精品主机推荐:恒创主机 | 阿里云(本站目前所用云主机) 倡萌 ...

  6. OracleDesigner学习笔记1――安装篇

    OracleDesigner学习笔记1――安装篇   QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一.       前言 Oracle是当 ...

  7. 笔记-docker-2安装(centos6.5环境)

    笔记-docker-2安装(centos6.5环境) 1.      centos6.5安装docker 1.1.    升级内核 安装docker,官方文档要求linux kernel至少3.8以上 ...

  8. 笔记-redis安装

    笔记-redis安装配置 1.      redis安装配置 1.1.    windows环境安装 win8已有redis 查看版本:redis-server –version 想更新到5.0.0, ...

  9. Docker笔记--ubuntu安装docker

    Docker笔记--ubuntu安装docker 1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选) sudo cp /etc/apt/sources.list /etc/apt/sourc ...

随机推荐

  1. # program once 用途 及与 ifndef使用异同

    在头文件中用这种写法就是为了该头文件被重复包含时不会出现符合重定义的错误. 效果等同于     #ifndef __xxx__     #define __xxx__     ...    #endi ...

  2. Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等

    1.Set和Map的关系: Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个key-value对组成的集合. Set的集合继承体系: Map关系集合 Map集合的key特征:所有key ...

  3. Pure CSS 的网格布局(比bootstrap小很多且易扩展的css UI)

    (转自百度经验)http://jingyan.baidu.com/article/48a42057c44fdba9242504dd.html Pure是一个简单.实用的CSS框架,鉴于目前网上对pur ...

  4. uoj#278. 【UTR #2】题目排列顺序(拓扑排序)

    传送门 对于每一个位置\(i\)来说,上一个和它的\(f_i\)相同的点一定比它大,我们从上一个\(f_i\)和它相同的点向它连边.第一个\(f_i-1\)出现的位置一定比它小,把它向那个位置连边. ...

  5. css布局知识点汇总

    昨天早上看到了一篇很棒的文章,这篇文章将布局的一些知识点整理的很不错.我也想整理一下,这样在以后的项目中可以活学活用,避免只用一种方式. 参考文章:https://segmentfault.com/a ...

  6. JSP 不同版本(转)

    转自 http://blog.csdn.net/sunnyyoona/article/details/51076823

  7. docker 使用数据库mysql

    1. docker pull mysql  获取mysql镜像 2. docker images 查看镜像列表 3.  docker run -itd -P mysql bash :启动mysql镜像 ...

  8. 译—— a tale of viewport2

    这一页我们将讨论移动浏览器.如果您对移动设备完全陌生,我建议您首先阅读第一部分关于桌面浏览器的内容,以便在熟悉的环境中做好准备. 移动浏览器的问题 移动浏览器和桌面浏览器比较,最明显的差异是屏幕大小. ...

  9. Python-13-pass,del和exec

    1.pass就是什么都不做 >>> pass >>>   2. 对于你不再使用的对象, Python通常会将其删除(因为没有任何变量或数据结构成员指向它) . &g ...

  10. Struts2拦截器再认识

    拦截器(Interceptor)是 Struts 2 的核心组成部分. Struts2 很多功能都是构建在拦截器基础之上的,例如文件的上传和下载.国际化.数据类型转换和数据校验等等. Struts2 ...