/saber

A (work-in-progress) cross-platform libre handwritten notes app

Primary LanguageDartGNU General Public License v3.0GPL-3.0

Logo Saber

A (work-in-progress) cross-platform libre notes app. Please note that this app is still in early stages and not ready to trust with your notes yet.

Android iOS Linux macOS Windows Web
Support

Android and Linux are the main platforms that are being developed for, but if you encounter any bugs on other platforms, please open an issue.

Tap to show/hide screenshots

Features

Please see #1 Saber progress.

Install

Saber is still in early stages but if you'd like to check it out, you can see the online PWA at saber.adil.hanney.org. Alternatively, install it natively...

Tap to show/hide install instructions

Android

Option 1 (recommended): Download and install Saber.apk from the latest Release.

Option 2: Download from F-Droid

Option 3: Download from the Play Store

Linux

Option 1 (recommended): Install the flatpak from Flathub: flatpak --user install com.adilhanney.saber.

Option 2: Download Saber.flatpak from the latest Release and install with flatpak --user install Saber.flatpak

Option 3: Download Saber-latest-x86_64.AppImage from the latest Release, make it executable with chmod +x Saber-latest-x86_64.AppImage, then run it.

Windows

Download and install SaberInstaller.exe from the latest Release

iOS

See #4 How to install on iOS

macOS

Download Saber.app.zip from the latest Release and move the Saber app to /Applications. macOS will warn you that the app is from an unidentified developer when you first open it, so you'll need to go to System Preferences > Security & Privacy and click Open Anyway.

Build from source

Tap to show/hide build instructions

1. Install flutter

https://docs.flutter.dev/get-started/install

2. Clone this project

git clone https://github.com/adil192/saber.git

3. Get dependencies

flutter pub get

4. Build for...

Linux

flutter build linux

This is good enough for using on your own computer, but if you want to redistribute your build, you need to use a predictable environment: fork this repo and use the GitHub Action Build for Linux instead.

Android

flutter build apk

You may need to generate a signing certificate and create the android/key.properties file. More information on https://docs.flutter.dev/deployment/android#create-an-upload-keystore

Note: F-Droid releases are built slightly differently: flutter build apk -t lib/main_fdroid.dart

The web

flutter build web

Windows

flutter build windows

The Windows installer is created with Inno Setup. To create an installer of your own, run the above build command, then edit and run installers/desktop_inno_script.iss with Inno Setup Compiler.

iOS and macOS

If you have a macOS computer, you can build for iOS with flutter build ipa or build for macOS with flutter build macos.

If you don't, fork this repo and use the GitHub Action Build for macOS and iOS. Alternatively, follow this YouTube tutorial How to compile a flutter application to iPhone with no mac (free | no jailbreak) to manually build with Codemagic.

Links

Translating

Extending existing translations

Check _missing_translations.json to see if any translations are missing.

  1. Fork this repo
  2. Update your _missing_translations.json file with your translations, e.g. updating Simplified Chinese (zh)
    "zh": {
      "editor": {
        "toolbar": {
          "highlighter": "荧光笔"
        }
      }
    },
    // ignore the other languages...
  3. Open a pull request! I'll do the rest

Adding a new language

  1. Fork this repo
  2. Look for your locale code here, e.g. hi for Hindi, fr for French, bn for Bengali, ar for Arabic, etc.
  3. Copy lib/i18n/strings.i18n.json to lib/i18n/strings_XX.i18n.json (replacing XX with your locale code)
  4. Translate the strings in lib/i18n/strings_XX.i18n.json
  5. Open a pull request!

Also see slang's Getting Started for more information.

Development notes

Show/hide development notes
  • When updating the app version, you'll need to make changes to the following files:
    • pubspec.yaml: version
    • lib/data/version.dart: buildNumber
    • windows/runner/Runner.rc: VERSION_AS_NUMBER and VERSION_AS_STRING
    • installers/desktop_inno_script.iss: MyAppVersion
    • flatpak/com.adilhanney.saber.metainfo.xml: <releases>
    • metadata/en-US/changelogs/: Create a changelog for the new version
  • When updating the icons, run the following commands:
    • General: flutter pub run icons_launcher:create
    • Flatpak icons: cd assets/icon && ./resize-icon.sh
  • When updating the translations...
    • Run the following commands:
      • flutter pub run slang
      • flutter pub run slang analyze --full --outdir=lib/i18n/
    • If you're adding a new language, edit CFBundleLocalizations in ios/Runner/Info.plist and android:supportsRtl in android/app/src/main/AndroidManifest.xml