automation - Applescript 从码头中删除项目
问题描述
我正在尝试从扩展坞中移除(所有)物品。我可以按名称删除它们,如下所示:
tell application "System Events"
tell UI element "Launchpad" of list 1 of process "Dock"
perform action "AXShowMenu"
click menu item "Remove from Dock" of menu 1
end tell
end tell
但我想提取当前项目的列表并对其进行迭代。 这个堆栈溢出问题似乎涵盖了如何获取列表。我想做的是调整上面的代码以在循环内运行。我猜想在循环内引用列表的当前项目将使用“thisRecord”完成。我想我误解了如何将“thisRecord”转换为我可以在系统事件中引用的东西。
set plistpath to (path to preferences folder as text) & "com.apple.dock.plist"
tell application "System Events"
set plistContents to contents of property list file plistpath
set pListItems to value of plistContents
end tell
set persistentAppsList to |persistent-apps| of pListItems
set dockAppsList to {}
repeat with thisRecord in persistentAppsList
set end of dockAppsList to |file-label| of |tile-data| of thisRecord
tell application "System Events"
tell UI element application thisRecord
perform action "AXShowMenu"
click menu item "Remove from Dock" of menu 1
end tell
end tell
end repeat
解决方案
作为替代方案......这是一种更直接的方法来删除文件键中找到的Dock上的持久应用程序:persistent-apps
com.apple.dock.plist
在Terminal中,首先备份目标文件:
cd ~/Library/Preferences
cp -a com.apple.dock.plist com.apple.dock.plist.bak
现在要删除持久应用程序,请使用以下复合命令:
defaults delete com.apple.dock persistent-apps; killall Dock
如果以后要恢复备份,请使用以下复合命令:
cd ~/Library/Preferences; rm com.apple.dock.plist; cp -a com.apple.dock.plist.bak com.apple.dock.plist; killall Dock
如果出于某种原因您需要使用AppleScript执行此操作,您可以使用该do shell script
命令来运行这些shell 命令。
注意:在您的 OP 中,您说“我正在尝试从扩展坞中移除(所有)项目”。并且您提供的代码仅关注存储在persistent-apps
key下的应用程序。Dock上还可以显示其他项目,第一个是 default ,其中包含Downloads堆栈和您添加到该部分的其他项目。然后使用macOS Mojave在Dock上的上述两个部分(按键名)之间显示。同样的前提也可以用在这些键上,在persistent-others
recent-apps
persistent-others
recent-apps
persistent-apps
defaults delete ...
复合命令。
推荐阅读
- python - IndexError:从for循环为元组分配值时列表索引超出范围
- azure - 将参数绑定到复杂对象的 Azure-Function eventthub 触发器问题
- json - 如何在 Spring Boot 中使用 JSON 数组创建过滤器
- jquery - 选中时隐藏复选框
- php - Windows 任务计划程序上次运行结果 0xff
- javascript - 在 JS 中生成 csv 并使用 ajax 请求 POST 将其发送到烧瓶
- c++ - 为什么clang-format在getter大括号之前不中断?
- java - JAXB内部实现接口com.sun.xml.bind.namespacePrefixMapper的Classloader问题
- sql-server - 与 sum 和小于的内连接
- javascript - 如何将 URL 的第一部分设置为 HTML 链接中的 JavaScript 变量