Open source bible study program on Linux!

Overview

Open Witness Library

Open Witness Library is a program to read articles that carries God's true name.

Warning

This branch is outdated, please refer to the most recent branch.

This program is a alternative for JW Library app1 for OSes that doesn't support the app or had lost support through the years. You can read .jwpub files and study Bible.

Features

This program still is a work-in-progress, so it isn't full compatible with all publications and publication's features. You can track the features present on the program there:

  • Publications:
    • Read the publications;
    • Aswner the publication questions on textboxes;
    • Highlight publication text;
    • Make notes;
    • Watch publication's videos;
  • Bible:
    • Read Bible; You can read partially Bible's content
    • Bookmark Bible versicles and chapters;
    • Read from Publications;
    • Compare multiple Bible editions;

Installation

See Building for more information.

Building

For testing the app, you need to setup a Rust development environment on your operational system. After installing every depedency and following the prerequisites below, you should install Rustup through the official site or from your package manager and download the latest Rust language version.

Windows

For Windows, see Windows prerequisites.

MacOS

For MacOS, you will need to install CLang and MacOS development dependencies. To do this, run the following command in your terminal:

$ xcode-select --install

Linux

For Linux, you will need to install some packages in order to work, see the instruction on how to install based in your Linux distro.

WASM UI setup

After installing the depedencies, you'll need to setup Cargo for compiling the application UI and serving it locally. To do it, install Trunk via Cargo:

cargo install --locked trunk
# Until wasm-bindgen has pre-built binaries for Apple M1, 
# M1 users will need to install wasm-bindgen manually.
cargo install --locked wasm-bindgen-cli

and add wasm32-unknown-unknown target to your rustup installation:

rustup target add wasm32-unknown-unknown

Running the application

To run the application you'll need to install a last tool to cargo, the tauri-cli plugin. To install it run the following command to your terminal:

cargo install tauri-cli --version "^2.0.0-alpha"

After installing it, you can run the application with the following command:

cargo tauri dev

Running on mobile

Open Witness Library also runs on Android and iOS, but it isn't fully supported. If you want to test it out on Android, you need to add the Android targets to your rustup installation by running the following command:

rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android

You will need to install Android Studio and setup it to your system.

Install the Android SDK and NDK. You can use the SDK Manager in Android Studio to install:

  1. Android SDK Platform
  2. Android SDK Platform-Tools
  3. NDK (Side by side)
  4. Android SDK Build-Tools
  5. Android SDK Command-line Tools

You will need to configure JDK too. Android Studio includes a JDK, you will just need to add it to your environment variables:

# On windows
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Android\Android Studio\jbr", "User")
# On MacOS
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"

# On Linux
# Note that on older Android Studio installations the 
# jbr directory may still be called jre
export JAVA_HOME=/opt/android-studio/jbr

and finally, you need to set ANDROID_HOME and NDK_HOME environment variables:

# On Windows (change NDK_VERSION to the version located in the path without brackets)
[System.Environment]::SetEnvironmentVariable("ANDROID_HOME", "$env:LocalAppData\Android\Sdk", "User")
[System.Environment]::SetEnvironmentVariable("NDK_HOME", "$env:LocalAppData\Android\Sdk\ndk\{NDK_VERSION}", "User")
# On Linux (change NDK_VERSION to the version located in the path without brackets)
export ANDROID_HOME="$HOME/Android/Sdk"
export NDK_HOME="$ANDROID_HOME/ndk/{NDK_VERSION}"

# On MacOS (change NDK_VERSION to the version located in the path without brackets)
export ANDROID_HOME="$HOME/Library/Android/sdk"
export NDK_HOME="$ANDROID_HOME/ndk/{NDK_VERSION}"

To run in Android, you can run the following command:

cargo tauri android dev

Running in iOS

You can also run on iOS, but you will need a MacOS device. I don't know if it will run since I didn't have an iOS device or a MacOS computer/laptop, but you can test it. First, make sure Xcode is properly installed. Then, you should add the iOS target to your MacOS rustup installation:

rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim

Then you can run your application on iOS with the following commmand:

cargo tauri ios dev

Disclaimer

This program don't have any relationship with JW Library developers or the Watch Tower Bible and Tract Society of Pennsylvania. This is a program maintened by the community. Any bug you have using this program should be issued there.

If your computer or mobile phone runs JW Library, please prefer to use the official app instead of this program.

Footnotes

  1. JW Library is a registered trademark of Watch Tower Bible and Tract Society of Pennsylvania.

You might also like...
qfetch is a tool that fetches info about your linux install.

qfetch qfetch is a tool that fetches info about your linux install. Status Dependencies /proc/meminfo with the following fields: MemTotal in the 1st l

API for the creation character based games in Linux.
API for the creation character based games in Linux.

Console Game Engine for Linux. API for the creation of character based games in Linux. The inspiration came from the olcConsoleGameEngine. This is my

Streaming I/O for Linux built on DMA Buffers

dmastorage High-performance I/O for Linux based on DMA Buffers ALPHA QUALITY SOFTWARE Warning DmaStorage is still just a concept and shouldn't be used

A tiny Rust std-lib for Linux x86_64 and aarch64

Tiny std Like a bad, probably buggy, tiny standard library for Linux. When it's appropriate If you are actually trying to do something solid, checkout

An ownership model that is used to replace the Ring in Linux.

std-ownership An ownership model that is used to replace the Ring in Linux. It's 10x faster than Ring in Syscall. Overview The ownership system allows

Linux daemon to bind keys and macros to your controller's buttons

makima Makima is a daemon for Linux to bind your controller's buttons to key sequences and macros. Features: Configure your keybindings through a simp

Blazing fast, memory safe & modern Linux package manager written in Rust.

paket Blazing fast, memory safe & modern Linux package manager written in Rust. Roadmap Version: 0.1 Paket.toml file parsing. (#1, #2) CLI handling (p

Rust-based linux reverse shell listener.
Rust-based linux reverse shell listener.

Catch Rust-based linux reverse shell listener. Installation TODO: fix this installation guide, but this kinda works: mkdir /opt/catch/ cd /opt/catch/

The source code that accompanies Hands-on Rust: Effective Learning through 2D Game Development and Play by Herbert Wolverson
The source code that accompanies Hands-on Rust: Effective Learning through 2D Game Development and Play by Herbert Wolverson

Hands-on Rust Source Code This repository contains the source code for the examples found in Hands-on Rust. These are also available from my publisher

Comments
  • Site does not work properly

    Site does not work properly

    Hi brother,

    This project looks great. But I'm stumble on 1 problem. I couldn't not manage to let it work properly.

    When I startup the project I only see this (see picture below), and when click on it, nothing happens. I'm missing something? Or did I do something wrong?

    Could you help me?

    image

    opened by Dosojin1 10
Owner
Wellington Júnior
Just a young boy in love with some computers, art and poetry
Wellington Júnior
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners

CleanIt Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners Motivation Motivation is to build a complete

Kristoffer Rakstad Solberg 216 Dec 13, 2022
Maai_core is an open source AI that is written in rust

maai_core is an open source AI that is written in rust. It is more focused on being lightweight and speedy.

Max Beier 2 Aug 1, 2022
Diosic is an open source web-based music collection server and streamer

Diosic is an open source web-based music collection server and streamer. Mainly suitable for users who need to deploy on servers with low hardware specifications.

Jinker 45 Jan 28, 2023
An open source WCH-Link library/command line tool written in Rust.

wlink - WCH-Link command line tool NOTE: This tool is still in development and not ready for production use. Known Issue: Only support binary firmware

WCH MCU for Rust 22 Mar 7, 2023
An open-source UCIe implementation developed at UC Berkeley.

UCIe An open-source UCIe implementation developed at UC Berkeley. This project is very early-stage. If you are interested in contributing, see below.

null 3 Aug 18, 2023
An AI-native lightweight, reliable, and high performance open-source vector database.

What is OasysDB? OasysDB is a vector database that can be used to store and query high-dimensional vectors. Our goal is to make OasysDB fast and easy

Oasys 3 Dec 25, 2023
Incremental Program Analysis Framework

IncA Overview IncA is a program analysis framework. It comes with a DSL for the definition of program analyses and the runtime system evaluates progra

Tamas Szabo 70 Nov 24, 2022
Mewl, program in cats' language; A just-for-fun language

Mewl The programming language of cats' with the taste of lisp ?? What,Why? Well, 2 years ago in 2020, I created a esoteric programming language called

Palash Bauri 14 Oct 23, 2022
CLI program written in Rust to anonymize DICOM files

dicom-anonymizer CLI program written in Rust to anonymize DICOM files anonymizer 0.1.0 Domenic Melcher USAGE: anonymizer [OPTIONS] <FILE> ARGS:

Domenic Melcher 2 May 30, 2022
📱️🚫️🌝️💾️ 3FakeIM is a joke program meant to imitate various fictional characters, and the "[CHARACTER] CALLED ME AT 3:00 AM" clickbait trend, while poking fun.

3FakeIM ??️??️??️??️ 3FakeIM is a joke program meant to imitate various fictional characters, and the "[CHARACTER] CALLED ME AT 3:00 AM" clickbait tre

Sean P. Myrick V19.1.7.2 2 Jul 3, 2023