wayofdev.dock


Ansible-Rolle: macOS Dock-Automatisierung
Diese Rolle wird verwendet, um die Nutzung von dockutil zu automatisieren – ein Kommandozeilenwerkzeug zur Verwaltung von Dock-Elementen. Sie können Dock-Elemente hinzufügen, entfernen und neu anordnen.
Wenn Sie diese Rolle mögen/verwenden, ziehen Sie bitte in Betracht, sie zu favorisieren. Danke!
🗂 Inhaltsverzeichnis
- Vorteile dieser Rolle
- Anforderungen
- Rollenvariablen
- Beispiel-Playbook
- Entwicklung
- Testen
- Abhängigkeiten
- Kompatibilität
- Lizenz
- Autoreninformationen
- Danksagungen und Ressourcen
- Mitwirkende
- Sponsoren
⭐️ Vorteile dieser Rolle:
- Diese Version unterstützt die neueste 3.x dockutil
- Elemente werden in einem einzelnen Befehl hinzugefügt, positioniert und entfernt, anstatt in Schleifen
- Unterstützung für das neueste macOS Monterey
- Kann alle Elemente im Dock mit einer Einstellung löschen
- Keine Notwendigkeit für Ansible-Handler und Sudo-Rechte für
killall
, um das Dock neu zu starten, da dies vondockutil
selbst erledigt wird! - Unterstützt alle
dockutil
-Optionen, wie:--add, --remove, --move, --replacing, --position, --after, --before, --section, --allhomes, --sort, --display, --view
📑 Anforderungen
- Homebrew: Erfordert bereits installiertes
homebrew
(Sie könnenwayofdev.homebrew
verwenden, um es auf Ihrem macOS zu installieren). - Aktuelle Version von Ansible. Während der Wartung/Entwicklung halten wir uns an Ansible-Versionen und verwenden neue Funktionen, wenn sie verfügbar sind (und aktualisieren
meta/main.yml
für die Mindestversion). - Kompatibles Betriebssystem. Siehe die Tabelle Kompatibilität.
- Die Rolle hat Abhängigkeiten von Drittanbieter-Rollen auf verschiedenen Betriebssystemen. Siehe
requirements.yml
und den Abschnitt Abhängigkeiten.
🔧 Rollenvariablen
Dieser Abschnitt zeigt alle möglichen Varianten zum Hinzufügen, Verschieben, Ersetzen und Entfernen von Anwendungen, Trennlinien, Ordnern. Verfügbare Variablen sind unten aufgelistet, zusammen mit Beispielwerten (siehe defaults/main.yml
):
→ Struktur
Gruppe steuert die Installation von dockutil und ermöglicht die Auswahl einer benutzerdefinierten Quelle:
# Soll dockutil installiert werden?
dock_dockutil_install: <true | false> # (standard: true) Installiere dockutil mit Homebrew.
# Pfad zur benutzerdefinierten oder offiziellen Quelle von dockutil
dock_dockutil_tap: lotyp/formulae/dockutil # Standardmäßig wird die 3.x Quelle verwendet
Die Rolle ermöglicht es, das Dock von macOS vollständig zu leeren:
# Entfernt alle Inhalte aus dem Dock einschließlich des Bereichs "Sonstiges" mit dem Download-Ordner.
# Bevorzugen Sie diese Option bei Neuinstallationen zusammen mit konfigurierten "dockitems".
dock_dockitems_erase_all: <true | false> # Ob versucht werden soll, alle Elemente im Dock einschließlich des Download-Ordners zu löschen! (standard: false)
Variablenstruktur zum Hinzufügen, Verschieben oder Entfernen von Elementen im Dock:
dock_dockitems:
- label: <label> # Wird bei der Suche nach vorhandenen Elementen oder der Benennung neuer Apps verwendet
action: <add | remove | move>
path: <label | app bundle id | path | url> # Beispiel: /System/Applications/TextEdit.app
replacing: <label | app bundle id | path | url> # Label oder App-Bundle-ID des zu ersetzenden Elements. Ersetzt das Element mit dem angegebenen Dock-Label oder fügt das Element am Ende hinzu, wenn das zu ersetzende Element nicht gefunden wird
position: <[+/-]index_number | beginning | end | middle> # Führt das Element an einer festen Position ein: kann durch Indexnummer oder Schlüsselwort positioniert werden
after: <label | application bundle id> # Fügt das Element unmittelbar nach dem angegebenen Dock-Label oder am Ende hinzu, wenn das Element nicht gefunden wird
before: <label | application bundle id> # Fügt das Element unmittelbar vor dem angegebenen Dock-Label oder am Ende hinzu, wenn das Element nicht gefunden wird
section: <apps | others> # Gibt an, ob das Element dem Bereich Apps oder Sonstiges hinzugefügt werden soll
display: <folder | stack> # Ordnervorschauoption beim Hinzufügen eines Ordners
sort: <name | dateadded | datemodified | datecreated | kind> # Ordnersortieroption beim Hinzufügen eines Ordners
type: <spacer | small-spacer | flex-spacer> # Gibt einen benutzerdefinierten Kacheltyp zum Hinzufügen von Trennlinien an
allhomes: <true | false> # Ob versucht werden soll, alle Home-Verzeichnisse zu finden und die Operation in jedem von ihnen auszuführen (standard: false)
→ Hinzufügen
Fügt TextEdit.app
ans Ende des Dock des aktuellen Benutzers hinzu:
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
Fügt Time Machine.app
in die Mitte des Docks hinzu:
dock_dockitems:
- label: Time Machine
action: add
path: /System/Applications/Time Machine.app
position: middle
Fügt TextEdit.app
nach dem Element Time Machine.app
im Dock jedes Benutzers auf diesem Gerät hinzu:
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
after: Time Machine
allhomes: true # optionales Parameter
→ Hinzufügen mit Ersetzen
Ersetzt Time Machine.app
mit Mail.app
im Dock des aktuellen Benutzers:
dock_dockitems:
- label: Mail
action: add
path: /System/Applications/Mail.app
replacing: Time Machine
→ Ordner hinzufügen
Fügt den Ordner Downloads
zum Bereich Sonstiges
des Dock-Menüs hinzu. Bei einem Klick wird die Vorschau im Rastermodus geöffnet.
dock_dockitems:
- label: Downloads
action: add
path: ~/Downloads
view: grid
display: folder
allhomes: true # optionales Parameter
→ Entfernen
Entfernt TextEdit
aus dem Dock jedes Benutzers auf diesem Gerät:
dock_dockitems:
- label: TextEdit
action: remove
allhomes: true # optionales Parameter
Entfernt alle Trennlinien:
dock_dockitems:
- label: spacer-tiles
action: remove
→ Verschieben
Verschiebt System Preferences
an den zweiten Platz im Dock jedes Benutzers auf diesem Gerät:
dock_dockitems:
- label: System Preferences
action: move
position: end # <[+/-]index_number | beginning | end | middle>
allhomes: true # optionales Parameter
📗 Beispiel-Playbook
---
- hosts: all
# wird benötigt, wenn über SSH ausgeführt wird
environment:
- PATH: "/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:{{ ansible_env.PATH }}"
vars:
dock_dockitems_erase_all: true
dock_dockitems:
- label: Nachrichten
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
⚙️ Entwicklung
Um Abhängigkeiten zu installieren und die Entwicklung zu starten, können Sie den Inhalt unseres Makefile
überprüfen.
Installieren Sie poetry mit poetry-bin und allen Entwicklungs-Python-Abhängigkeiten:
$ make install
Installieren Sie nur Python-Abhängigkeiten, vorausgesetzt, Sie haben bereits poetry installiert:
$ make install-deps
Installieren Sie alle Git-Hooks:
$ make hooks
Lint alle Rollendateien:
$ make lint
🧪 Testen
Sie können das Makefile
überprüfen, um die vollständige Liste von Befehlen für remote und lokale Tests zu erhalten. Für lokale Tests können Sie diese Befehle verwenden, um die gesamte Rolle oder einzelne Aufgaben zu testen:
→ auf localhost
:warning: Hinweis: Standardmäßig werden alle Tests auf Ihrem lokalen Computer ausgeführt!
# führen Sie Molecule-Tests auf localhost aus
$ poetry run molecule test --scenario-name defaults-restored-on-localhost -- -vvv
# oder mit dem Make-Befehl
$ make m-local
# wählen Sie aus, welche Tags enthalten sein sollen
$ export TASK_TAGS="dock-validate,dock-install"; make m-local
→ über SSH
# führen Sie Molecule-Szenarien auf entfernten Maschinen über SSH aus
# dies benötigt VM-Setup und -Konfiguration
$ poetry run molecule test --scenario-name defaults-restored-over-ssh -- -vvv
$ make m-remote
# Tags können ebenfalls übergeben werden
$ export TASK_TAGS="dock-validate,dock-install"
$ make m-remote
📦 Abhängigkeiten
Die Installation erfolgt über Makefile
, und die Anforderungen sind in requirements.yml
definiert.
- wayofdev.homebrew - weiche Abhängigkeit, erforderlich, wenn Homebrew noch nicht installiert ist
- ansible.community.general
🧩 Kompatibilität
Diese Rolle wurde auf diesen Systemen getestet:
System / Container | Tag |
---|---|
macos | monterey |
macos | big-sur |
🤝 Lizenz
🙆🏼♂️ Autoreninformationen
Diese Rolle wurde 2022 von lotyp / wayofdev erstellt.
🧱 Danksagungen und Ressourcen
Inspiriert durch:
- Ursprüngliche Rolle wurde von @geerlingguy im Rahmen von ansible-collection-mac erstellt.
- dockutil
🫡 Mitwirkende
🤑 Sponsoren
Die Entwicklung und das Testen der Rolle wurden auf Parallels Desktop Pro Edition durchgeführt, vielen Dank an 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