macOS専用のCLIフォント同期ツール
Project description
font-sync
A CLI font synchronization tool for macOS. Easily sync fonts across multiple Macs via cloud storage like Dropbox, iCloud Drive, or Google Drive.
Features
- Smart Differential Sync – Only syncs changed fonts for fast operation
- Cloud Storage Support – Works with Dropbox, iCloud Drive, Google Drive, OneDrive
- Parallel Processing – Handles 1000+ fonts efficiently
- Beautiful CLI – Rich progress bars and formatted tables
- Safe by Default – Dry-run mode for previewing changes
- Pro Format Support – .otf and .ttf with metadata preservation
Quick Start
# Install
pip install font-sync
# Initialize (specify your cloud folder)
font-sync init --folder ~/Dropbox/Fonts/
# Sync fonts
font-sync sync
Installation
Via pip (Recommended)
pip install font-sync
Via Homebrew (Coming Soon)
brew tap URAPRO/font-sync
brew install font-sync
From Source
git clone https://github.com/URAPRO/font-sync.git
cd font-sync
pip install -e ".[dev]"
Usage
Initialize
font-sync init
Interactively set up your sync source folder (cloud storage directory).
Sync Fonts
font-sync sync
Syncs new and updated fonts from the source folder to your system.
List Fonts
font-sync list
Shows all fonts in the source folder with their sync status.
Import Fonts
font-sync import ~/Downloads/MyFont.otf
font-sync import ~/Desktop/FontCollection/ --move
Add existing fonts to your sync source folder.
Clean Up
font-sync clean # Dry-run (preview)
font-sync clean --execute # Actually remove
Remove fonts that were deleted from the source folder.
Commands
| Command | Description |
|---|---|
init |
Set up sync source folder |
sync |
Sync fonts from source to system |
list |
List fonts and their status |
import |
Add fonts to source folder |
clean |
Remove orphaned fonts |
Roadmap
- v1.0 – Core sync functionality
- v1.0 – Parallel processing & caching (1000+ fonts)
- GUI app (macOS menu bar) – Coming soon
- Homebrew formula
FAQ
Q: Does it work on Windows/Linux? A: No, font-sync is macOS only due to system-specific font handling.
Q: Which cloud services are supported? A: Any service that syncs to a local folder: Dropbox, iCloud Drive, Google Drive, OneDrive, etc.
Q: How do I refresh the font cache? A: Run these commands:
sudo atsutil databases -remove
sudo atsutil server -shutdown
sudo atsutil server -ping
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linter
ruff check src/ tests/
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
MIT License. See LICENSE for details.
Author
URAPRO
Made with ❤️ for designers and developers on macOS
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file font_sync-1.0.0.tar.gz.
File metadata
- Download URL: font_sync-1.0.0.tar.gz
- Upload date:
- Size: 42.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74f27c5583f62dc368665baeaeafc0490f8abc3cd90e1c5091eb69df48f194f0
|
|
| MD5 |
ab20ec6638b7a8135933faf213d9d8c4
|
|
| BLAKE2b-256 |
59eb2959af82c04720a9aaa0281fd7f25eee5960be6b4f7c27dbd146dead70c1
|
Provenance
The following attestation bundles were made for font_sync-1.0.0.tar.gz:
Publisher:
release.yml on URAPRO/font-sync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
font_sync-1.0.0.tar.gz -
Subject digest:
74f27c5583f62dc368665baeaeafc0490f8abc3cd90e1c5091eb69df48f194f0 - Sigstore transparency entry: 868495631
- Sigstore integration time:
-
Permalink:
URAPRO/font-sync@6a1e0e574501e119d35258a8cb06fcb627d55a88 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/URAPRO
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6a1e0e574501e119d35258a8cb06fcb627d55a88 -
Trigger Event:
push
-
Statement type:
File details
Details for the file font_sync-1.0.0-py3-none-any.whl.
File metadata
- Download URL: font_sync-1.0.0-py3-none-any.whl
- Upload date:
- Size: 33.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13324885b2998179523074c9a3e4c76d18fed21a0bf9938be55bed110b6f4f56
|
|
| MD5 |
cfb1515f9804753bcb2a8855a218ba7e
|
|
| BLAKE2b-256 |
4429d13c000347cb3070f176fa1cd244dcce79fc4af440c8bcd01138f7579338
|
Provenance
The following attestation bundles were made for font_sync-1.0.0-py3-none-any.whl:
Publisher:
release.yml on URAPRO/font-sync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
font_sync-1.0.0-py3-none-any.whl -
Subject digest:
13324885b2998179523074c9a3e4c76d18fed21a0bf9938be55bed110b6f4f56 - Sigstore transparency entry: 868495637
- Sigstore integration time:
-
Permalink:
URAPRO/font-sync@6a1e0e574501e119d35258a8cb06fcb627d55a88 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/URAPRO
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6a1e0e574501e119d35258a8cb06fcb627d55a88 -
Trigger Event:
push
-
Statement type: