wayofdev.dock




Estado de construcción Rol de Ansible Última Versión Puntuación de Calidad de Ansible Rol de Ansible Licencia del Software Commits desde la última versión

Rol de Ansible: Automatización del Dock de macOS

Este rol se utiliza para automatizar el uso de dockutil, una herramienta de línea de comandos para gestionar elementos en el Dock. Puedes añadir, eliminar y reorganizar elementos del Dock.

Si te gusta/utilizas este rol, please considera darle una estrella. ¡Gracias!


🗂 Tabla de contenidos


⭐️ Beneficios de este rol:

  • Esta versión es compatible con la última versión 3.x de dockutil
  • Los elementos se añaden, posicionan y eliminan en un solo comando en lugar de bucles
  • Soporte para la última versión de macOS Monterey
  • Permite eliminar todos los elementos del Dock con una sola configuración
  • No necesita controladores de Ansible ni derechos de sudo para hacer killall y reiniciar el Dock, ya que esto lo maneja dockutil por sí mismo.
  • Soporta todas las opciones de dockutil, como: --add, --remove, --move, --replacing, --position, --after, --before, --section, --allhomes, --sort, --display, --view

📑 Requisitos

  • Homebrew: Necesita homebrew ya instalado (puedes usar wayofdev.homebrew para instalarlo en tu macOS).
  • Versión actualizada de Ansible. Durante el mantenimiento/desarrollo, nos adherimos a las versiones de Ansible y utilizaremos nuevas funciones si están disponibles (y actualizaremos meta/main.yml para la versión mínima).
  • Sistema operativo compatible. Consulta la tabla de compatibilidad.
  • El rol tiene dependencias en roles de terceros en diferentes sistemas operativos. Ver requirements.yml y la sección de dependencias.

🔧 Variables de rol

Esta sección muestra todas las variantes posibles para añadir, mover, reemplazar y eliminar aplicaciones, separadores y carpetas. Las variables disponibles se enumeran a continuación, junto con valores de ejemplo (ver defaults/main.yml):


→ Estructura

Este grupo controla la instalación de dockutil y permite seleccionar un tap personalizado:

# ¿Deberíamos intentar instalar dockutil?
dock_dockutil_install: <true | false> # (predeterminado: true) Instalar dockutil usando homebrew.

# Ruta al tap personalizado o oficial de dockutil
dock_dockutil_tap: lotyp/formulae/dockutil # Por defecto, se utiliza el tap 3.x

El rol permite borrar completamente el dock de macOS:

# Elimina todo el contenido del dock, incluida la sección "otros" con la carpeta de Descargas.
# Prefiere esta opción en nuevas instalaciones junto con "dockitems" configurados.
dock_dockitems_erase_all: <true | false> # Si se debe intentar borrar todos los elementos en el Dock, incluida la carpeta de Descargas. (predeterminado: false)

Estructura de la variable para añadir, mover o eliminar elementos en el Dock:

dock_dockitems:
  - label: <label> # Usado en la búsqueda de elementos existentes o nombra nuevas aplicaciones
    action: <add | remove | move>
    path: <label | app bundle id | path | url> # Ejemplo: /System/Applications/TextEdit.app
    replacing: <label | app bundle id | path | url> # Etiqueta o Id de paquete de la aplicación a reemplazar. Reemplaza el elemento con la etiqueta de dock dada o añade el elemento al final si el elemento a reemplazar no se encuentra.
    position: <[+/-]index_number | beginning | end | middle> # Inserta el elemento en una posición fija: se puede posicionar por número de índice o palabra clave.
    after: <label | application bundle id> # Inserta el elemento inmediatamente después de la etiqueta del dock dada o al final si el elemento no se encuentra.
    before: <label | application bundle id> # Inserta el elemento inmediatamente antes de la etiqueta del dock dada o al final si el elemento no se encuentra.
    section: <apps | others> # Especifica si el elemento debe ser agregado a la sección de aplicaciones o de otros.
    display: <folder | stack> # Opción de visualización de carpeta al añadir una carpeta.
    sort: <name | dateadded | datemodified | datecreated | kind> # Opción de ordenación de carpetas al añadir una carpeta.
    type: <spacer | small-spacer | flex-spacer> # Especifica un tipo de tile personalizado para añadir separadores.
    allhomes: <true | false> # Si se debe intentar localizar todos los directorios de inicio y realizar la operación en cada uno de ellos (predeterminado: false).

→ Añadir

Añade TextEdit.app al final del Dock del usuario actual:

dock_dockitems:
  - label: TextEdit
    action: add
    path: /System/Applications/TextEdit.app

Añade Time Machine.app al medio del Dock:

dock_dockitems:
  - label: Time Machine
    action: add
    path: /System/Applications/Time Machine.app
    position: middle

Añade TextEdit.app después del ítem Time Machine.app en el Dock de todos los usuarios en esa máquina:

dock_dockitems:
  - label: TextEdit
    action: add
    path: /System/Applications/TextEdit.app
    after: Time Machine
    allhomes: true # parámetro opcional

→ Añadir con Reemplazo

Reemplaza Time Machine.app con Mail.app en el Dock del usuario actual:

dock_dockitems:
  - label: Mail
    action: add
    path: /System/Applications/Mail.app
    replacing: Time Machine

→ Añadir carpetas

Añade la carpeta Descargas a la sección de otros del menú del Dock. Al hacer clic se abrirá una vista en modo cuadrícula.

dock_dockitems:
  - label: Descargas
    action: add
    path: ~/Downloads
    view: grid
    display: folder
    allhomes: true # parámetro opcional

→ Eliminar

Elimina TextEdit en el Dock de todos los usuarios en esa máquina:

dock_dockitems:
  - label: TextEdit
    action: remove
    allhomes: true # parámetro opcional

Elimina todos los tiles de separadores:

dock_dockitems:
  - label: spacer-tiles
    action: remove

→ Mover

Mueve Preferencias del Sistema al segundo espacio en el Dock de todos los usuarios en esa máquina:

dock_dockitems:
  - label: Preferencias del Sistema
    action: move
    position: end # <[+/-]index_number | beginning | end | middle>
    allhomes: true # parámetro opcional

📗 Ejemplo de Playbook

---
- hosts: all

  # es necesario al ejecutar a través de SSH
  environment:
    - PATH: "/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:{{ ansible_env.PATH }}"

  vars:
    dock_dockitems_erase_all: true
    dock_dockitems:
      - label: Mensajes
        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

⚙️ Desarrollo

Para instalar dependencias y comenzar el desarrollo, puedes consultar el contenido de nuestro Makefile.

Instalar poetry usando poetry-bin y todas las dependencias de desarrollo de python:

$ make install

Instalar solo dependencias de python, asumiendo que ya tienes poetry:

$ make install-deps

Instalar todos los ganchos Git:

$ make hooks

Verificar todos los archivos del rol:

$ make lint

🧪 Pruebas

Puedes consultar el Makefile para obtener la lista completa de comandos para pruebas remotas y locales. Para pruebas locales, puedes usar estos comandos para probar todo el rol o tareas separadas:

→ en localhost

:warning: Nota: Por defecto, todas las pruebas se ejecutan en tu máquina local.

# ejecutar pruebas de molecule en localhost
$ poetry run molecule test --scenario-name defaults-restored-on-localhost -- -vvv

# o con el comando make
$ make m-local

# elige qué etiquetas serán incluidas
$ export TASK_TAGS="dock-validate,dock-install"; make m-local

→ a través de SSH

# ejecutar escenarios de molecule contra máquinas remotas a través de SSH
# esto necesita configuración y setup de VM
$ poetry run molecule test --scenario-name defaults-restored-over-ssh -- -vvv

$ make m-remote

# las etiquetas también se pueden pasar
$ export TASK_TAGS="dock-validate,dock-install"
$ make m-remote

📦 Dependencias

La instalación es gestionada por Makefile y los requisitos están definidos en requirements.yml


🧩 Compatibilidad

Este rol ha sido probado en los siguientes sistemas:

sistema / contenedor etiqueta
macos monterey
macos big-sur

🤝 Licencia

Licencia


🙆🏼‍♂️ Información del autor

Este rol fue creado en 2022 por lotyp / wayofdev.


🧱 Créditos y Recursos

Inspirado por:


🫡 Contribuidores


🤑 Patrocinadores

El desarrollo y las pruebas del rol se realizaron en Parallels Desktop Pro Edition, gracias a Parallels

Acerca del proyecto

Role is used to automate use of "dockutil" – command line tool for managing dock items. You can add, remove and re-arrange Dock items.

Instalar
ansible-galaxy install wayofdev.dock
Licencia
gpl-3.0
Descargas
756
Propietario
Making things to build better software