我一直在问定制GNOME桌面3的布局。 显然,要做到这一点的方法是写一个“扩展”。
我已经成功地做一些我想做的事情,但我觉得完全饿死的信息。 我到处都找不到任何有用的文档。 我就是在浪费生命疯狂谷歌搜索每一个可以想象的搜索词在拼命的整个天找到有用的信息。
GNOME的网站有数百个扩展下载。 这些都不是微不足道的3-衬垫; 他们的代码精密件。 这违背信念,任何人都可以写这些没有证件,说明如何做到这一点。
请,有人可以告诉我哪里有实际的文件是什么? 到目前为止,我已经成功地做到最好是拆开现有扩展试图追查神奇的命令,做具体一点我感兴趣的(不是一件容易的事!)
命令名,对象路径,例如程序, 什么都将是有益的!
我最近挖成它自己。 文档通常是稀疏或过时。 这里有一些来源这让我上手(并通过开发):
- 基本的东西
- 发展基本的东西
- 一步一步的教程(侏儒3.4)
- 许多图书馆的JavaScript绑定非官方文件
- 在gnome-shell的的JavaScript绑定的源
- 圣(壳牌工具包)UI的工具包组件的说明。
- 一些非官方的准则,以获取有关extensions.gnome.org分机
由于文档是几乎不可用(或最新的),你需要做大量的源读取。 我上面的链接(JavaScript的部分),这是一个良好的开端侏儒壳源时潜入未涵盖的所有官方文件的部分(这是你会发现最完整的东西)。
什么也特别有帮助的是检查extensions.gnome.org为其做类似的事情,你想创建,并在他们的来源看(其中大多数是开源GitHub上或到位桶什么的扩展。您也可以安装并找到了下源~/.local/share/gnome-shell/extensions/
)。
当在特定功能寻找的东西,使用或更多的文档,你还可以参考手册不同语言的绑定(以为参数和返回值可能不匹配)。
最后但并非最不重要的,这里是一些调试建议 :
的镜子是不是特别有帮助。 这只能说明一个异常(说明)的一行且仅当它们出现在启动时(当您的分机首次启动)。
对于全踪迹和运行时异常,请参阅~/.xsession-errors
-文件。 这可能是很长,臃肿。 我用这个方便的脚本来阅读:
# Grabs the last session-errors from the current X11 session.
# This includes full Stack-Trace of gnome-shell-extension errors.
# See https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial#lookingGlass
tail -n100 ~/.cache/gdm/session.log | less
请注意 ,由于侏儒3.6,如果您使用gdm
作为显示管理器,当前会话日志文件~/.cache/gdm/session.log
。
在使用systemd一些较新的发行版,你可以得到错误日志有:
journalctl -f /usr/bin/gnome-session
为了调试扩展的首选项部分 ,您可以通过使用启动偏好gnome-shell-extension-prefs
从终端-工具,以在控制台上看到任何异常输出(您也可以拨打像工具gnome-shell-extension-prefs [uuid]
直接显示您的扩展喜好)。
由于目前使用断点调试的没有真正的方法(有,但它是棘手的 ),您可以登录控制台进行快速检查,请使用print()
-函数。 你会看到输出如上所述(无论是开始时在会话错误文件或在终端上gnome-shell-extension-prefs
-工具)。
虽然这可能是一个有点难以进入它的扩展框架是相当强大的。 玩得开心 !
我写了一篇博客,用后比较详细 ,可以在这里找到: 制作侏儒外壳扩展
一个广泛引用的名单可以在上找到API参考-侏儒开发者页面。
我用我的推广下,但你的使用可能会有所不同:
GTK + 3
GTK +是用于构建GNOME应用程序用户界面的主库。 它提供了用户界面控件和信号回调来控制用户界面。
GDK 3
GDK是从窗口系统的细节隔离GTK +的中间层。
杂波
杂波是一个用于创建快速,视觉效果丰富的图形用户界面GObject的基础库。
GObject的自省
GObject的自省正在努力提供(GObject的基于)C库和语言绑定之间的中间件层。
贝壳
Shell参考手册
圣
圣- 壳牌工具包 -是GNOME Shell的基于杂波的自定义工具,定义有用的角色。 一些演员,比如StBoxLayout
和StBin
实现各种布局选项。
图标主题规范
此freedesktop.org规范描述了存储图标主题的常用方法。
注意:这些最后两个是在寻找视觉元素的参数非常有帮助!
PyGTK的
PyGTK是用于Python的GTK +。 该参考文献包含每个的Python PyGTK的模块的一章(其对应于底层GTK +库)含有类描述。
PyGObject
PyGObject是一个Python扩展模块,它提供了通过使用GObject的反省的干净和一致的访问整个GNOME软件平台。 具体地讲,它是Python绑定GLib和GObject的,GIO和GTK +。
该参考文献包含用于容纳所述类描述每个PyGObject模块的一章。