syncthing-macosプロジェクトは、質素なネイティブMacOS Syncthingトレイアプリケーションバンドルです。独自のSyncthingインスタンスをバンドルし、同期の背景プロセスをラップし、ネイティブMacOSアプリケーションのように動作し、Webブラウザーインターフェイスを使用したコマンドラインユーティリティのように動作します。
機能は次のとおりです。
~/Library/Application Support/Syncthing/syncthing.logに書き込まれたlogfile、finder-> go->を使用してフォルダーに移動して開きます。
通知:これは、MacOSアプリケーションの公式バンドルです。他の同期インスタンスやラッパーが実行されていないことを確認してください。そうしないと、このアプリケーションが機能しません。
現在、OS X 10.13以上が必要です。 Syncthing-Macosは、同期バイナリにバンドルされたアプリケーションとして、ディスクイメージとしてパッケージ化されています。
インストールするには、DMGをダウンロードするだけで、マウントし、アプリケーションをドラッグアンドドロップしてインストールします。必要な構成の唯一の構成は、リモート同期インスタンスをプロビジョニングするときにAPIキーとURLを設定することです。ローカルインスタンスは自動構成されています。 syncthing-macosアプリケーションバンドルは、Sparkleを使用した独自の更新メカニズムを備えているため、 syncthingの自動アップデーターを無効にします。
最新バージョンはGitHubリリースで入手できます。または、HomeBrew brew install --cask syncthing
すべてのクロスプラットフォームアプローチでは、Apple Macosが提供するすべてのネイティブ施設を使用できません。自動アップデート、ベクトルアイコンセット(Retina-ready)、アプリケーションバンドルの作成を含みます。 GUIはXcodeで設計されており、すべてが「ネイティブアプローチ」であるObjective-CとSwiftの組み合わせでコード化されています。
このプロジェクトの目標は、ネイティブMacOSの同期トレイを無駄のないものの、使用可能に保つことです。グラフも、高度な構成ウィンドウもありません。非常にシンプルなラッパーを提供するだけなので、ユーザーはコマンドラインアプリケーションとして同期船を認識していません。それは、グッドバイデフォルトの使いやすさを持つよう努めており、常にApple Human Interfaceガイドラインに従って、可能な限りネイティブアプリケーションを感じる必要があります。
現在のステータスについては、問題トラッカー(バグタグフィルタリング)を参照してください。
貢献と発行レポートは大歓迎です。
mit
サポートされていないOSバージョンでは、自動アップデートを手動で無効にする必要があります。
syncthing-macos独自の同期インスタンスを実行し、APIキーを自動的に検出するように設計されています。設定ウィンドウは、ローカルランニングインスタンスを指すために使用されます。リモートインスタンスはサポートされていません。独自のインスタンスを実行し、高度な/開発目的でそれを指すことが可能です。自分が何をしているのかを知っている場合にのみ、設定を変更する必要があります。
余分な同期コマンドラインパラメーターを設定することは、隠された機能です。アプリケーションのデフォルト構成を使用してこれらを記述する必要があります。パラメーターがスペースを含めることができない唯一の現在の制限!下の例では、監査ログが有効になっています。
defaults write com.github.xor-gate.syncthing-macosx Arguments '--audit --auditfile=/Users/JohnDoe/staudit.log'
デフォルトのIPアドレスが127.0.0.1から、例えば192.168.1.102のようなルーティング可能なものに変更された場合、トレイアプリケーションの設定も設定する必要があります。または、APIにアクセスできず、「オフライン」のままになります。構成を破った場合、go-> go>移動フォルダーを使用して、 ~/Library/Application Support/Syncthing/config.xmlの下でファイルを手動で編集できます。トレイから同期サービスを再起動します。
com.apple.provenanceメタデータの問題) Xattr同期機能を使用する場合、Macos 13.0からMacOS <13.0に同期するときに失敗します。この機能を使用する場合、同期を停止し、 /Users/<user>/Library/Application Support/Syncthing/config.xmlにある構成XMLファイルを手動で編集する必要があります。または、Syncthing Daemonインスタンスを実行するときの場所は、アプリケーションバンドルを管理していません)。 Web UIがXattrフィルター管理をまだサポートしていないため、構成ファイルを手動で編集する必要があります(V1.22.1-1をリリース)。
共有フォルダーごとに、 xattrFilter次のように構成する必要があります。
<folder id="..." ...>
<xattrFilter>
...
<entry match="com.apple.provenance" permit="false"/>
<entry match="*" permit="true"/>
</xattrFilter>
</folder>
注: com.apple.provenance xattrFilter entryを参照してください。
詳細については、#185およびフォーラム投稿も参照してください。
Mac OS Xでは、アプリケーションをアプリケーションフォルダーからゴミ箱にドロップします。ただし、一部のユーザー固有のファイルは他の場所に保持されており、 $HOME/Library/Application Support/Syncthingの下にあります。このフォルダーのファイルは、構成、暗号化/プロファイルファイル、およびデータベースキャッシュです。詳細については、docs.syncthing.net/users/config.htmlを参照してください。
デフォルトでは、同期MACOSアプリケーションは更新を自動的にチェックします。自動更新チェックを無効にする(または再度)するには、コマンドラインからSparkle Updaterパラメーターを設定する必要があります。
defaults write com.github.xor-gate.syncthing-macosx SUEnableAutomaticChecks 0
この設定は順応していないため、コマンドラインからのみ利用できます。システムがサポートされなくなり、サポートされていない更新が無効になることを通知したくない場合は、推奨されます。
gitサブモジュールをコンパイルする前に、存在する必要があります。
git submodule update --init
Xcodeでコーディングするときは、新しいsyncthing.xcworkspaceを使用する必要があります。
xcodeでビルドするか、実行します。
make debug
同期ユニバーサルバイナリを自動的にダウンロードし、アプリケーションバンドルに追加します。
リリースのために、アプリケーションビルドに署名し、分散型DMGを作成するリリース:
make release-dmg
スクリプトは、最初の利用可能な開発者IDを選択し、アプリに署名します。署名IDを指定するには、 SYNCTHING_APP_CODE_SIGN_IDENTITY環境変数を使用します。
SYNCTHING_APP_CODE_SIGN_IDENTITY="Mac Developer: [email protected] (XB59MXU8EC)" make release-dmg
同期設定では、NSDEFAULTS施設を使用しています。コマンドラインから、すべての設定を次のように表示できます。
jerry@Jerrys-iMac ~ % defaults read com.github.xor-gate.syncthing-macosx
{
ApiKey = rR7YrEDLKhNETJZKgySmnYPZvebY9qgk;
Executable = "/Applications/Syncthing.app/Contents/Resources/syncthing/syncthing";
SUEnableAutomaticChecks = 1;
SUHasLaunchedBefore = 1;
SULastCheckTime = "2021-01-08 12:05:53 +0000";
SUSendProfileInfo = 0;
StartAtLogin = 1;
URI = "http://127.0.0.1:8384";
}
Executableプロパティ(Power-Usersのみ) NICE GUIを使用したいが、 Syncthing.appバンドルの外側に独自の実行可能ファイルがある場合は、Builtin端末またはITERM2を使用してdefaults Executableラインツールで手動で上書きできます。最後の引数は、同期デーモンゴーランアプリケーションに変更する必要があります。
defaults write com.github.xor-gate.syncthing-macosx Executable /Users/jerry/develop/Syncthing/exe/syncthing
バンドルパスに戻すには、プロパティの削除を使用してください。自動的にリセットします。
defaults delete com.github.xor-gate.syncthing-macosx Executable
cocoapodsは、依存関係管理に使用されます。 HomeBrewパッケージマネージャーと一緒にインストールできます。 cocoapodsの詳細については、Cocoapodsガイドをご覧ください。
-<bundle index>番号で追加された出荷された同期実行可能バージョンを使用します。したがって、最初のビルド/パッケージで0.14.28同期する場合、 0.14.28-1としてバージョンされています。現在、 syncthing-macos用の個別のバージョンを持つ必要はありません。また、ラッパーを同期リリースと結び付けてしまいます。
syncthing/Scripts/syncthing-resource.shでフェッチされますsyncthing/Scripts/create-dmg.shで生成されますsyncthing/Info.plist, key CFBundleShortVersionStringから取得されますSYNCTHING_APP_CODE_SIGN_IDENTITY環境変数を介して指定されたもの)の場合、最初の利用可能な開発者ID証明書で署名されます。 syncthing/syncthing-macos安定したリリースのみを出荷し、Syncthingサービス(Daemon)の候補をリリースしません。
DMGが作成された後、公証されるにはAppleに送信する必要があります。 AppleがAppleによって正しく検証されている場合、 spctlで確認できます。
spctl -a -t exec -vvv /Volumes/Syncthing/Syncthing.app
/Volumes/Syncthing/Syncthing.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Jakob Borg (LQE5SYM783)
それが正しく公証されていない場合、次の出力が見られます(ソースに注意してください):
spctl -a -t exec -vvv /Volumes/Syncthing/Syncthing.app
/Volumes/Syncthing/Syncthing.app: accepted
source=Developer ID
origin=Developer ID Application: Jakob Borg (LQE5SYM783)
https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distributionのApple開発者のドキュメントも参照してください
semverモジュールがインストールされた状態で、Python仮想環境をアクティブにします。たとえば、 source venv/bin/activate 。
バンドルされた同期を更新するにはmake release-updateメインフォルダーから実行する必要があります。
syncthing/Scripts/syncthing-resource.sh 、 SYNCTHING_VERSION更新します
syncthing/Info.plistを更新します
CFBundleShortVersionString :ユーザー読み取り可能な文字列(例: 1.27.10-1 )CFBundleVersion :インクリメントバージョンカウンター( 1.27.10-1の場合は102701001など)Git BranchがGitHubにプッシュされたGit Branchが開発またはリリースされたとき、Github ActionsCI Serverは自動的にデバッグとリリースを構築します
正しく署名され、公証されているgithub.comアクションからリリース.dmgを手動でダウンロードする
タグv<major>.<minor>.<patch>-<bundle index>を使用して、新しいgithubリリースを手動で作成します。
Sparkle Updater Appcast.xmlの展開を実行します。 GithubをjsonをSparkle appcast.xmlファイルにリリースします。 (スパークルドキュメントも参照)ユーザーにプッシュします。