Obsidian 插件延迟启动

测试楼主的方法和 #3 的插件,还是楼主的方法启动快,简单修改也做到了分批启动插件,感谢!

基本配置参 QuickAdd JS & Templater JS 简介及相互修改
“QuickAdd Macro 加载 QuickAdd Capture”。

示例代码,点击展开
let plug2 = [
// 这里写需要启动 2 s 后加载的插件 ID
]
let plug3 = [
// 这里写需要启动 3 s 后加载的插件 ID
]
let plug4 = [
// 以此类推
]
const oStart = async (arr, delaySecond)=>
    setTimeout(async ()=> arr.forEach(async p=> await app.plugins.enablePlugin(p)), delaySecond*1000)
return [2, 3, 4].map(async sec=> await oStart(eval(`plug${sec}`), sec))

可使用楼主的方法提取全部插件 ID。

单独插件 ID 可在库下 .obsidian/plugins/插件文件夹/manifest.json 中找到

image


使用例

image

为配合该代码,添加第二个 QuickAdd:启停插件选单,显示插件现在的状态及对应插件名称。

image

若状态开启,关闭选中的插件;若状态关闭反之。以此快速启停插件。

基本配置参 QuickAdd JS & Templater JS 简介及相互修改“QuickAdd Capture 加载内部代码”。

示例代码
const pin = (arr, x)=> { let pin = arr.indexOf(x); if (pin > -1) { arr.splice(pin, 1); arr.unshift(x) }; return arr }
const on = id=> { app.plugins.enablePlugin(id); new Notice(`open ${obj[id].name}`, 1000) }
const off = id=> { app.plugins.disablePlugin(id); new Notice(`关闭 ${obj[id].name}`, 1000) }; let obj = app.plugins.manifests
let suggest = arr=> this.quickAddApi.suggester(id=> `${app.plugins.plugins[id] ? '已开启' : 'closed'} ${obj[id].name}`, arr)
let id = await suggest(pin(Object.values(obj).map(p=> p.id), 'remember-cursor-position')); if (!id) return; app.plugins.plugins[id] ? off(id) : on(id)

可将最常启停的插件置顶在选单首位,层主置顶的插件 ID 为 'remember-cursor-position'

2 个赞