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.
Please see #1 Saber progress.
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
Options:
-
Download from the Play Store
-
Download from F-Droid
- Note that the F-Droid build is not optimised for Onyx Boox devices as this would require proprietary dependencies from Onyx.
-
Download and install
Saber.apk
from the latest Release.
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.
Download and install SaberInstaller.exe
from the latest Release
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
.
Tap to show/hide build instructions
https://docs.flutter.dev/get-started/install
git clone https://github.com/adil192/saber.git
flutter pub get
sudo apt install libsecret-1-dev libjsoncpp-dev
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.
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:
./patches/remove_proprietary_dependencies.sh
flutter build apk -t lib/main_fdroid.dart
flutter build web
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.
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.
All translations are crowd-sourced. Saber has so far been translated into:
- English (en)
- Czech (cs)
- German (de)
- Spanish (es)
- Italian (it)
- Russian (ru)
- Turkish (tr)
- Chinese Simplified (zh_Hans-CN)
- Chinese Traditional (zh_Hant-TW)
Check _missing_translations.json to see if any translations are missing.
- Use this link
to edit
_missing_translations.json
. - Update your
_missing_translations.json
file with your translations, e.g. updating German (de)"de": { "editor": { "newerFileFormat": { "title": "Diese Notiz wurde mit einer neueren Version von Saber bearbeitet", "subtitle": "Wenn du diese Notiz bearbeitest, können Daten verloren gehen. Möchtest du die Notiz trotzdem öffnen?", "openAnyway": "Trotzdem öffnen", "cancel": "Abbruch" } } }, // ignore the other languages...
- Open a pull request! I'll do the rest
- Look for your locale code here,
e.g.
hi
for Hindi,fr
for French,bn
for Bengali,ar
for Arabic, etc. - Use this link
to create a new file called
lib/i18n/strings_XX.i18n.json
whereXX
is your locale code. - Copy the contents of an existing file like
lib/i18n/strings.i18n.json
and replace the translations with your own. If you don't know the translation for a string, just delete the line. - Open a pull request!
Also see slang
's Getting Started for more information.
If you like Saber, please consider supporting it by:
- Spreading the word!
- Starring the project on GitHub
- Sponsoring me on GitHub Sponsors
- Donating via PayPal
- Buying more storage on the Nextcloud server: see Pricing
Show/hide development notes
- When updating the app version:
- Run
./apply_version.sh <version-name> <version-code>
(Run./apply_version.sh --help
for more info) - Update the changelogs in
metadata/en-US/changelogs/
andflatpak/com.adilhanney.saber.metainfo.xml
as directed by the script.
- Run
- When updating the icons, run the following commands:
- General:
flutter pub run icons_launcher:create
- Flatpak icons:
cd assets/icon && ./resize-icon.sh
- Web splash screen:
flutter pub run flutter_native_splash:create
- General:
- When updating the translations...
- Run the following commands:
flutter pub run slang apply --outdir=lib/i18n --locale=XX
if you need to apply _missing_translations.jsonflutter pub run slang
flutter pub run slang analyze --full --outdir=lib/i18n/
- If you're adding a new language, update:
CFBundleLocalizations
inios/Runner/Info.plist
android:supportsRtl
inandroid/app/src/main/AndroidManifest.xml
android/app/src/main/res/xml/locales_config.xml
README.md
above in the "Translating" section.
- Run the following commands: