All Projects → syncthing → Syncthing Macos

syncthing / Syncthing Macos

Licence: mit
Frugal and native macOS Syncthing application bundle

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Syncthing Macos

brewfile
🍎 Brewfile to install softwares in macOS for engineers
Stars: ✭ 37 (-96.62%)
Mutual labels:  mac, apple, osx, macosx
Mac-OS-Setup-Applications
👾 All I need to setup a new Mac and the applications I use everyday as a Web Developper
Stars: ✭ 96 (-91.24%)
Mutual labels:  mac, osx, macosx
Jsonify
♨️A delightful JSON parsing framework.
Stars: ✭ 42 (-96.17%)
Mutual labels:  mac, osx, macosx
Macvars
command library for scripting osx
Stars: ✭ 34 (-96.9%)
Mutual labels:  apple, osx, mac
Diztl
Share, discover & download files in your network 💥
Stars: ✭ 162 (-85.22%)
Mutual labels:  file-sharing, p2p, peer-to-peer
osxapp vers
Get product name, exact product version and build version from an Apple Install [Mac OS X|OS X|macOS]*.app or from a mounted Mac OS X Install CD/DVD image
Stars: ✭ 12 (-98.91%)
Mutual labels:  apple, osx, macosx
Iwant
Commandline tool for searching and downloading files in LAN network, without any central server
Stars: ✭ 268 (-75.55%)
Mutual labels:  file-sharing, p2p, peer-to-peer
Awesome Mac
 Now we have become very big, Different from the original idea. Collect premium software in various categories.
Stars: ✭ 46,674 (+4158.58%)
Mutual labels:  apple, mac, macosx
Tools Osx
A small collection of command line tools for Mac OS X, incl.: clipcat, dict, eject, launch, ql, swuser, trash & with.
Stars: ✭ 576 (-47.45%)
Mutual labels:  osx, mac, macosx
Osx Iso
 Create a bootable ISO of OS X / macOS, from the installation app file
Stars: ✭ 616 (-43.8%)
Mutual labels:  osx, mac, macosx
Swcrypt
RSA public/private key generation, RSA, AES encryption/decryption, RSA sign/verify in Swift with CommonCrypto in iOS and OS X
Stars: ✭ 632 (-42.34%)
Mutual labels:  apple, osx, mac
Airdcpp Webclient
Communal peer-to-peer file sharing application for file servers/NAS devices
Stars: ✭ 106 (-90.33%)
Mutual labels:  file-sharing, p2p, peer-to-peer
Figo
P2P file transfer utility
Stars: ✭ 88 (-91.97%)
Mutual labels:  file-sharing, p2p, peer-to-peer
Ultratabsaver
The open source Tab Manager Extension for Safari.
Stars: ✭ 178 (-83.76%)
Mutual labels:  apple, mac, macosx
Soundcast
Cast audio from macOS to Chromecast
Stars: ✭ 684 (-37.59%)
Mutual labels:  apple, osx, mac
Mac Setup
🛠️ Front end web development setup for macOS.
Stars: ✭ 265 (-75.82%)
Mutual labels:  apple, mac, macosx
Night Shift On Unsupported Macs
Enable Night Shift on older Unsupported Macs
Stars: ✭ 86 (-92.15%)
Mutual labels:  apple, mac, macosx
Neptunes
simple and reliable Last.fm scrobbler for iTunes and Spotify for macOS
Stars: ✭ 98 (-91.06%)
Mutual labels:  apple, osx, mac
Eiskaltdcpp
File sharing program using DC and ADC protocols
Stars: ✭ 277 (-74.73%)
Mutual labels:  file-sharing, p2p, mac
Nord Iterm2
An arctic, north-bluish clean and elegant iTerm2 color scheme.
Stars: ✭ 651 (-40.6%)
Mutual labels:  osx, mac, macosx

Syncthing for macOS

Syncthing forum Downloads Latest release license

Introduction

syncthing-macos project is a native macOS Syncthing tray application bundle. It bundles its own syncthing instance and wraps Syncthing, making it behave more like a native macOS application and less like a command-line utility with a web browser interface.

Features include:

  • Open the Syncthing WebGUI from the tray in your system preferred browser.
  • Optionally starts on login, so you don't need to set up Syncthing as a service.
  • Tray icon syncthing status indicator.
  • Retina ready icons for the Application bundle and status tray.
  • Automatic updates (using Sparkle pushed from github releases).
  • Open shared folders in Finder.
  • Logfile written to ~/Library/Application Support/Syncthing/syncthing.log, use Finder -> Go -> Go to Folder to open it.

Screenshot

screenshot.png

Installation

NOTICE: This is the official Syncthing macOS application bundle. Please make sure you have no other syncthing instances or wrappers running or else this application will not work!

Currently, OS X 10.10 or higher is necessary. syncthing-macos is packaged as a disk image as an application bundled with the syncthing binary.

To install just download the dmg, mount it and drag and drop the application to install. The only necessary configuration is to set the API key and URL when provisioning a remote syncthing instance, the local instance is auto-configured. The application automatically keeps the syncthing binary updated, while running.

The latest version is available at Github Releases, or it can also be installed using homebrew brew install --cask syncthing

Why

All cross-platform approaches are not able to use all the native facilities of macOS. Including auto-updates, vector icon set (retina-ready) and creating an application bundle. GUIs are designed with XCode and everything is coded in Objective-C and Swift which is "the native approach".

Goal

The goal of this project is to keep the Native macOS Syncthing tray as simple as possible. No graphs, no advanced configuration windows. It just provides a very simple wrapper so users are not aware syncthing ships as a commandline application. It strives to have a usability of good-by-default and should always follow the Apple Human Interface Guidelines to feel as much as an native application as possible.

Known bugs

See the issue tracker for the current status.

Contributions

Contributions and issue reports are welcome.

License

MIT

FAQ: Frequently asked questions

macOS version support

  • From release v1.14.0-1 macOS 10.12 is required
  • Until release v1.13.1-1 macOS 10.11 or higher is supported

Preferences

syncthing-macos is designed to run its own syncthing instance and automatically detect the API key. The preferences window is used to point to a local running instance, a remote instance is not supported. It is possible to run your own instance and point to it for advanced/development purposes. You should only change the settings if you know what you are doing.

Default IP address change

When the default IP address is changed from 127.0.0.1 to a routable one like e.g 192.168.1.102 the tray application preferences need to be set also. Or else the API cannot be accessed and will stay 'Offline'. If you broke the configuration you can manually edit the file under the ~/Library/Application Support/Syncthing/config.xml using Finder with Go -> Go to folder. And restart the syncthing service from the tray.

Uninstallation

On Mac OS X you drop the application from the Application folder to your Trash. But there are some user specific files are kept elsewhere, which are located under $HOME/Library/Application Support/Syncthing. The files in this folder are the configuration, encryption/profile files and the database cache. For more information see docs.syncthing.net/users/config.html.

Prerequisites for building/using everything in this repository

Before compiling git submodules needs to be present:

git submodule update --init
  • Xcode, for the Objective-C/Swift compiler
  • Python 3, for the update-release.py script
  • Cocoapods for updating Objective-C/Swift 3th party depedencies
  • Golang, only needed for Sparkle Github releases to Appcast XML tool

Using XCode

The new syncthing.xcworkspace must be used when coding in XCode. The old syncthing.xcodeproj is deprecated.

Compiling from Terminal

Build with XCode or run:

make debug

It will automaticly download syncthing universal binary and add it to the Application Bundle.

For release builds signing the application build and creating an distributable DMG:

make release-dmg

The script will select the first available Developer ID and sign the app with it. To specify the signing identity, use SYNCTHING_APP_CODE_SIGN_IDENTITY environment variable:

SYNCTHING_APP_CODE_SIGN_IDENTITY="Mac Developer: [email protected] (XB59MXU8EC)" make release-dmg

Design and useful information

Settings

The Syncthing settings use the NSDefaults facility. From the commandline all settings can be shown with:

[email protected] ~ % 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";
}

Dependency management

CocoaPods is used for dependency management. It can be installed with Homebrew package manager. For more information about CocoaPods read the CocoaPods Guides.

Versioning scheme

It uses the shipped syncthing executable version appended with a -<build index> number. So for Syncthing 0.14.28 with first build/package it is versioned as 0.14.28-1. Currently there is no need for having a separate version for syncthing-macos. As it also keeps the wrapper tightly coupled with the syncthing releases.

Compilation and packaging process

  • Xcode builds all sources
  • Syncthing resource is fetched with syncthing/Scripts/syncthing-resource.sh
  • Fancy DMG disk image is generated with syncthing/Scripts/create-dmg.sh
    • The version part of the DMG name is fetched from syncthing/Info.plist, key CFBundleShortVersionString
  • Both the app bundle and the DMG are signed with the first available Developer ID certificate, if found (or the one specified through SYNCTHING_APP_CODE_SIGN_IDENTITY environment variable)

syncthing/syncthing-macos will only ship stable releases and no release candidates of the Syncthing Service (daemon).

Apple Application Notarize

After the dmg is created it must be send to Apple to be notarized. It can be checked with spctl if the app is correctly verified by Apple for distribution:

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)

When it is not correctly notarized the following output is seen (note the source):

spctl -a -t exec -vvv /Volumes/Syncthing/Syncthing.app
/Volumes/Syncthing/Syncthing.app: accepted
source=Developer ID
origin=Developer ID Application: Jakob Borg (LQE5SYM783)

See also https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution

New release

To update the bundled syncthing the make release-update must be run from the main folder which does basicly these steps automaticly:

  • Update syncthing/Scripts/syncthing-resource.sh, SYNCTHING_VERSION

  • Update syncthing/Info.plist

    • CFBundleShortVersionString (e.g 0.14.50-dev or 0.14.50-1)
    • CFBundleVersion (e.g 145000 or 145001)
  • Manually create a github release

  • Download the release dmg from build.syncthing.net which is correctly signed and notarized

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].