Code Monkey home page Code Monkey logo

saber's Introduction

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

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.

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

Build for Android Build for iOS Build for Linux Build for macOS Build for Windows Run tests

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}.flatpak from the latest Release and install with flatpak --user install Saber_*.flatpak

Option 3: Download Saber-{version}-x86_64.AppImage from the latest Release, make it executable with chmod +x Saber-*-x86_64.AppImage, then run it.

Option 4: 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

See #4 How to install on iOS

macOS

Download Saber_{version}.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.

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)
  • Brazilian Portuguese (pt_BR)
  • Russian (ru)
  • Turkish (tr)
  • Chinese Simplified (zh_Hans-CN)
  • Chinese Traditional (zh_Hant-TW)

Extending existing languages

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

  1. Use this link to edit _missing_translations.json.
  2. 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...
  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.json where XX is your locale code.
  3. 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.
  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 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/ and flatpak/com.adilhanney.saber.metainfo.xml as directed by the script.
  • When updating the icons, run the following commands:
    • General: flutter pub run icons_launcher:create
    • Flatpak icons: cd assets/icon && ./resize-icon.sh
  • When updating the translations...
    • Run the following commands:
      • flutter pub run slang apply --locale=XX if you need to apply _missing_translations.json
      • flutter pub run slang
      • flutter pub run slang analyze --full
    • If you're adding a new language, update:
      • CFBundleLocalizations in ios/Runner/Info.plist
      • android/app/src/main/res/xml/locales_config.xml
      • lib/data/locales.dart
      • README.md above in the "Translating" section.

saber's People

Contributors

adil192 avatar jhihyulin avatar sdarfeesh avatar albanobattistella avatar shevt avatar ceskydj avatar soyjosuefischer avatar fybx avatar mxhdee avatar comcloudway avatar dependabot[bot] avatar mamasch19 avatar polux49 avatar yurtemre7 avatar muhammadbahaa2001 avatar alanbosco003 avatar mustarcimbora avatar licaon-kter avatar xmha97 avatar toobaz avatar semgrep-bot avatar takoyakituesday avatar

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.