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.
Features
Please see #1 Saber progress.
Install
Tap to show/hide install instructions
Android
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_{version}.apk
from the latest Release.
Linux
Option 1 (recommended):
Install the flatpak from Flathub: flatpak --user install com.adilhanney.saber
.
Option 2:
Download Saber-{version}-x86_64.AppImage
from the latest Release,
make it executable with chmod +x Saber-*-x86_64.AppImage
, then run it.
Option 3:
There's an unofficial snap available. For any issues with the snap,
please file an issue here: https://github.com/soumyaDghosh/saber.
sudo snap install saber
Windows
Download and install SaberInstaller_{version}.exe
from the latest Release.
If you get missing dll errors, make sure you have Visual C++ Redistributable installed.
iOS and macOS
Download Saber on the App Store.
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. Install additional dependencies
Setup for the super_clipboard package can be summarised as:
- Install Rust
- Install NDK 25.2.9519653 if you're building for Android
5. Build for...
Linux
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.
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:
./patches/remove_proprietary_dependencies.sh
flutter build apk -t lib/main_fdroid.dart
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
All translations are crowd-sourced. Saber has so far been translated into:
- English (en)
- Arabic (ar)
- Czech (cs)
- German (de)
- Spanish (es)
- Persian (fa)
- French (fr)
- Hungarian (hu)
- Italian (it)
- Japanese (ja)
- Brazilian Portuguese (pt_BR)
- Russian (ru)
- Turkish (tr)
- Chinese Simplified (zh_Hans-CN)
- Chinese Traditional (zh_Hant-TW)
Extending existing languages
Check _missing_translations.yaml to see if any translations are missing.
- Use this link
to edit
_missing_translations.yaml
. - Update your
_missing_translations.yaml
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
Adding a new language
- 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 in
lib/i18n/community/
calledstrings_XX.i18n.yaml
whereXX
is your locale code. - Copy the contents of an existing file like
lib/i18n/strings.i18n.yaml
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.
Translating app store descriptions
We have 2 formats for app store descriptions:
-
F-Droid/Play Store:
i. Open
metadata/en-US/
and copy thefull_description.txt
andshort_description.txt
files into themetadata/XX/
folder whereXX
is your locale code. Then translate the contents of the files.ii. Changelogs are automatically translated from the English version. If you spot a mistake, please edit the translated changelog in
metadata/XX/changelogs/<version-code>.txt
whereXX
is your locale code. -
Linux .desktop file:
i. Open
flatpak/com.adilhanney.saber.desktop
and add a line for theComment
key with the following format whereXX
is your locale code:Comment[XX]=Your translation
If you also need to translate the
Name
key, do the same thing. -
Flathub (optional):
i. Since this is slightly more technical, you can skip the Flathub part if you want to and I'll copy the translations from the above section.
ii. In
flatpak/com.adilhanney.saber.metainfo.xml
before the</description>
closing tag, add a line for your translation with the following format whereXX
is your locale code:<p language="XX">Your translation</p>
iii. In the same file, you can translate the changelogs by doing the same thing in the
<release>
tags before their</description>
closing tag.
Supporting Saber
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
Development notes
Show/hide development notes
- When updating the app version:
- Run
./scripts/apply_version.sh <version-name> <version-code>
(Run./scripts/apply_version.sh --help
for more info) - Update the changelogs in
metadata/en-US/changelogs/
andflatpak/com.adilhanney.saber.metainfo.xml
, and rundart scripts/translate_changelogs.dart
as directed by the script.
- Run
- When updating the icons, run the following commands:
- General:
dart run icons_launcher:create
- Flatpak icons:
cd assets/icon && ./resize-icon.sh
- General:
- When updating the translations...
- Run the following commands:
dart run slang apply --locale=XX
if you need to apply _missing_translations.yamldart run slang
dart run slang analyze --full
- If you're adding a new language, update:
CFBundleLocalizations
inios/Runner/Info.plist
CFBundleLocalizations
inmacos/Runner/Info.plist
android/app/src/main/res/xml/locales_config.xml
lib/data/locales.dart
README.md
above in the "Translating" section.- and run
dart scripts/translate_changelogs.dart
to translate the changelog.
- Run the following commands: