wayofdev.dock


Rola Ansible: Automatyzacja Docka w macOS
Rola ta służy do automatyzacji korzystania z dockutil – narzędzia wiersza poleceń do zarządzania elementami Docka. Możesz dodawać, usuwać i zmieniać kolejność elementów Docka.
Jeśli podobają się lub używasz tej roli, prosimy o dodanie jej do ulubionych. Dziękujemy!
🗂 Spis treści
- Korzyści z tej roli
- Wymagania
- Zmienne roli
- Przykładowy playbook
- Rozwój
- Testowanie
- Zależności
- Kompatybilność
- Licencja
- Informacje o autorze
- Podziękowania i zasoby
- Współautorzy
- Sponsorzy
⭐️ Korzyści z tej roli:
- Ta wersja wspiera najnowszą wersję 3.x dockutil
- Elementy dodawane, pozycjonowane i usuwane są w jednym poleceniu zamiast w pętli
- Wsparcie dla najnowszego macOS Monterey
- Możliwość usunięcia wszystkich elementów Docka za pomocą jednego ustawienia
- Nie ma potrzeby używania handlerów ansible i praw sudo do wykonania
killall
w celu ponownego uruchomienia Docka, ponieważ obsługiwadockutil
! - Wspiera wszystkie opcje
dockutil
, takie jak:--add, --remove, --move, --replacing, --position, --after, --before, --section, --allhomes, --sort, --display, --view
📑 Wymagania
- Homebrew: Wymaga zainstalowanego
homebrew
(możesz użyćwayofdev.homebrew
, aby go zainstalować na swoim macOS). - Zaktualizowana wersja ansible. W trakcie utrzymania/rozwoju trzymamy się wersji ansible i będziemy korzystać z nowych funkcji, gdy będą dostępne (oraz zaktualizujemy
meta/main.yml
o minimalną wersję). - Kompatybilny system operacyjny. Zobacz tabelę kompatybilności.
- Rola ma zależności od ról stron trzecich w różnych systemach operacyjnych. Zobacz
requirements.yml
oraz sekcję zależności.
🔧 Zmienne roli
Sekcja pokazuje wszystkie możliwe warianty dodawania, przesuwania, zastępowania i usuwania aplikacji, przestrzeni, folderów. Dostępne zmienne są wymienione poniżej, wraz z przykładowymi wartościami (patrz defaults/main.yml
):
→ Struktura
Grupa kontroluje instalację dockutil i pozwala na wybór niestandardowego tapu:
# Czy próbować zainstalować dockutil?
dock_dockutil_install: <true | false> # (domyślnie: true) Zainstaluj dockutil za pomocą homebrew.
# Ścieżka do niestandardowego lub oficjalnego tapu dockutil
dock_dockutil_tap: lotyp/formulae/dockutil # Domyślnie używany jest tap 3.x
Rola pozwala na całkowite wyczyszczenie docka w macOS:
# Usuwa wszystkie elementy z docka, w tym sekcję "inne" z folderem Pobrane.
# Preferuj tę opcję przy nowych instalacjach razem z skonfigurowanymi "dockitems".
dock_dockitems_erase_all: <true | false> # Czy próbować usunąć wszystkie elementy w Docku, łącznie z folderem Pobrane? (domyślnie: false)
Struktura zmiennej do dodawania, przenoszenia lub usuwania elementów w Docku:
dock_dockitems:
- label: <label> # Używana w wyszukiwaniu istniejących elementów lub nadawaniu nowych nazw aplikacji
action: <add | remove | move>
path: <label | id paczki aplikacji | ścieżka | url> # Przykład: /System/Applications/TextEdit.app
replacing: <label | id paczki aplikacji | ścieżka | url> # Etykieta lub id paczki aplikacji elementu do zastąpienia. Zastępuje element podaną etykietą docka lub dodaje element na końcu, jeśli element do zastąpienia nie został znaleziony
position: <[+/-]index_number | beginning | end | middle> # Wstawia element w ustalonej pozycji: można pozycjonować według numeru indeksu lub słowa kluczowego
after: <label | id paczki aplikacji> # Wstawia element bezpośrednio po danej etykiecie docka lub na końcu, jeśli element nie został znaleziony
before: <label | id paczki aplikacji> # Wstawia element bezpośrednio przed daną etykietą docka lub na końcu, jeśli element nie został znaleziony
section: <apps | others> # Określa, czy element powinien być dodany do sekcji aplikacji, czy innych
display: <folder | stack> # Opcja wyświetlania folderu przy dodawaniu folderu
sort: <name | dateadded | datemodified | datecreated | kind> # Opcja sortowania folderu przy dodawaniu folderu
type: <spacer | small-spacer | flex-spacer> # Określa niestandardowy typ płytki do dodawania przestrzeni
allhomes: <true | false> # Czy próbować zlokalizować wszystkie katalogi domowe i wykonać operację na każdym z nich (domyślnie: false)
→ Dodawanie
Dodaje TextEdit.app
na końcu Docka bieżącego użytkownika:
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
Dodaje Time Machine.app
w środku Docka:
dock_dockitems:
- label: Time Machine
action: add
path: /System/Applications/Time Machine.app
position: middle
Dodaje TextEdit.app
po elemencie Time Machine.app
we wszyscy użytkownicy Docka na maszynie:
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
after: Time Machine
allhomes: true # opcjonalny parametr
→ Dodawanie z zastąpieniem
Zastępuje Time Machine.app
przez Mail.app
w Docku bieżącego użytkownika:
dock_dockitems:
- label: Mail
action: add
path: /System/Applications/Mail.app
replacing: Time Machine
→ Dodawanie folderów
Dodaje folder Downloads
do sekcji others
w menu Docka. Po kliknięciu otworzy podgląd w trybie siatki:
dock_dockitems:
- label: Downloads
action: add
path: ~/Downloads
view: grid
display: folder
allhomes: true # opcjonalny parametr
→ Usuwanie
Usuwa TextEdit
we wszystkich Dockach użytkowników na tej maszynie:
dock_dockitems:
- label: TextEdit
action: remove
allhomes: true # opcjonalny parametr
Usuwa wszystkie kafelki przestrzeni:
dock_dockitems:
- label: spacer-tiles
action: remove
→ Przenoszenie
Przenosi System Preferences
na drugą pozycję w Docku wszystkich użytkowników na tej maszynie:
dock_dockitems:
- label: System Preferences
action: move
position: end # <[+/-]index_number | beginning | end | middle>
allhomes: true # opcjonalny parametr
📗 Przykładowy Playbook
---
- hosts: all
# jest potrzebny podczas działania przez 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
⚙️ Rozwój
Aby zainstalować zależności i rozpocząć rozwój, możesz sprawdzić zawartość naszego Makefile
Zainstaluj poetry używając poetry-bin oraz wszystkich zależności python:
$ make install
Zainstaluj tylko zależności w pythonie, zakładając, że masz już zainstalowane poetry:
$ make install-deps
Zainstaluj wszystkie haki git:
$ make hooks
Sprawdź wszystkie pliki roli:
$ make lint
🧪 Testowanie
Możesz sprawdzić Makefile
, aby uzyskać pełną listę poleceń do testów zdalnych i lokalnych. Do testów lokalnych możesz użyć tych poleceń, aby przetestować całą rolę lub oddzielne zadania:
→ na localhost
:warning: Uwaga: Domyślnie wszystkie testy są uruchamiane na lokalnej maszynie!
# uruchom testy molekularne na localhost
$ poetry run molecule test --scenario-name defaults-restored-on-localhost -- -vvv
# lub za pomocą polecenia make
$ make m-local
# wybierz, które tagi będą uwzględnione
$ export TASK_TAGS="dock-validate,dock-install"; make m-local
→ przez SSH
# uruchom scenariusze molekularne na zdalnych maszynach przez SSH
# to będzie wymagać konfiguracji i ustawienia VM
$ poetry run molecule test --scenario-name defaults-restored-over-ssh -- -vvv
$ make m-remote
# tagi mogą być również przekazywane
$ export TASK_TAGS="dock-validate,dock-install"
$ make m-remote
📦 Zależności
Instalacja odbywa się za pomocą Makefile
, a wymagania są określone w requirements.yml
- wayofdev.homebrew - miękka zależność, wymagana, jeśli Homebrew nie jest jeszcze zainstalowany
- ansible.community.general
🧩 Kompatybilność
Ta rola została przetestowana na tych systemach:
system / kontener | tag |
---|---|
macos | monterey |
macos | big-sur |
🤝 Licencja
🙆🏼♂️ Informacje o autorze
Ta rola została stworzona w 2022 przez lotyp / wayofdev.
🧱 Podziękowania i zasoby
Zainspirowane przez:
- oryginalną rolę stworzoną przez @geerlingguy jako część ansible-collection-mac.
- dockutil
🫡 Współautorzy
🤑 Sponsorzy
Rozwój i testowanie roli odbywały się na Parallels Desktop Pro Edition, za co dziękujemy 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