You can read this file in: English, češtině, Deutsch, 繁體中文
As the developer of Saber, I am thrilled to introduce you to an app that revolutionizes the way you take notes. Saber is the ultimate handwritten notetaking app designed to elevate your note-taking experience to new heights! Embrace the art of handwriting and unleash your creativity with this feature-rich application, powered by cutting-edge technologies. Saber's intuitive and modern interface makes it effortless to jot down notes, draw diagrams, or annotate PDFs with precision.
As I was beginning to make digital notes, I couldn't find any private open-source apps that fit my requirements so I ended up having to use a proprietary app. I decided to create Saber to give people a choice of a private open-source app that they can trust. Saber is completely open-source, meaning that anyone can audit the code to ensure that it is secure and private. Saber encrypts your data and can sync to any compatible server of your choice, giving you complete control over your data.
Do you like to make notes on a tablet then transfer them to your computer? Or perhaps you prefer to type your notes on a laptop and then annotate them on a tablet? Whatever your workflow, Saber has you covered with its multi-platform support, allowing you to access your notes anytime, anywhere, on any device. Saber is available on Android, iOS, Windows, macOS, and Linux, with your notes automatically synchronized across all your devices. And if you're offline, Saber will automatically sync your notes when you're back online.
Saber features the best digital highlighter you've ever used. Have you ever needed to highlight multiple lines but hated the way the highlighter would overlap and change color? Saber utilizes advanced graphics processing to handle overlaps and maintain pen color consistency, giving you a highlighter experience better than traditional paper.
Saber has everything you need to keep your notes organized. Create folders inside folders inside folders to your heart's content with no limit on the number of nested folders. And even though a note may be buried deep within a nested folder, you can still access it easily with your most recent notes always available on the home screen.
Saber can intelligently invert your notes when you're in dark mode. This means that you can experience the entire note-taking experience in dark mode, including your images, for a soothing and cohesive interface in low-light environments.
Discover a whole new way to capture and organize your thoughts with Saber. Whether you're a student, professional, or creative mind, Saber is your trusted companion for digital handwriting. Download now and let your ideas flow freely!
Please see #1 Saber progress.
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_{version}.apk
from the latest Release.
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 thanks to @soumyaDghosh.
sudo snap install saber
Download and install SaberInstaller_{version}.exe
from the latest Release.
If you get missing dll errors, make sure you have Visual C++ Redistributable installed.
Download Saber on the App Store.
Tap to show/hide build instructions
https://docs.flutter.dev/get-started/install
git clone https://github.com/saber-notes/saber.git
flutter pub get
Setup for the super_clipboard package can be summarised as:
- Install Rust
- Install NDK 25.2.9519653 if you're building for Android
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: FOSS/F-Droid builds are done slightly differently:
./patches/remove_proprietary_dependencies.sh
flutter build apk --dart-define=OFFLINE_FONTS_ONLY="true"
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)
- Arabic (ar)
- Czech (cs)
- German (de)
- Spanish (es)
- Persian (fa)
- French (fr)
- Hebrew (he)
- Hungarian (hu)
- Italian (it)
- Japanese (ja)
- Brazilian Portuguese (pt_BR)
- Russian (ru)
- Turkish (tr)
- Chinese Simplified (zh_Hans-CN)
- Chinese Traditional (zh_Hant-TW)
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
- 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.
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 xml:lang="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.
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
./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: