是否可以从仪表板小部件中创建新的小部件实例?

Posted

技术标签:

【中文标题】是否可以从仪表板小部件中创建新的小部件实例?【英文标题】:Is it possible to create new widget instances from within a Dashboard widget? 【发布时间】:2010-11-04 20:42:12 【问题描述】:

这是question的后续。 简单地保留已配置的仪表板小部件实例似乎是不可能的。另一种方法是重新创建以前的实例。

是否可以从另一个小部件中创建新的仪表板小部件实例?我还没有找到关于这个主题的任何信息。

【问题讨论】:

【参考方案1】:

这是可能的,但我不知道如何。交付状态小部件允许您打开其自身的新副本。你可以在help image的截图中看到+号。

【讨论】:

这很有趣。他们正在创建这样的实例: if (widget.system('open -b com.apple.dock ~/Library/Widgets/"Delivery Status.wdgt"',null).status) widget.system('open -b com.apple.dock /Library/Widgets/"Delivery Status.wdgt"',null).status;【参考方案2】:

我会怀疑...我认为这存在隐含的安全风险。

查看 Apple 的代码可能会为您提供最好的服务。当您“更新”一个小部件时,您是更改标识符还是自动擦除首选项? (原谅我的无知 - 我不在我的 Mac 上,所以我无法调查自己)

不过,除此之外,您可能还想在 'flow 或 Apple 论坛上查找“被更新擦除的仪表板小部件首选项”。电子邮件列表特别有用。

【讨论】:

【参考方案3】:

AFAIK 不可能以任何受支持的方式(Apple 的文档中没有提到它,Dashboard 没有 AppleScript 字典)。

但是,由于 Widget 可以访问文件系统并执行命令,因此可以破解它:修改 com.apple.dashboard.plist 并使用 killall Dock 重新启动 Dashboard(显然这不是优雅的解决方案)。

【讨论】:

【参考方案4】:

我想也许您可以使用widget.system 调用小部件捆绑包上的open 命令并打开一个新副本,所以我将a simple widget 放在一起进行测试。不行。

不过,我想知道,Objective-C 插件是否会更强大,或者这是否是 Dashboard 环境中的一个限制?

【讨论】:

【参考方案5】:

嗯,这在早期版本的 OS X 中是可能的。在我制作的小部件中,我使用以下代码创建了一个新实例:

widget.system('/bin/sh -c "open `pwd`"', null);

不过,现在这段代码会重新安装小部件。

【讨论】:

【参考方案6】:

这是不可能的。我之前也试过。

【讨论】:

以上是关于是否可以从仪表板小部件中创建新的小部件实例?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:有状态的小部件不更新

Azure 仪表板可以动态添加小部件吗?

您将如何在仪表板上订购瓷砖?

如何在 WordPress 中创建自定义可拖动小部件

入口组件的 Angular 注册表

散景仪表板布局;小部件布局不显示