最近想自己写个gnome-shell扩展找到了下面两个教程
GNOME 3.0 and 3.1 Shell Extensions
More GNOME Shell Customization
这是两篇2011年的 gnome3.0 和 3.1 的教程,相信很多开发 gnome-shell 扩展的朋友也看见过这两篇教程吧,我现在用的是3.18,我想差不了太多的,毕竟都是 gnome 3,我便照着这两个教程开发,没想到这就是我开发 gnome-shell 扩展噩梦的开始。。。。。
为什么我的扩展就运行不起来呢,只好又在 github 上看了好多扩展的代码,终于发现了
main( ) 函数不再是程序入口了!!!
main( ) 函数不再是程序入口了!!!
main( ) 函数不再是程序入口了!!!
于是只能按照模板提供的方式开发扩展,上面的教程的代码根本运行不起来,求我心理阴影面积。。。
好了,吐槽完了开始正式讲讲 gnome 现在开发的基本结构,其实变化也没用太大只是把以前的 main( ) 拆成了三个函数分别是 init( ),enable( ),disable( ),上面两篇教程还是很值得学习的,只要会 JavaScript 和 GObject 五分钟就能学会开发 gnome-shell 扩展
另外我的/usr/share/gnome-shell/
里为什么死活找不到./js/ui
这个文件夹呀,连./js
都没有。。。。如果你也找不到请移步这里,找各个组件的名字属性什么的就全靠它了
首先创建一个 gnome-shell-extension 模板,输入如下命令
# gnome-shell-extension-tool -c
就会在$HOME/.local/share/gnome-shell/extensions
下创建一个模板扩展,里面有三个文件
- extension.js 这是 gnome-shell 扩展最核心的代码,init( ),enable( ),disable( ) 三个函数就在这里面
- stylesheet.css 这时扩展中所使用的 css 样式
- metadata.json 这是扩展的元信息
先上 extension.js 的代码
const St = imports.gi.St;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
let text, button;
function _hideHello() {
Main.uiGroup.remove_actor(text);
text = null;
}
function _showHello