Code Monkey home page Code Monkey logo

saber-notes / saber Goto Github PK

View Code? Open in Web Editor NEW
1.8K 12.0 113.0 41.91 MB

The cross-platform open-source app built for handwriting

Home Page: https://saber.adil.hanney.org

License: GNU General Public License v3.0

Kotlin 0.62% Dart 95.06% CMake 1.23% C++ 1.64% C 0.09% Shell 0.19% Inno Setup 0.29% Swift 0.26% Objective-C 0.01% Ruby 0.18% Java 0.04% GLSL 0.40%
flutter notes notes-app saber android cross-platform dart handwritten-notes ios linux

saber's Introduction

Logo Saber

Get it on Google Play   Get it on F-Droid   Download on the App Store   Download for Windows   Download on Flathub   Get it as an AppImage   Get it from the Snap Store

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!

GitHub release (latest by date) Flathub F-Droid GitHub all releases Flathub GitHub Sponsors GitHub codecov

Tap to show/hide screenshots

Features

Please see #1 Saber progress.

Install

Tap to show/hide install instructions

Android

Options:

  1. Download from the Play Store

  2. 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.
  3. 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 thanks to @soumyaDghosh. 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/saber-notes/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 26.1.10909125 if you're building for Android

5. Build for...

Linux

sudo apt install libsecret-1-dev libjsoncpp-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-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: FOSS/F-Droid builds are done slightly differently:

./patches/remove_proprietary_dependencies.sh
flutter build apk --dart-define=OFFLINE_FONTS_ONLY="true"

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)
  • 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)

I'm experimenting with using Weblate to crowd-source translations. More information coming soon.

Extending existing languages

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

  1. Use this link to edit _missing_translations.yaml.
  2. 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...
  3. Open a pull request! I'll do the rest

Adding a new language

  1. Look for your locale code here, e.g. hi for Hindi, fr for French, bn for Bengali, ar for Arabic, etc.
  2. Use this link to create a new file in lib/i18n/community/ called strings_XX.i18n.yaml where XX is your locale code.
  3. 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.
  4. 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:

  1. 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.

  2. 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.

  3. 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.

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/ and flatpak/com.adilhanney.saber.metainfo.xml, and run dart scripts/translate_changelogs.dart as directed by the script.
  • When updating the icons, run the following commands:
    • General: dart run icons_launcher:create
    • Flatpak icons: cd assets/icon && ./resize-icon.sh
  • When updating the translations...
    • Run the following commands:
      • dart run slang apply --locale=XX if you need to apply _missing_translations.yaml
      • dart run slang
      • dart run slang analyze --full
    • If you're adding a new language, update:
      • 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.
      • and run dart scripts/translate_changelogs.dart to translate the changelog.

saber's People

Contributors

adil192 avatar albanobattistella avatar araxthecoder avatar ceskydj avatar comcloudway avatar dependabot[bot] avatar fybx avatar gamemodeop avatar hubortje avatar jesse205 avatar jhihyulin avatar licaon-kter avatar mamasch19 avatar muhammadbahaa2001 avatar mxhdee avatar myanesp avatar pabloscloud avatar polux49 avatar qubab avatar rcaneill avatar sdarfeesh avatar shevt avatar soumyadghosh avatar soyjosuefischer avatar strk avatar takoyakituesday avatar theiuser avatar toobaz avatar yurtemre7 avatar zebravogel94349 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

saber's Issues

Adding Grid and Ruled Lines for Android

Great app, love it! I am personally migrating from OneNote and want to use Saber as a replacement for it.

I generally use hand written notes for school notes and need to draw diagrams, which is why grid lines are essential for my use. The app otherwise seems perfect. Thank you for your work :)

S-Pen testing and unrelated bug report

Hi! Thanks for developing Saber, I like it a lot, especially as an alternative to S-Notes, etc.

I've tested the "erase" function with my S-Pen (Samsung Galaxy Note 10+, Snapdragon); the app crashes when the button is pressed and the stylus touches the screen.

Also, an unrelated bug:

  1. I zoom in on the canvas
  2. Draw something
  3. Zoom out
  4. Draw something else

The mark drawn in step 2 will disappear when another mark is made in step 4. This occurs whether zooming in, then out, or out -> in.

Thank you, I hope this makes sense.

Elements Outside of Page

Describe the bug
Background patterns & lines are sometimes outside of the actual writable page
To Reproduce:
Steps to reproduce the behavior:

  1. create a new note
  2. draw a thick line along the edge of the page
  3. change the background pattern to dots or squares
  4. look near the edge of the page

Expected behavior:
Everything outside of the page is cut off.

Screenshots:
grafik
grafik
8d6af6e8-571e-40c1-b6bb-d290a7edc656
854384c4-9e96-401b-a9c5-f0a607ce12ae

Device (red screenshots):

  • Device: Galaxy Tab S6 Lite
  • OS: Android 12
  • Version: v0.4.6

Device (green screenshots):

  • Device: Web Version on PC
  • Browser: Firefox
  • OS: Windows 10
  • Version: v0.4.6

Stylus support

Is it possible to have a stylus-only feature, where only the stylus can draw and you can use your finger to navigate? Propriatery note taking apps like Nebo have this feature.

Rotating screen sometimes clears whiteboard

I noticed when I repeatedly switch between portrait and landscape orientation the app reproducibly clears the content of a note after a few switches.

I'm using the latest 0.4.1 build from F-Droid.

Add the ability to create text notes

It will be really cool if you could choose between creating a hand drawing note and only a text note, with a title, body, and add some images to it.

Erase parts of a line

  • The icon that is used at the moment doesn't look good in my opinion, and doesn't show what it does
  • having an eraser to delete (or clean) part of the line rather than deleting the entire line can be nice
  • And I believe having clear this page and all pages would be better to be on on the eraser table (when it gets added for area erase)

Pageless mode

It would be awesome if there were a pageless mode, allowing infinite scrolling in every direction. (sort of like OneNote)

Zooming with fingers leaves dots behind

There is this bug that Around 100% of the time when I want to move the board with finger drawing on, one of the fingers draw a dot on the board then the board moves, so it leaves multiple dots when you want to adjust the position of the board

Stylus Eraser Support

Stylus support is great on my Chromebook; I'd just would love to see the eraser on the pen switching to the stroke deletion tool.

When finger drawing is disabled, the last stylus stroke is removed when pinch zooming

I've been using the app on a Galaxy Tab S6 Lite, and the last stylus stroke gets removed when pinch zooming, but only if finger drawing is disabled.

I think it's treating the last stylus stroke as the mark made from the finger during pinch zoom. If I'm understanding correctly, I think it can be fixed by just checking if finger drawing is enabled before removing the last stroke.

I tested it and it seems to work for me, but I'm not familiar enough with the app to know if there might be unintended side effects. I'll open a small PR. Feel free to reject if I'm missing something obvious.

Thanks for your work on this app, it's really nice to have a FOSS notes app with proper stylus support.

Add "Clear Whiteboard" Button

Add an option to instantly clear the whiteboard, just like with the new "Clear this/all page(s)" button(s) for notes.

Accent color picker,

The colors that the app can pick can be a little bad, specially on darker themes, on some wallpapers. Having the ability to change it would be nice to have

Clear Whiteboard Automatically

Add an option to clear Whiteboard when user is exiting Saber
It would be helpful to users that want to use Saber temporarily (For example, Math Calculate)

S-pen button force close

Hello,

I was looking for a free alternative for Samsung Notes app. There're still many features to be implemented, but this is the best I found so far. Overall, great work!

To the point, on my Galaxy Note 10, pressing the S-pen button and drawing is expected to function as an eraser. However, doing so in Saber force closes the application. It would be great if this can be fixed and even better if it can function as an eraser.

Izzy Repo

If I remember correctly, the app used to be on the IzzyOnDroid repo, I only just now realized it's not anymore.

I usually like to install and update my apps through IzzyOnDroid repo if given the choice, since updates come out faster there and it has the same signature as the GitHub releases, leaving me the option to update manually if needed.

That brings the question: Is this a decision made on purpose now that it's in cluded in the official F-Droid Repo?

Stylus support: pressure & buttons

I own a Dell 2-in-1 Laptop, running Alpine Linux (Gnome 43) and installed Saber as a flatpak.

When I disable Finger drawing I'm no longer able to use either mouse or pen,
but with it enabled, both my pen and the touchscreen are being recognized.

Maybe adding a Pen mode, which only detects input from Wacom/Microsoft Pen Protocol pens.
Additionally, handling the pen button events (eraser) might be a good idea.

EDIT: Input pens also provide pressure data

Page management

It would be nice to have the ability to change page order, especially for people who likes to organize (almost) everything in one multi-page note. It could be a separate mode or tool so the UI won’t get cluttered.

I’m using the latest version (v0.4.7) on Android and there doesn’t seem to be any function to reorder the page. My own use case is to put frequently-used or important pages on the top so I can access them more easily.

  • Reordering pages
  • Duplicating pages
  • Deleting pages
  • Inserting pages
  • Click a page to scroll to it

Import PDFs as an image background

I love this app. In particular the feature of synchronising. Great would be the ability to import PDF files and draw on the PDF. As an example if you get in advance the presentation slides of a lecture in university you could mark important parts and write your own ideas direct on the slides.

Depends on #271

Navigation

The editor toolbar at bottom is overlapping with the iOS system toolbar.

Syncing not working

Really love the app. But syncing is not working. I created a nextcloud account und signed in. But when i write notes on my samsung galaxy s6 lite, it does not appear on my pc (PopOs).
The syncing arrows in the right up corners keep spinning but nothing happens. I checked in Nextcloud, and there are definitly some files in the saber Folder.

Thanks again for this great app

F-Droid

I'm not sure if the app fits the requirements of F-Droid, but do you think you could have Saber included in F-Droid? It would surely boost its popularity, while supporting libre software.

Option to Hide Tool bar and file name

Is your feature request related to a problem? Please describe.
I used to write notes in Android phone in landscape mode bottom and top bar cover a lot of writing area

Describe the solution you'd like
There should be option to hide top and bottom bar

Describe alternatives you've considered
Not possible

Device (please complete the following information):

  • Device: Redmi 9T
  • OS: Android 12L
  • Version: v0.4.9 F-Droid (409)

Additional context
Screenshot_20221225-200511_Saber

Allow Android users to sync to a local folder

Would you consider adding Syncthing support? Nextcloud is too heavy-weight for my home use case, where Syncthing suffices with its P2P support that doesn't require internet connection. It should be fairly easy to implement. Joplin does this by synchronizing notes to/from a directory in the system.

Useless confirm button in color picker

Custom accent color picker has a button to confirm your choice, but it still saves and applies your choice even if you hit the back button. To make the confirm button work, the change needs to be applied only when the button's pressed.

AppImage Support

AppImages are single-file binaries that can (virtually) run on any Linux machine.

Just 📥 download ➕ ⚙️ execute.

They need some time to get understood - but once setup they're just another entry in your build pipeline that does all the work on it's own - and provides users with a very versatile software format 😊

🪧 AppImage: https://github.com/AppImage

Improve whiteboard icon

Discussed in #45 (deleted)

Originally posted by iamjosuefischer October 26, 2022
I think the whiteboard icon that is used at the moment It is not related to its functionality, I suggest a new icon for the whiteboard that is more linked to its functionality to improve the UI design and experience. You should try the Draw Icon to replace it:

Draw Icon

Google Font URL: https://fonts.google.com/icons?selected=Material%20Icons%20Outlined%3Adraw%3A
Flutter ID: draw_outlined


Requested by: @iamjosuefischer to @adil192 for Saber.

Unable to login to personal Nextcloud

So far I love the app, so good work. I am trying to login to a self hosted nextcloud server. I tried using the regular url that I have setup and then the username, password and then entering an encryption password, but it says login failed. Due to the fact that I have TOTP setup on my instance and based off of a previous ticket that I saw, I then attempted to login using the https webdav url that is listed in nextcloud (https://example.com/remote.php/dav/files/username/) and the webdav password I have for that access but it still says that the login failed. I have confirmed that I am able to access both the normal nextcloud url that I have setup using the nextcloud app or a web browser, and webdav through both an ios device, and a file explorer and folder sync app on multiple android devices.
Thank you.

S Pen button crashes android app

I use my S Pen to take notes, and if I try to do so while holding down the button, the app crashes immediately upon touching the screen.

Samsung Notes lets you quickly erase stuff by holding down the S Pen button, so I instinctively tried to do that on Saber and was met with the crash lol

Marker opacity

Would it be possible to have the marker draw the lines with 80% opacity?
Currently, drawing a yellow line and a blue line results in only the blue being visible at a given point.
Current saber implementation

I think it might make more sense to have them overly above one another
quick krita sketch
As you can see, the yellow line can still be seen through the blue one.

I'm actually not sure, if this might be solved by #42 (if one would be able to set the alpha value for a given color)

Pen size and custom colors

I would love to see an option to change the brush size or to manually pick a color and save it as a favorite.

  • change the brush size
  • pick custom colors

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.