dock




Статус сборки Роль Ansible Последняя версия Качество Ansible Роль Ansible Лицензия на программное обеспечение Коммиты с момента последнего релиза

Роль Ansible: Автоматизация Dock на macOS

Эта роль используется для автоматизации использования 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) Установить dockutil с помощью homebrew.

# Путь к пользовательскому или официальному tap dockutil
dock_dockutil_tap: lotyp/formulae/dockutil # По умолчанию используется tap 3.x

Роль позволяет полностью очистить Dock на macOS:

# Удаляет все содержимое из 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> # Название или идентификатор пакета приложения для замены. Заменяет элемент на заданное название dock или добавляет элемент в конец, если элемент для замены не найден
    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_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

Добавляет 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_dockitems:
  - label: Mail
    action: add
    path: /System/Applications/Mail.app
    replacing: Time Machine

→ Добавление папок

Добавляет папку Downloads в секцию others в меню Dock. При нажатии открывает предварительный просмотр в виде сетки.

dock_dockitems:
  - label: Downloads
    action: add
    path: ~/Downloads
    view: grid
    display: folder
    allhomes: true # необязательный параметр

→ Удаление

Удаляет TextEdit из дока каждого пользователя на этой машине:

dock_dockitems:
  - label: TextEdit
    action: remove
    allhomes: true # необязательный параметр

Удаляет все разделительные плитки:

dock_dockitems:
  - label: spacer-tiles
    action: remove

→ Перемещение

Перемещает System Preferences на вторую позицию в доке каждого пользователя на этой машине:

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 и все зависимости для разработки:

$ make install

Установите только зависимости Python, предполагая, что у вас уже установлен poetry:

$ make install-deps

Установите все git хуки:

$ make hooks

Проверьте все файлы роли:

$ 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

🤝 Лицензия

Лицензия


🙆🏼‍♂️ Информация об авторе

Эта роль была создана в 2022 году lotyp / wayofdev.


🧱 Благодарности и ресурсы

Вдохновлено:


🫡 Участники


🤑 Спонсоры

Разработка и тестирование роли проводились на 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/ansible-role-dock
Лицензия
gpl-3.0
Загрузки
514
Владелец
Making things to build better software