gnome-shell扩展系统扫盲帖(未完待续)

GnomeShell/Unity/Beryl/AiGLX/XGL/Compiz Fusion
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

gnome-shell扩展系统扫盲帖(未完待续)

#1

帖子 zhw2101024 » 2012-08-03 22:18

首先,gnome仍然处于快速开发的时期,API经常会发生变化。所以不要抱怨扩展不能用了,你要学会查看扩展的出错信息,然后看看相应的API变成什么样了,自己改一下!谁都没有那么多时间一个一个改好了发给所有使用者。授人以鱼不如授人以渔,这也是我写这个帖子的初衷。
最近一直在做网页前台的工作,偶然看到对gnome-shell的扩展的介绍,发现这个扩展系统使用的主要是网页设计的两大利器——javascript和css,而且用的是相当先进的css3,于是一下子就陷进去了。一头扎进茫茫网海,请出谷大婶一番狂搜。结果发现网上相关的中文资料寥寥无几,反复出现的一个例子也跑不起来。无奈之下转到gnome维基中关于扩展的部分https://live.gnome.org/GnomeShell/Extensions又从链接的资料里知道了lg(lookingGlass)。
一、很酷很强大的lookingGlass
首先我们来看一看这个lookingGlass,它是一个类似于Firebug的东东,或者更准确的说就是gnome-shell上的油猴子。Alt+F2,输入lg,打开一个控制台界面。看起来相当现代,本身就带有透明效果
small-lookingGlass.png
第一个是Evaluator,就是gnome-shell的脚本执行器,可以运行javascript并实时产生效果。连按两下tab键,会列出所有可用的对象、数据类型、事件等。输入global敲一下回车,就会出现一个新行,点击新行里的文字,就会在新窗口里列出
global所有可用的变量、方法等。再加一个点号".",就可以使用tab补全。
small-lookingGlass_autocomplete.png
第二个是Windows,列出所有当前的可见窗口。
small-windows.png
第三第四暂时不说它,就是字面意思。第五个很关键,列出当前系统安装的所有gnome-shell扩展,如果扩展出错的话就在这里显示出来,然后可以到扩展目录里找到脚本文件,搜索出错的语句。
small-extensions.png
就拿一个很流行的例子来练手吧。

代码: 全选

global.get_windows().forEach(function(w){w.set_scale(0.5,0.5)})
据说这样应该可以把所有窗口的长宽各缩小一半,但是如果你的gnome-shell版本比较新的话,这个例子是无法运行的。你可以在控制台输入global,然后敲一下回车。在出现的新行上点一下左键,就是方括号括起来加下划线的文字,代表一个javascript对象,这样可以列出global所有对外开放的方法和属性。什么,没找到get_windows,却看到一个get_window_actors?一怒之下换了,果然成功了!要恢复原样就把后面的数字改成1,1。当然,改成大于1就是放大了,透明度用set_opacity(),需要0-255之间的一个数字作为参数。
左上角那个小图标可以用来选中桌面元素,比如说我在上面点一下,然后移到顶栏,那么顶栏就会出现一个红色的边框,再点一下鼠标,顶栏的相关信息就会输入控制台。类似ShellGenericContainer "panel",意思是属于Shell名字空间中的GenericContainer类,内部ID是panel,大概就是这么个意思。
在lookingGlass的上边有一排菜单,最后一个就是扩展的了。如果你装了扩展的话,在每个扩展列表底下都有一个错误提示,如果出错的话可以到源代码里找一下,然后用lookingGlass的弹出窗口或者tab补全看看问题出在哪。这也是非常好的学习过程。多积累这种跟踪代码的经验,才能真正体现出开源的优势,自己可以在第一时间解决问题,那感觉一定很棒。
二、简洁的界面
我一向认为,学习一个东西最好从可见的元素开始,因为容易调试,也更能激发成就感。总的来说gnome-shell分成两种模式,一种是平常使用的常规意义上的桌面,你可以在桌面添加快捷方式,进行切换窗口等一系列操作。还有一个是活动界面,我的理解就是一个覆盖在常规桌面上的快捷操作层,在这种界面下可以更容易的寻找软件,甚至直接输入软件的前几个字母直接搜索。在这两种模式下,顶栏和下面的通知栏是公用的,在启动活动窗口时活动界面覆盖在桌面上,平时则隐藏起来。gnome-shell的脚本系统主要控制的是顶栏、通知栏和活动界面。
以下是常规界面:
small-desktop.png
以下是活动界面:
small-active.png
三、从lookingGlass访问基本对象
正如以上的例子中显示的,global主要包含一些系统总体的信息,像所有打开的窗体,当前系统时间之类的。访问gnome-shell的界面则要用到Main对象,例如输入Main.panel再敲回车,就得到顶部面板的对象,可以用Tab补全看看面板的主要方法和对象。Main.overview就是大名鼎鼎的活动界面了,里面包含dash(左边的启动面板),viewSelector就是上面的窗口、应用程序那一栏,相当于火狐的tab标签。还有搜索按钮、工作区列表等。
可以参照这个帖子http://forum.ubuntu.org.cn/viewtopic.php?f=94&t=382883,自己用gnome-shell-extension-tool -c生成一个默认的hello world扩展,然后对照一下。
附注:这里有一篇gnome-shell的wiki里面的文章,虽然是英文的,但是应该不难看懂。谁有时间的话可以翻译出来,这方面中文资料太少了,咱们也该急起直追了!
https://live.gnome.org/GnomeShell/Exten ... epTutorial
上次由 zhw2101024 在 2012-08-07 13:44,总共编辑 25 次。
头像
枫叶饭团
论坛版主
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
送出感谢: 1 次
接收感谢: 132 次
联系:

Re: gnome-shell扩展的一点心得(未完待续)

#2

帖子 枫叶饭团 » 2012-08-03 22:48

我只会改点CSS和基本的js。于是我发现放弃gnome shell来得比较方便。。。。
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: gnome-shell扩展的一点心得(未完待续)

#3

帖子 zhw2101024 » 2012-08-04 7:59

枫叶饭团 写了:我只会改点CSS和基本的js。于是我发现放弃gnome shell来得比较方便。。。。
等稳定了以后有文档就方便了,直接一个js语句就控制桌面
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid
送出感谢: 1 次
接收感谢: 23 次

Re: gnome-shell扩展的一点心得(未完待续)

#4

帖子 leeaman » 2012-08-04 11:55

gnome3这个潜力无穷啊,可定制性将来估计不可限量~~~
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: gnome-shell扩展的一点心得(未完待续)

#5

帖子 zhw2101024 » 2012-08-04 12:57

leeaman 写了:gnome3这个潜力无穷啊,可定制性将来估计不可限量~~~
在桌面史上绝对是一个里程碑,javascript会的人不少,也不难学。不像某些要用到一种很少见的脚本语言
头像
到处看看
论坛版主
帖子: 8481
注册时间: 2010-01-17 13:05
系统: ubuntu
送出感谢: 0
接收感谢: 28 次

Re: gnome-shell扩展系统扫盲帖(未完待续)

#6

帖子 到处看看 » 2012-08-07 6:51

:em11
funicorn
帖子: 1131
注册时间: 2005-09-13 4:56
系统: Ubuntu QQ
送出感谢: 0
接收感谢: 47 次

Re: gnome-shell扩展系统扫盲帖(未完待续)

#7

帖子 funicorn » 2012-08-07 10:31

整这些没用,先把gnome-shell的字体渲染做成跟unity一样好再说,看看应用程序里面的那些字,都快糊成一锅粥了
添加ppa后只更新此ppa:
update-ppa()
{ sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}
写入~/.bashrc,source一下,就可以直接用,是不是很方便?觉得方便就按个赞。
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: gnome-shell扩展系统扫盲帖(未完待续)

#8

帖子 zhw2101024 » 2012-08-07 13:07

到处看看 写了::em11
多谢,更有动力写下去了
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: gnome-shell扩展系统扫盲帖(未完待续)

#9

帖子 zhw2101024 » 2012-08-07 13:10

funicorn 写了:整这些没用,先把gnome-shell的字体渲染做成跟unity一样好再说,看看应用程序里面的那些字,都快糊成一锅粥了
字体跟主题一样的性质,众口难调。装了gnome-shell之后就用moc+firefox+vim,听音乐、看电影、写扩展,目前知足了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: gnome-shell扩展系统扫盲帖(未完待续)

#10

帖子 eexpress » 2012-08-07 13:57

javascript和css,加上moc/vim,真够奇葩的。

系统这样搞,不碎片化才怪。
这些用户感谢了作者 eexpress 于这个帖子:
速腾1994 (2012-08-11 15:52)
评价: 3.7%
● 鸣学
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: gnome-shell扩展系统扫盲帖(未完待续)

#11

帖子 zhw2101024 » 2012-08-07 14:31

eexpress 写了:javascript和css,加上moc/vim,真够奇葩的。

系统这样搞,不碎片化才怪。
往主目录的Music文件夹里丢上几十上百首歌,开机后第一件事就是开moc,然后用q退出,就后台运行了,别人想关都关不了。用Linux就是为了随心所欲嘛,像XP那样束手束脚的,就没意思了。扩展都放在单独的一个目录里,什么时候不想要了一删了事,绝对干净无残留。 :em05就是没有布丁特效啊,太想念了
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: gnome-shell扩展系统扫盲帖(未完待续)

#12

帖子 eexpress » 2012-08-07 15:16

随心所欲,是对的。只是碎片化,对lin整个发展,是不好的嘛。
扩展都放在单独的一个目录里,这思路,其实很不喜欢。
● 鸣学
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: gnome-shell扩展系统扫盲帖(未完待续)

#13

帖子 zhw2101024 » 2012-08-07 17:24

eexpress 写了:扩展都放在单独的一个目录里,这思路,其实很不喜欢。
为什么不喜欢呢?愿闻其详
头像
eagle5678
帖子: 1821
注册时间: 2006-07-08 14:07
送出感谢: 14 次
接收感谢: 1 次

Re: gnome-shell扩展系统扫盲帖(未完待续)

#14

帖子 eagle5678 » 2012-08-12 13:12

ee搞个系统吧,哥支持你
头像
eagle5678
帖子: 1821
注册时间: 2006-07-08 14:07
送出感谢: 14 次
接收感谢: 1 次

Re: gnome-shell扩展系统扫盲帖(未完待续)

#15

帖子 eagle5678 » 2012-08-12 13:14

美女与野骚,支持

moc与mpd对cue不感冒,
回复

回到 “桌面特效”