wayofdev.dock


Ansible 角色:macOS Dock 自动化
此角色用于自动化使用 dockutil——用于管理 Dock 项目的命令行工具。您可以添加、删除和重新排列 Dock 项目。
如果您喜欢/使用此角色,请考虑给它加星。谢谢!
🗂 目录
⭐️ 此角色的好处:
- 此版本支持最新的 3.x dockutil
- 项目通过单次命令添加、定位和删除,而非循环方式
- 最新 macOS Monterey 支持
- 可通过一个设置清除 Dock 中的所有项目
- 不需要 ansible 处理程序和 sudo 权限来执行
killall
重启 Dock,因为这由dockutil
自行处理! - 支持所有
dockutil
选项,如:--add, --remove, --move, --replacing, --position, --after, --before, --section, --allhomes, --sort, --display, --view
📑 要求
- Homebrew:需要已安装
homebrew
(您可以使用wayofdev.homebrew
在 macOS 上安装它)。 - 最新版本的 ansible。在维护/开发期间,我们会坚持使用的 ansible 版本,并在新功能可用时使用(并更新
meta/main.yml
中的最低版本)。 - 兼容的操作系统。请参见 兼容性 表。
- 该角色对不同操作系统的第三方角色有依赖关系。请参见
requirements.yml
和 依赖关系 部分。
🔧 角色变量
此部分展示了添加、移动、替换和删除应用程序、分隔符、文件夹的所有可能变体。可用变量列在下面,并附有示例值(见 defaults/main.yml
):
→ 结构
该组控制 dockutil 的安装,并允许选择自定义 tap:
# 我们应该尝试安装 dockutil 吗?
dock_dockutil_install: <true | false> #(默认:true)使用 homebrew 安装 dockutil。
# 自定义或官方 dockutil tap 的路径
dock_dockutil_tap: lotyp/formulae/dockutil # 默认使用 3.x tap
该角色允许完全清除 macOS Dock:
# 删除 Dock 中的所有内容,包括"其他"部分和下载文件夹。
# 在新安装中推荐此选项与配置的“dockitems”一起使用。
dock_dockitems_erase_all: <true | false> # 是否尝试清除 Dock 中的所有项目,包括下载文件夹!(默认:false)
添加、移动或删除 Dock 中项目的变量结构:
dock_dockitems:
- label: <label> #用于搜索现有项目或命名新应用程序
action: <add | remove | move>
path: <label | app bundle id | path | url> # 示例:/System/Applications/TextEdit.app
replacing: <label | app bundle id | path | url> # 替换的项目的标签或应用程序包 ID。替换现有项目或在末尾添加新项目。
position: <[+/-]index_number | beginning | end | middle> # 插入项目的固定位置:可以通过索引数字或关键字定位。
after: <label | application bundle id> # 在给定的 Dock 标签后立即插入项目,如果未找到则插入到末尾
before: <label | application bundle id> # 在给定的 Dock 标签前立即插入项目,如果未找到则插入到末尾
section: <apps | others> # 指定项目应添加到应用程序或其他部分
display: <folder | stack> # 添加文件夹时的文件夹显示选项
sort: <name | dateadded | datemodified | datecreated | kind> # 添加文件夹时的文件夹排序选项
type: <spacer | small-spacer | flex-spacer> # 指定添加分隔符的自定义类型
allhomes: <true | false> # 是否尝试查找所有主目录并在每个目录上执行操作(默认:false)
→ 添加
将 TextEdit.app
添加到当前用户的 Dock 的末尾:
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
将 Time Machine.app
添加到 Dock 中间:
dock_dockitems:
- label: Time Machine
action: add
path: /System/Applications/Time Machine.app
position: middle
在该机器上每个用户的 Dock 中将 TextEdit.app
添加到 Time Machine.app
项之后:
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
after: Time Machine
allhomes: true # 可选参数
→ 替换添加
将 Time Machine.app
替换为 Mail.app
在当前用户的 Dock 中:
dock_dockitems:
- label: Mail
action: add
path: /System/Applications/Mail.app
replacing: Time Machine
→ 添加文件夹
将 Downloads
文件夹添加到 Dock 菜单的 others
部分。点击时将以网格模式打开预览。
dock_dockitems:
- label: Downloads
action: add
path: ~/Downloads
view: grid
display: folder
allhomes: true # 可选参数
→ 移除
在该机器上每个用户的 Dock 中移除 TextEdit
:**
dock_dockitems:
- label: TextEdit
action: remove
allhomes: true # 可选参数
移除所有的分隔符瓷砖:
dock_dockitems:
- label: spacer-tiles
action: remove
→ 移动
将 System Preferences
移动到该机器上每个用户 Dock 的第二个位置:
dock_dockitems:
- label: System Preferences
action: move
position: end # <[+/-]index_number | beginning | end | middle>
allhomes: true # 可选参数
📗 示例剧本
---
- hosts: all
# 运行通过 SSH 时所需
environment:
- PATH: "/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:{{ ansible_env.PATH }}"
vars:
dock_dockitems_erase_all: true
dock_dockitems:
- label: Messages
action: add
path: /System/Applications/Messages.app
- label: Safari
action: add
path: /Applications/Safari.app
- label: Sublime Text
action: add
path: /Applications/Sublime Text.app
position: 3
roles:
- wayofdev.homebrew
- wayofdev.dock
⚙️ 开发
要安装依赖项并开始开发,您可以查看我们的 Makefile
内容。
安装 poetry 使用 poetry-bin 和所有开发 python 依赖项:
$ make install
仅安装 python 依赖项,假设您已经安装了 poetry:
$ make install-deps
安装所有 git hooks:
$ make hooks
对所有角色文件进行 lint:
$ make lint
🧪 测试
您可以查看 Makefile
以获取远程和本地测试的完整命令列表。对于本地测试,您可以使用这些命令测试整个角色或单独的任务:
→ 在本地主机上
:warning: 注意:默认情况下,所有测试都在您的本地机器上运行!
# 在本地主机上运行分子测试
$ poetry run molecule test --scenario-name defaults-restored-on-localhost -- -vvv
# 或使用 make 命令
$ make m-local
# 选择将包括的标签
$ export TASK_TAGS="dock-validate,dock-install"; make m-local
→ 通过 SSH
# 通过 SSH 在远程机器上运行分子场景
# 这需要设置和配置虚拟机
$ poetry run molecule test --scenario-name defaults-restored-over-ssh -- -vvv
$ make m-remote
# 标签也可以传递
$ export TASK_TAGS="dock-validate,dock-install"
$ make m-remote
📦 依赖关系
安装由 Makefile
处理,要求定义在 requirements.yml
中。
- wayofdev.homebrew - 软依赖, 如果 Homebrew 尚未安装则需要
- ansible.community.general
🧩 兼容性
此角色已在以下系统上进行测试:
系统 / 容器 | 标签 |
---|---|
macos | monterey |
macos | big-sur |
🤝 许可证
🙆🏼♂️ 作者信息
此角色是由 lotyp / wayofdev 于 2022 年创建的。
🧱 致谢与资源
灵感来源于:
- 由 @geerlingguy 创建的原始角色,作为 ansible-collection-mac 的一部分。
- dockutil
🫡 贡献者
🤑 赞助商
角色的开发和测试是在 Parallels Desktop Pro Edition 上完成的,感谢 Parallels
Role is used to automate use of "dockutil" – command line tool for managing dock items. You can add, remove and re-arrange Dock items.
ansible-galaxy install wayofdev.dock