wayofdev.dock




构建状态 Ansible 角色 最新版本 Ansible 质量评分 Ansible 角色 软件许可证 自上次发布以来的提交次数

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 中。


🧩 兼容性

此角色已在以下系统上进行测试:

系统 / 容器 标签
macos monterey
macos big-sur

🤝 许可证

许可证


🙆🏼‍♂️ 作者信息

此角色是由 lotyp / wayofdev2022 年创建的。


🧱 致谢与资源

灵感来源于:


🫡 贡献者


🤑 赞助商

角色的开发和测试是在 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
许可证
gpl-3.0
下载
756
拥有者
Making things to build better software