The cross-platform open-source app built for handwriting
English | čeština | Deutsch | 中文 (简体中文, 中国) | 中文 (繁體, 台灣)
Saber is the notes app built for handwriting.
It's designed to be as simple and intuitive as possible, while still delivering unique features that you'll actually use. Additionally, Saber is available across all your devices, large and small, and syncs between them seamlessly.
Notably, it can invert your notes when you're in dark mode. This allows you to write with white ink on a black background, which is much easier on the eyes in low-light environments like when the teacher turns off the lights in class. Images and PDFs are also inverted, so you can still use a digital printout or a textbook without the fuss.
Saber uses a dual-password system to protect your notes from anyone but you, even if they have complete control over the server. You can safely store your notes on the official Saber server, another server, or even host your own!
The app is completely open-source so that anyone can view the source code and see exactly what it's doing and how it handles your data. Many other note-taking apps are closed-source and proprietary, meaning that their inner workings are a mystery to the public.
As someone who studies maths, highlighting multi-line equations was always a hassle with other apps, where the highlighter would change color when it overlapped with itself. Another problem I had was that in some apps, the highlighter would render on top of the text, fading it out and making it hard to read. Saber's highlighter has no such issues. It utilizes canvas compositing to render the highlighter in a way that is consistent with/better than traditional paper, where it handles overlaps and maintains color consistency.
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.
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.
Options:
Download from the Play Store
Download from F-Droid
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.
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:
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:
I'm experimenting with using Weblate to crowd-source translations. More information coming soon.
Check _missing_translations.yaml to see if any translations are missing.
_missing_translations.yaml
._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...
hi
for Hindi, fr
for French, bn
for Bengali, ar
for Arabic, etc.lib/i18n/community/
called strings_XX.i18n.yaml
where XX
is your locale code.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.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 the
full_description.txt
and
short_description.txt
files into the metadata/XX/
folder where XX
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
where XX
is your locale code.
Linux .desktop file:
i. Open
flatpak/com.adilhanney.saber.desktop
and add a line for the Comment
key with the following format where XX
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 where XX
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:
./scripts/apply_version.sh <version-name> <version-code>
(Run ./scripts/apply_version.sh --help
for more info)metadata/en-US/changelogs/
and flatpak/com.adilhanney.saber.metainfo.xml
,
and run dart scripts/translate_changelogs.dart
as directed by the script.dart run icons_launcher:create
cd assets/icon && ./resize-icon.sh
dart run slang apply --locale=XX
if you need to apply _missing_translations.yamldart run slang
dart run slang analyze --full
CFBundleLocalizations
in ios/Runner/Info.plist
CFBundleLocalizations
in macos/Runner/Info.plist
android/app/src/main/res/xml/locales_config.xml
lib/data/locales.dart
README.md
above in the "Translating" section.dart scripts/translate_changelogs.dart
to translate the changelog.