我想这是一个相关的问题我可以在 Unity 中使用 GNOME 小程序吗?(由@的建议移动豪尔赫·卡斯特罗)
我想stickynotes_applet
在 Unity 中使用它。现在在 Gnome 中,这个小程序被添加到一个栏中,然后我必须单击它来创建一个新的注释,并且我可以调用首选项让注释粘贴在桌面上 - 这就是我所需要的。
显然,正如这里提到的,不可能在 Unity 中直接使用这个小程序;但基本上,我需要做的就是打开“首选项”窗口(以便使注释保留下来),并以某种方式发出新注释的命令(否则可以通过单击 Gnome 栏中的小程序图标来执行)。
我尝试运行“ /usr/lib/gnome-applets/stickynotes_applet
”,并且似乎它运行了,但是没有显示小程序图标(这是预料之中的),也没有显示任何其他窗口(我希望会显示:))。
所以我很好奇——鉴于这个小程序似乎没有任何与桌面相关的特殊功能——是否有命令行基本上运行此小程序的方法,向其发出“显示首选项”命令,并在 Unity 环境中向其发出新注释命令(目前我可以tomboy
从命令行调用并且它可以工作 - 但它的窗口对我来说太笨重了)?
(附加问题 - 如何仅从经典 Gnome 中的命令行启动小程序相关窗口?)
桌面集成对我来说并不那么重要 - 我很乐意从命令行手动运行它,只要我得到保留在桌面上的小而紧凑的笔记(只要该过程处于活动状态)..
谢谢您的任何评论,
干杯!
答案1
你可以用一个小的 gnome-panel 来运行你的小程序。参见如何在 Unity 中使用 GNOME 面板?
答案2
我又回到了这个问题(仍然在 Natty 上);所以我想发布我的结果。
首先,我开始查找是否可以从命令行和在单独的窗口中运行 Gnome 小程序 - 事实证明,这是一种调试 Python 小程序的技术;
- 首先我偶然发现了这个:Zaur Nasibov 的 Python 创建 GNOME 小程序初学者指南(第一部分)
- 然后我开始打补丁
invest-applet
(用 Python 编写),以便它再次在 Natty 上运行;补丁可以在错误 #775387 “升级到 Natty 后 Invest-applet 无法启动...”:错误:“gnome-applets” 包:Ubuntu - 最后,我开发了一个 Python 脚本,它
invest-applet
在从命令行调用时实例化一个对象,并将其放在自己的窗口中 - 这恰好在 Unity 中起作用:
这是脚本:
import sys
import gtk
import pygtk
pygtk.require('2.0')
# sudo apt-get install python-gnomeapplet
import gnomeapplet
import CORBA # must have import gnomeapplet before!
import bonobo
import bonobo.ui
import bonobo.activation
bcontrol = bonobo.activation.activate_from_id('OAFIID:Invest_Applet', 0, False)
win = bonobo.ui.Window("foo", "FOOOOO")
buiwid = bonobo.ui.widget_new_control_from_objref(bcontrol, win.get_ui_container().corba_objref())
win.set_contents(buiwid)
win.show_all()
win.connect("destroy", lambda x: sys.exit(0))
bonobo.ui.main()
... 扩展脚本(带有调试输出和大量混乱的注释)位于gtk_bonobo_applet_widget.py。
这是确切地我想要的,起初,我认为它适用于所有小程序 - 至少在 Natty 中(以及它们之中stickynotes
);但可惜的是,不:
现在,Natty 有点特殊,因为它是最后一个 Gnome 2 Ubuntu - 但是,它也具有(第一个)Unity。例如:
- 一些小程序基于(或公开)
bonobo
/CORBA
接口(在 Python 中,通过gnomeapplet
);那些像invest-applet
或 这样的小程序brightness-applet
可以使用上述技术在自己的窗口中显示 - 并且可以通过libbonobo2-bin
工具进行查询(如activation-client
) - 其他小程序,例如
stickynotes
,已迁移至 GSettings/DBUS 基础(接口)
事实上,在 Natty 发布前不久,stickynotes
从 迁移bonobo
到dbus
移植到新的 libpanel-applet API);通过将宏替换PANEL_APPLET_BONOBO_FACTORY
为 ,这一点显而易见。可以说,如果一个人根据PANEL_APPLET_OUT_PROCESS_FACTORY
检出最新的修订版并构建它 - 一个人也应该能够使用上述技术在单独的窗口中实例化小程序,并从那里运行它,即使没有。stickynotes
bonobo
gnome-panel
否则我会相信,全部小程序(或者说小程序开发框架)应该具有在单独的窗口中运行的能力 - 如果不是出于其他原因,那么是为了在开发过程中方便调试小程序。并且考虑到一些小程序具有在单独的窗口中运行的命令行开关(上面的“初学者指南”和 都invest-applet
具有此类开关) - 我希望也许stickynotes
也有这样的命令行参数;但是,我确实通过了它的源文件 - 可惜,我找不到任何关于命令行选项的提及。
但后来,我想知道 - 为什么要进行迁移?嗯,这是因为bonobo
它(或者更确切地说,已经)被弃用了一段时间:
AppletsDbusMigration - GNOME Live!:(2009年)
Gnome Panel 最近放弃了 libbonobo 依赖(参见错误 #572131)。
gnome-devel-list 邮件列表 - 什么将取代 bonobo?(2009年)
Dbus 并不是 bonobo 的直接替代品。没有确切的 bonobo 替代品。...
但是
,bonobo 的主要用例,即在一个应用程序中嵌入另一个应用程序(例如 gnumeric 中的扫雷程序,或者(稍微有用一点的)gnumeric 中的 dia 图),并没有得到广泛使用。
gnome-components 邮件列表‘回复:什么将取代 bonobo?’(2005 年)
> 关于 DBUS,很难说它有一天会成为替代品。
> 第一个问题是它不是组件系统,只是消息传递 API。
相信我,肯定有计划实现某种 IDL 编译器,以在 D-BUS 消息之上模仿 CORBA 样式的 RPC。这迟早会发生。
好吧,我自己认为,“将一个应用程序嵌入另一个应用程序”在这种情况下非常有用 - 在 Unity 中运行(至少一些)小程序,并删除对它们的支持:)
当然,这是 Natty 中桌面包的“幸运”安排,允许这样做(假设它仍然是 Gnome 2 并且仍然有库bonobo
) - 显然,基于 Gnome 3 的后续版本已被bonobo
完全删除 - 并且上述 Python 脚本在窗口中实例化技术肯定不会在那里工作:/
最后一个问题是——我们是否可以类似地使用 Python 脚本,但带有绑定dbus
,来实现与上述bonobo
脚本类似的功能?
我最接近的是用脚本gtk_dbus_applet_widget.py但是,该脚本不会在窗口中显示小程序 - 甚至无法将小程序添加到栏中!它唯一能做的就是通过与小程序“工厂”对话dbus
,并指示它创建一个小程序;但这个小程序仍然只是文件系统上某个位置的数据(并且它持续跨越重启!),并且从未被实例化为 Gnome 小部件...并且鉴于上述评论,我怀疑目前(至少在 Natty 上)是否可能发生这样的事情dbus
。
总之 - 我想这一点,以及gnome-panel
技术,穷尽了在 Natty 中轻率地运行 Unity 下的小程序的可能性。
答案3
犀牛有键盘快捷键
答案4
对于那些仍在寻找类似、方便且支持注释类别功能的人来说,有指示便签。
安装:
sudo add-apt-repository ppa:umang/indicator-stickynotes
sudo apt-get update
sudo apt-get install indicator-stickynotes
希望它能有所帮助...享受吧!