diff --git a/README.md b/README.md index 68d92554..dfa118ff 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ This README covers build instructions, for information on Cwtch itself please go - `install.home.sh` installs the app into your home directory - `install.sys.sh` as root to install system wide - or run out of the unziped directory +- MacOS: Cwtch.dmg coming soon... ## Running @@ -46,6 +47,16 @@ You will probably want to disable Analytics on the Flutter Tool: `flutter config - Follow the steps above to fetch `libCwtch-go` and `tor` (these will fetch Android versions of these binaries also) - run `flutter run` with an Android phone connect via USB (or some other valid debug mode) +### Building on MacOS + +- get https://git.openprivacy.ca/cwtch.im/libcwtch-go/ and run `make macos` +- copy the resulting libCwtch.dylib into this folder +- Download and install Tor Browser (it's currrently the only way to get tor for macos) +- `flutter build macos` +- `./macos/package-release.sh` + +results in a Cwtch.dmg that has libCwtch.dylib and tor in it as well and can be installed into Applications + ### Known Platform Issues - **Windows**: Flutter engine has a [known bug](https://github.com/flutter/flutter/issues/75675) around the Right Shift key being sticky. diff --git a/lib/cwtch/ffi.dart b/lib/cwtch/ffi.dart index 7275438d..82de6c74 100644 --- a/lib/cwtch/ffi.dart +++ b/lib/cwtch/ffi.dart @@ -115,10 +115,10 @@ class CwtchFfi implements Cwtch { bundledTor = "Tor\\Tor\\tor.exe"; } else if (Platform.isMacOS) { cwtchDir = envVars['CWTCH_HOME'] ?? path.join(envVars['HOME']!, "Library/Application Support/Cwtch"); - if (await File("ui.app/Contents/MacOS/Tor/tor.real").exists()) { - bundledTor = "ui.app/Contents/MacOS/Tor/tor.real"; - } else if (await File("/Volumes/cwtch/ui.app/Contents/MacOS/Tor/tor.real").exists()) { - bundledTor = "/Volumes/cwtch/ui.app/Contents/MacOS/Tor/tor.real"; + if (await File("Cwtch.app/Contents/MacOS/Tor/tor.real").exists()) { + bundledTor = "Cwtch.app/Contents/MacOS/Tor/tor.real"; + } else if (await File("/Volumes/Cwtch/Cwtch.app/Contents/MacOS/Tor/tor.real").exists()) { + bundledTor = "/Volumes/Cwtch/Cwtch.app/Contents/MacOS/Tor/tor.real"; } } diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 9bcedd76..55cfcda1 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -57,7 +57,7 @@ 2FFAA895D8F20891DA4D87C5 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* ui.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ui.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10ED2044A3C60003C045 /* Cwtch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cwtch.app; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; @@ -112,7 +112,7 @@ 33CC10EE2044A3C60003C045 /* Products */ = { isa = PBXGroup; children = ( - 33CC10ED2044A3C60003C045 /* ui.app */, + 33CC10ED2044A3C60003C045 /* Cwtch.app */, ); name = Products; sourceTree = ""; @@ -192,7 +192,7 @@ ); name = Runner; productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* ui.app */; + productReference = 33CC10ED2044A3C60003C045 /* Cwtch.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -425,6 +425,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); + PRODUCT_NAME = Cwtch; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -551,6 +552,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); + PRODUCT_NAME = Cwtch; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -571,6 +573,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); + PRODUCT_NAME = Cwtch; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index e459656f..35f5d0f8 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -15,7 +15,7 @@ @@ -31,13 +31,13 @@ - - + + - - diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png index 3c4935a7..7b5c1a36 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png index ed4cc164..48705d56 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png index 483be613..ffac929b 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png index bcbf36df..932b2083 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png index 9c0a6528..d474887f 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png index e71a7261..e50812f7 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png index 8a31fe2d..c141911d 100644 Binary files a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/macos/make-icns.sh b/macos/make-icns.sh index 4160cbc3..51768416 100755 --- a/macos/make-icns.sh +++ b/macos/make-icns.sh @@ -3,14 +3,22 @@ output_iconset_name="cwtch.iconset" mkdir $output_iconset_name sips -z 16 16 $input_filepath --out "${output_iconset_name}/icon_16x16.png" +cp "${output_iconset_name}/icon_16x16.png" Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png sips -z 32 32 $input_filepath --out "${output_iconset_name}/icon_16x16@2x.png" sips -z 32 32 $input_filepath --out "${output_iconset_name}/icon_32x32.png" +cp "${output_iconset_name}/icon_32x32.png" Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png sips -z 64 64 $input_filepath --out "${output_iconset_name}/icon_32x32@2x.png" +cp "${output_iconset_name}/icon_32x32@2x.png" Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png sips -z 128 128 $input_filepath --out "${output_iconset_name}/icon_128x128.png" +cp "${output_iconset_name}/icon_128x128.png" Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png sips -z 256 256 $input_filepath --out "${output_iconset_name}/icon_128x128@2x.png" sips -z 256 256 $input_filepath --out "${output_iconset_name}/icon_256x256.png" +cp "${output_iconset_name}/icon_256x256.png" Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png sips -z 512 512 $input_filepath --out "${output_iconset_name}/icon_256x256@2x.png" sips -z 512 512 $input_filepath --out "${output_iconset_name}/icon_512x512.png" +cp "${output_iconset_name}/icon_512x512.png" Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +sips -z 1024 1024 $input_filepath --out "${output_iconset_name}/icon_1024x1024.png" +cp "${output_iconset_name}/icon_1024x1024.png" Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png iconutil -c icns $output_iconset_name diff --git a/macos/package-release.sh b/macos/package-release.sh index fc9346cc..2fb65cf1 100755 --- a/macos/package-release.sh +++ b/macos/package-release.sh @@ -2,22 +2,22 @@ # Run from SRCROOT -cp libCwtch.dylib build/macos/Build/Products/Release/ui.app/Contents/Frameworks/ -cp -r /Applications/Tor\ Browser.app/Contents/MacOS/Tor build/macos/Build/Products/Release/ui.app/Contents/MacOS/ +cp libCwtch.dylib build/macos/Build/Products/Release/Cwtch.app/Contents/Frameworks/ +cp -r /Applications/Tor\ Browser.app/Contents/MacOS/Tor build/macos/Build/Products/Release/Cwtch.app/Contents/MacOS/ -rm cwtch.dmg +rm Cwtch.dmg rm -r macos_dmg mkdir macos_dmg -cp -r "build/macos/Build/Products/Release/ui.app" macos_dmg/ +cp -r "build/macos/Build/Products/Release/Cwtch.app" macos_dmg/ create-dmg \ - --volname "cwtch" \ + --volname "Cwtch" \ --volicon "macos/cwtch.icns" \ --window-pos 200 120 \ --window-size 800 400 \ --icon-size 100 \ - --icon "ui.app" 200 190 \ - --hide-extension "ui.app" \ + --icon "Cwtch.app" 200 190 \ + --hide-extension "Cwtch.app" \ --app-drop-link 600 185 \ - "cwtch.dmg" \ + "Cwtch.dmg" \ macos_dmg