wayofdev.dock

<br>

<div align="center">
<img width="456" src="https://raw.githubusercontent.com/wayofdev/ansible-role-dock/master/assets/logo.gh-light-mode-only.png#gh-light-mode-only">
<img width="456" src="https://raw.githubusercontent.com/wayofdev/ansible-role-dock/master/assets/logo.gh-dark-mode-only.png#gh-dark-mode-only">
</div>

<br>

<br>

<div align="center">
<a href="https://actions-badge.atrox.dev/wayofdev/ansible-role-dock/goto"><img alt="ビルドステータス" src="https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fwayofdev%2Fansible-role-dock%2Fbadge&style=flat-square"/></a>
<a href="https://galaxy.ansible.com/wayofdev/dock"><img alt="Ansible ロール" src="https://img.shields.io/ansible/role/59499?style=flat-square"/></a>
<a href="https://github.com/wayofdev/ansible-role-dock/tags"><img src="https://img.shields.io/github/v/tag/wayofdev/ansible-role-dock?sort=semver&style=flat-square" alt="最新バージョン"></a>
<a href="https://galaxy.ansible.com/wayofdev/dock"><img alt="Ansible 品質スコア" src="https://img.shields.io/ansible/quality/59499?style=flat-square"/></a>
<a href="https://galaxy.ansible.com/wayofdev/dock"><img alt="Ansible ロール" src="https://img.shields.io/ansible/role/d/59499?style=flat-square"/></a>
<a href="LICENSE"><img src="https://img.shields.io/github/license/wayofdev/ansible-role-dock.svg?style=flat-square&color=blue" alt="ソフトウェアライセンス"/></a>
<a href="#"><img alt="最新リリース以降のコミット" src="https://img.shields.io/github/commits-since/wayofdev/ansible-role-dock/latest?style=flat-square"></a>
</div>

<br>

# Ansible ロール: macOS Dock 自動化

このロールは、Dock項目を管理するためのコマンドラインツールである[dockutil](https://github.com/kcrawford/dockutil)を自動化するために使用されます。Dock項目を追加、削除、および並べ替えることができます。

このロールが気に入ったり、使っている場合は、**スターを付ける**ことを検討してください。ありがとうございます!

<br>

## 🗂 目次

* [このロールの利点](#-このロールの利点)
* [要件](#-要件)
* [ロール変数](#-ロール変数)
  * [構造](#-構造)
  * [追加](#-追加)
  * [置き換えを伴う追加](#-置き換えを伴う追加)
  * [フォルダの追加](#-フォルダの追加)
  * [削除](#-削除)
  * [移動](#-移動)
* [サンプルプレイブック](#-サンプルプレイブック)
* [開発](#-開発)
* [テスト](#-テスト)
  * [ローカルホスト上で](#-ローカルホスト上で)
  * [SSH経由で](#-ssh経由で)
* [依存関係](#-依存関係)
* [互換性](#-互換性)
* [ライセンス](#-ライセンス)
* [著者情報](#-著者情報)
* [クレジットとリソース](#-クレジットとリソース)
* [貢献者](#-貢献者)
* [スポンサー](#-スポンサー)

<br>

## ⭐️ このロールの利点:

* このバージョンは最新の3.xの[dockutil](https://github.com/kcrawford/dockutil)をサポートしています。
* 項目は、一度のコマンド実行で追加、配置、削除されます。
* 最新のmacOS Montereyをサポート。
* 一つの設定でDockの全ての項目を消去可能。
* `killall`を使用してDockを再起動するためのansibleハンドラーやsudo権限は不要です。これらは`dockutil`が自動で処理します!
* `dockutil`の全てのオプションをサポートします。例えば:
`--add, --remove, --move, --replacing, --position, --after, --before, --section, --allhomes, --sort, --display, --view`

<br>

## 📑 要件

  - **Homebrew**: `homebrew`がすでにインストールされている必要があります(macOSにインストールするために`wayofdev.homebrew`を使用できます)。
  - 最新版のansibleが必要です。メンテナンスや開発時にはansibleのバージョンに従い、もし新機能が利用可能であればそれを使用します(`meta/main.yml`の最小バージョンも更新します)。
- 互換性のあるOSが必要です。[互換性](#-互換性)テーブルを参照してください。
- 古いOSに依存する第三者の役割があります。`requirements.yml`と[依存関係](#-依存関係)セクションを確認してください。

<br>

## 🔧 ロール変数

このセクションでは、アプリケーション、スペーサー、フォルダを追加、移動、置き換え、削除するためのすべての可能な変数を示します。利用可能な変数とその例は以下に示します(`defaults/main.yml`を参照):

<br>

### → 構造

dockutilのインストールを制御し、カスタムタップを選択できます:

```yaml
# dockutilをインストールしますか?
dock_dockutil_install: <true | false> # (デフォルト: true) Homebrewを使用してdockutilをインストールします。

# dockutilのカスタムまたは公式タップへのパス
dock_dockutil_tap: lotyp/formulae/dockutil # デフォルトでは、3.xタップが使用されます。

macOS Dockを完全に消去することができます:

# ダウンロードフォルダを含む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> # 置き換える項目のラベルまたはアプリのバンドルID。指定した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の最後に追加します:

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

**全ユーザーのDockに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内で置き換えます:

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

→ フォルダの追加

**Downloads**フォルダをDockメニューのothersセクションに追加します。クリックするとグリッドモードでプレビューが開きます。

dock_dockitems:
  - label: Downloads
    action: add
    path: ~/Downloads
    view: grid
    display: folder
    allhomes: true # オプション

→ 削除

**全ユーザーのDockからTextEdit**を削除します:

dock_dockitems:
  - label: TextEdit
    action: remove
    allhomes: true # オプション

全てのスペーサーを削除します

dock_dockitems:
  - label: spacer-tiles
    action: remove

→ 移動

**System Preferences**を全ユーザーのDockの二番目のスロットに移動します:

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**を使用してすべての開発用Python依存関係をインストールします:

$ make install

既にpoetryがある場合は、Python依存関係のみをインストールします:

$ make install-deps

すべてのgitフックをインストールします

$ make hooks

すべてのロールファイルをリンティングします

$ make lint

🧪 テスト

Makefileを確認して、リモートおよびローカルテストのコマンド一覧を取得できます。ローカルテストには、全体のロールまたは個別のタスクをテストするために以下のコマンドを使用できます:

→ ローカルホスト上で

:warning: 注意: デフォルトでは、すべてのテストがローカルマシンで実行されます!

# ローカルホストでmoleculeテストを実行
$ 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経由で

# リモートマシンに対してmoleculeのシナリオを実行
# これはVMのセットアップと構成が必要です
$ 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.dock
ライセンス
gpl-3.0
ダウンロード
756
所有者
Making things to build better software