wayofdev.dock


Rôle Ansible : Automatisation du Dock macOS
Ce rôle est utilisé pour automatiser l'utilisation de dockutil, un outil en ligne de commande pour gérer les éléments du Dock. Vous pouvez ajouter, supprimer et réorganiser les éléments du Dock.
Si vous aimez/utilisez ce rôle, merci de le star. Merci !
🗂 Table des matières
- Avantages de ce rôle
- Exigences
- Variables du rôle
- Exemple de Playbook
- Développement
- Tests
- Dépendances
- Compatibilité
- Licence
- Informations sur l'auteur
- Crédits et ressources
- Contributeurs
- Sponsors
⭐️ Avantages de ce rôle :
- Cette version prend en charge la dernière version 3.x de dockutil
- Les éléments sont ajoutés, positionnés et supprimés en une seule commande au lieu de boucles
- Prise en charge de la dernière version de macOS Monterey
- Peut effacer tous les éléments contenus dans le Dock avec un seul paramètre
- Pas besoin de gestionnaires Ansible et de droits sudo pour faire
killall
pour redémarrer le Dock, car c'est géré pardockutil
lui-même ! - Prend en charge toutes les options de
dockutil
, comme :--add, --remove, --move, --replacing, --position, --after, --before, --section, --allhomes, --sort, --display, --view
📑 Exigences
- Homebrew : Nécessite
homebrew
déjà installé (vous pouvez utiliserwayofdev.homebrew
pour l'installer sur votre macOS). - Version à jour d'Ansible. Pendant la maintenance/développement, nous nous en tenons aux versions d'Ansible et utiliserons de nouvelles fonctionnalités si elles sont disponibles (et mettrons à jour
meta/main.yml
pour la version minimale). - Système d'exploitation compatible. Consultez le tableau compatibilité.
- Le rôle a des dépendances sur des rôles tiers pour différents systèmes d'exploitation. Voir
requirements.yml
et la section dépendances.
🔧 Variables du rôle
Cette section montre toutes les variantes possibles pour ajouter, déplacer, remplacer et supprimer des applications, des séparateurs et des dossiers. Les variables disponibles sont listées ci-dessous avec des valeurs d'exemple (voir defaults/main.yml
) :
→ Structure
Ce groupe contrôle l'installation de dockutil et permet de sélectionner un dépôt personnalisé :
# Devons-nous essayer d'installer dockutil ?
dock_dockutil_install: <true | false> # (par défaut : true) Installer dockutil via homebrew.
# Chemin vers un dépôt personnalisé ou officiel de dockutil
dock_dockutil_tap: lotyp/formulae/dockutil # Par défaut, le dépôt 3.x est utilisé
Le rôle permet d'effacer complètement le Dock macOS :
# Supprime tout le contenu du Dock, y compris la section "autres" avec le dossier Téléchargements.
# Préférez cette option lors des nouvelles installations avec les "dockitems" configurés.
dock_dockitems_erase_all: <true | false> # Voulez-vous tenter d'effacer tous les éléments du Dock, y compris le dossier Téléchargements ? (par défaut : false)
Structure des variables pour ajouter, déplacer ou supprimer des éléments dans le Dock :
dock_dockitems:
- label: <label> # Utilisé pour rechercher des éléments existants ou nommer de nouvelles applications
action: <add | remove | move>
path: <label | id de bundle d'application | chemin | url> # Exemple : /System/Applications/TextEdit.app
replacing: <label | id de bundle d'application | chemin | url> # Label ou id de bundle de l'élément à remplacer. Remplace l'élément par le label du dock donné ou ajoute l'élément à la fin si l'élément à remplacer n'est pas trouvé.
position: <[+/-]index_number | beginning | end | middle> # Insère l'élément à une position fixe : peut être positionné par numéro d'index ou mot clé.
after: <label | id de bundle d'application> # Insère l'élément immédiatement après le label donné ou à la fin si l'élément n'est pas trouvé.
before: <label | id de bundle d'application> # Insère l'élément immédiatement avant le label donné ou à la fin si l'élément n'est pas trouvé.
section: <apps | others> # Spécifie si l'élément doit être ajouté à la section des applications ou des autres.
display: <folder | stack> # Option d'affichage de dossier lors de l'ajout d'un dossier
sort: <name | dateadded | datemodified | datecreated | kind> # Option de tri de dossier lors de l'ajout d'un dossier
type: <spacer | small-spacer | flex-spacer> # Spécifier un type de tuile personnalisé pour ajouter des séparateurs
allhomes: <true | false> # Voulez-vous tenter de localiser tous les répertoires personnels et d'effectuer l'opération sur chacun d'eux ? (par défaut : false)
→ Ajout
Ajoute TextEdit.app
à la fin du Dock de l'utilisateur actuel :
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
Ajoute Time Machine.app
au milieu du Dock :
dock_dockitems:
- label: Time Machine
action: add
path: /System/Applications/Time Machine.app
position: middle
Ajoute TextEdit.app
après l'élément Time Machine.app
dans le Dock de tous les utilisateurs de cette machine :
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
after: Time Machine
allhomes: true # paramètre optionnel
→ Ajout avec Remplacement
Remplace Time Machine.app
par Mail.app
dans le Dock de l'utilisateur actuel.
dock_dockitems:
- label: Mail
action: add
path: /System/Applications/Mail.app
replacing: Time Machine
→ Ajout de dossiers
Ajoute le dossier Téléchargements
à la section autres
du menu Dock. En cliquant, une prévisualisation en mode grille s'ouvrira.
dock_dockitems:
- label: Downloads
action: add
path: ~/Downloads
view: grid
display: folder
allhomes: true # paramètre optionnel
→ Suppression
Supprime TextEdit
du Dock de tous les utilisateurs de cette machine :
dock_dockitems:
- label: TextEdit
action: remove
allhomes: true # paramètre optionnel
Supprime tous les tuiles séparatrices :
dock_dockitems:
- label: spacer-tiles
action: remove
→ Déplacement
Déplace System Preferences
au deuxième emplacement du Dock de tous les utilisateurs de cette machine :
dock_dockitems:
- label: System Preferences
action: move
position: end # <[+/-]index_number | beginning | end | middle>
allhomes: true # paramètre optionnel
📗 Exemple de Playbook
---
- hosts: all
# est nécessaire lors de l'exécution via 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
⚙️ Développement
Pour installer les dépendances et commencer le développement, vous pouvez vérifier le contenu de notre Makefile
.
Installer poetry en utilisant poetry-bin et toutes les dépendances python de développement :
$ make install
Installer uniquement les dépendances python, en supposant que vous avez déjà poetry :
$ make install-deps
Installer tous les hooks git :
$ make hooks
Lint tous les fichiers du rôle :
$ make lint
🧪 Tests
Vous pouvez consulter le Makefile
pour obtenir la liste complète des commandes pour les tests distants et locaux. Pour les tests locaux, vous pouvez utiliser ces commandes pour tester l'ensemble du rôle ou des tâches séparées :
→ sur localhost
:warning: Remarque : Par défaut, tous les tests sont exécutés sur votre machine locale !
# exécuter des tests moleculaires sur localhost
$ poetry run molecule test --scenario-name defaults-restored-on-localhost -- -vvv
# ou avec la commande make
$ make m-local
# choisir les tags qui seront inclus
$ export TASK_TAGS="dock-validate,dock-install"; make m-local
→ via SSH
# exécuter des scénarios moléculaires contre des machines distantes via SSH
# cela nécessitera la configuration d'une VM
$ poetry run molecule test --scenario-name defaults-restored-over-ssh -- -vvv
$ make m-remote
# les tags peuvent également être passés
$ export TASK_TAGS="dock-validate,dock-install"
$ make m-remote
📦 Dépendances
L'installation est gérée par Makefile
et les exigences sont définies dans requirements.yml
- wayofdev.homebrew - dépendance douce, requise si Homebrew n'est pas encore installé
- ansible.community.general
🧩 Compatibilité
Ce rôle a été testé sur ces systèmes :
système / conteneur | tag |
---|---|
macos | monterey |
macos | big-sur |
🤝 Licence
🙆🏼♂️ Informations sur l'auteur
Ce rôle a été créé en 2022 par lotyp / wayofdev.
🧱 Crédits et ressources
Inspiré par :
- rôle original créé par @geerlingguy dans le cadre de ansible-collection-mac.
- dockutil
🫡 Contributeurs
🤑 Sponsors
Le développement et les tests du rôle ont été réalisés sur Parallels Desktop Pro Edition, merci à 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