From 04dba9ae3967b8a62b5d6e9073b73791b6fc2e77 Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Wed, 20 May 2026 19:27:53 +0200
Subject: [PATCH 01/12] docs(readme): Improve the prerequisites section
---
README.md | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index 9507b6c..70630d9 100644
--- a/README.md
+++ b/README.md
@@ -20,23 +20,24 @@ with inkview. And a demo application `inkview-slint-demo`.
`inkview-eg` is a [embedded-graphics-core](https://crates.io/crates/embedded-graphics-core) driver for inkview-rs.
-## Prerequisites
-
-[Zig](https://ziglang.org/learn/getting-started/#installing-zig) must be installed.
-
-To run recipes from the justfile, install the [just](https://github.com/casey/just) command runner.
-
-Available recipes can be listed with:
-
-```bash
-just --list
-```
-
-Then execute the following to install the `armv7-unknown-linux-gnueabi` rustc target and `cargo-zigbuild`:
-
-```bash
-just prerequisites
-```
+## Prerequisites (Set-up)
+
+1. [Zig](https://ziglang.org/learn/getting-started/#installing-zig) must be installed.
+1. To run recipes from the justfile, install the [just](https://github.com/casey/just) command runner.
+ Available recipes can be listed with:
+ ```bash
+ just --list
+ ```
+1. To set-up a reproducible sandbox build environment for the target `armv7-unknown-linux-gnueabi.2.23`
+one must install [NIX](https://nixos.org/download/) +
+[direnv](https://direnv.net/docs/installation.html) +
+[devenv](https://devenv.sh/getting-started/).
+ This way Nix installs the exact cross-compilation tools required for the e-reader,
+ while direnv automatically injects them into your shell the moment you enter the project directory.
+1. Then execute the following to install the `armv7-unknown-linux-gnueabi` rustc target and `cargo-zigbuild`:
+ ```bash
+ just prerequisites
+ ```
## Build
From c80e1f10d0a7371ebe309675e50e4fbbf90e6e89 Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Wed, 20 May 2026 20:06:47 +0200
Subject: [PATCH 02/12] docs(readme): Clarify the documentation by improving
the structure and providing examples
---
README.md | 45 +++++++++++++++++++++++++++++++++++----------
1 file changed, 35 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 70630d9..591743c 100644
--- a/README.md
+++ b/README.md
@@ -8,22 +8,26 @@
-This repo contains bindings for libinkview, which is used by pocketbook devices.
+This repo contains bindings for `libinkview`, which is used by pocketbook devices.
-We load libinkview dynamically rather than linking it so that users of this
-crate don't have to setup the pocketbook SDK. Instead you just need to
-cross-compile to `armv7-unknown-linux-gnueabi.2.23` (`cargo zigbuild` works well
-for this) and your binary will run on a pocketbook E-Reader.
+## Overview
+- `inkview` is the core of the project.
+It dynamically loads `libinkview` rather than linking it statically, so that users of this
+crate woudln't have to setup the pocketbook SDK during the build.
+Instead, one needs to cross-compile to `armv7-unknown-linux-gnueabi.2.23`
+(`cargo zigbuild` works well for this) and the binary will run on a pocketbook E-Reader.
-Also in this repo is `inkview-slint` which provides a slint `Backend` that works
-with inkview. And a demo application `inkview-slint-demo`.
+- `inkview-eg` is an [embedded-graphics-core](https://crates.io/crates/embedded-graphics-core) driver for `inkview-rs`.
-`inkview-eg` is a [embedded-graphics-core](https://crates.io/crates/embedded-graphics-core) driver for inkview-rs.
+- `inkview-slint` provides a backend for the [slint](https://github.com/slint-ui/slint)
+crate that works with `inkview`, with a respective demo project under `examples/inkview-slint-demo`.
-## Prerequisites (Set-up)
+The subprojects may contain examples that lay under `examples/` subfolders (e.g. `inkview/examples`)
+## Prerequisites (Set-up)
1. [Zig](https://ziglang.org/learn/getting-started/#installing-zig) must be installed.
-1. To run recipes from the justfile, install the [just](https://github.com/casey/just) command runner.
+1. [just](https://github.com/casey/just) command runner must be installed.
+ The build and deployment helper commands are defined in the [justfile](./justfile).
Available recipes can be listed with:
```bash
just --list
@@ -47,12 +51,33 @@ To build a binary crate located in this repo, run:
just pb_sdk_version= build-app
```
+For example:
+```bash
+just pb_sdk_version=6.8 build-app inkview-slint
+```
+
+**NOTE:** while the demo projects lay in the `./examples/` they are still apps,
+and therefore should be built with the `build-app` command
+
To build an example:
```bash
just pb_sdk_version= build-example
```
+For example:
+```bash
+just pb_sdk_version=6.8 build-example inkview hello_world
+```
+
+By default, the any build is going to be done with the `debug` profile.
+Changing the profile to `release`, one should add the `cargo_profile=release` argument.
+
+For example:
+```bash
+just pb_sdk_version=6.8 cargo_profile=release build-app inkview-slint-demo
+```
+
## Deploy a binary
To deploy a built binary to the device over USB, run the following,
From 209e49872477b5a4da3ad7b02f12d18ad5fcff03 Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Wed, 20 May 2026 20:09:40 +0200
Subject: [PATCH 03/12] docs(readme): add demo projects examples link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 591743c..881b6f3 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@ For example:
just pb_sdk_version=6.8 build-app inkview-slint
```
-**NOTE:** while the demo projects lay in the `./examples/` they are still apps,
+**NOTE:** while the demo projects lay in the [./examples/](./examples/) folder they are still apps,
and therefore should be built with the `build-app` command
To build an example:
From 59de40a6f0e9e608c41d1ac531c06107c2585b5a Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Wed, 20 May 2026 20:12:52 +0200
Subject: [PATCH 04/12] docs(readme): Unify styling
---
README.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 881b6f3..ae37131 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,7 @@
This repo contains bindings for `libinkview`, which is used by pocketbook devices.
## Overview
+
- `inkview` is the core of the project.
It dynamically loads `libinkview` rather than linking it statically, so that users of this
crate woudln't have to setup the pocketbook SDK during the build.
@@ -25,6 +26,7 @@ crate that works with `inkview`, with a respective demo project under `examples/
The subprojects may contain examples that lay under `examples/` subfolders (e.g. `inkview/examples`)
## Prerequisites (Set-up)
+
1. [Zig](https://ziglang.org/learn/getting-started/#installing-zig) must be installed.
1. [just](https://github.com/casey/just) command runner must be installed.
The build and deployment helper commands are defined in the [justfile](./justfile).
@@ -78,7 +80,7 @@ For example:
just pb_sdk_version=6.8 cargo_profile=release build-app inkview-slint-demo
```
-## Deploy a binary
+## Deployment
To deploy a built binary to the device over USB, run the following,
assuming the device is connected and appears in path `/run/media/$USER/`:
@@ -90,6 +92,6 @@ so for example: `examples/hello_world`
just pb_device= deploy-usb
```
-## Generate bindings
+## Bindings generation
See documentation for the `generate-bindings` just recipe.
From 796e2f01883dff7451e3f15b2de357807de00a7f Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Wed, 20 May 2026 20:35:37 +0200
Subject: [PATCH 05/12] docs(readme): Add link to the utils readme
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index ae37131..55360ce 100644
--- a/README.md
+++ b/README.md
@@ -92,6 +92,8 @@ so for example: `examples/hello_world`
just pb_device= deploy-usb
```
+For more information take a look at [utils README.md](./utils/README.md)
+
## Bindings generation
See documentation for the `generate-bindings` just recipe.
From e958fa23dd212dc6930809f74390c2ef1a48511c Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Wed, 20 May 2026 20:45:35 +0200
Subject: [PATCH 06/12] docs(readme): Fix typos
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 55360ce..ac19c44 100644
--- a/README.md
+++ b/README.md
@@ -61,7 +61,7 @@ just pb_sdk_version=6.8 build-app inkview-slint
**NOTE:** while the demo projects lay in the [./examples/](./examples/) folder they are still apps,
and therefore should be built with the `build-app` command
-To build an example:
+To build an example, run:
```bash
just pb_sdk_version= build-example
@@ -72,7 +72,7 @@ For example:
just pb_sdk_version=6.8 build-example inkview hello_world
```
-By default, the any build is going to be done with the `debug` profile.
+By default, any build is going to be done with the `debug` profile.
Changing the profile to `release`, one should add the `cargo_profile=release` argument.
For example:
From 2613972392fb6c2f1d4bde0e7f9af79c01b45b11 Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Thu, 21 May 2026 14:42:25 +0200
Subject: [PATCH 07/12] docs(readme): accept suggestion
Co-authored-by: Ben Simms
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ac19c44..126fd2d 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ This repo contains bindings for `libinkview`, which is used by pocketbook device
- `inkview` is the core of the project.
It dynamically loads `libinkview` rather than linking it statically, so that users of this
-crate woudln't have to setup the pocketbook SDK during the build.
+crate don't have to setup the pocketbook SDK.
Instead, one needs to cross-compile to `armv7-unknown-linux-gnueabi.2.23`
(`cargo zigbuild` works well for this) and the binary will run on a pocketbook E-Reader.
From 60d14a81552ca654dbc7447729060dd983557123 Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Fri, 22 May 2026 19:04:56 +0200
Subject: [PATCH 08/12] docs(readme): Update set-up section to provide 2
options
---
README.md | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 126fd2d..e8e90e3 100644
--- a/README.md
+++ b/README.md
@@ -34,16 +34,17 @@ The subprojects may contain examples that lay under `examples/` subfolders (e.g.
```bash
just --list
```
-1. To set-up a reproducible sandbox build environment for the target `armv7-unknown-linux-gnueabi.2.23`
-one must install [NIX](https://nixos.org/download/) +
-[direnv](https://direnv.net/docs/installation.html) +
-[devenv](https://devenv.sh/getting-started/).
- This way Nix installs the exact cross-compilation tools required for the e-reader,
- while direnv automatically injects them into your shell the moment you enter the project directory.
-1. Then execute the following to install the `armv7-unknown-linux-gnueabi` rustc target and `cargo-zigbuild`:
+1. Set-up a reproducible build environment for the target `armv7-unknown-linux-gnueabi.2.23` (two ways):
+ 1. (EITHER - recommended) one must install [NIX](https://nixos.org/download/) +
+ [direnv](https://direnv.net/docs/installation.html) +
+ [devenv](https://devenv.sh/getting-started/).
+ This way Nix installs a sandbox environment with the exact cross-compilation tools required for the e-reader,
+ while direnv automatically injects them into your shell the moment you enter the project directory.
+ 1. (EITHER) Execute the following to install the `armv7-unknown-linux-gnueabi` rustc target and `cargo-zigbuild` globally:
```bash
just prerequisites
```
+ **NOTE:** this way has proved to be problematic in use on macOS when building `inkview-slint` project
## Build
From 1da73b4997f374275f2daae4da1d2fc468403cd4 Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Fri, 22 May 2026 19:40:24 +0200
Subject: [PATCH 09/12] docs(utils/readme): Add an additional way of connecting
via SSH (via KOReader)
---
utils/README.md | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/utils/README.md b/utils/README.md
index 25739fb..b042362 100644
--- a/utils/README.md
+++ b/utils/README.md
@@ -31,7 +31,28 @@ Copy and start `app-receiver.app` on the pocketbook device, then launch:
./app-sender.sh
```
-## SSH Dropbear Server
+## SSH
+If you want to ssh to your device, send applications to it and listen for stdin messages,
+then you have 2 ways:
+1. Via KOReader (no need to root your device)
+2. By setting up your own SSH Dropbear Server on the device (the device must be rooted)
+
+### KOReader as bypass for SSH connection
+
+[KOReader](https://github.com/koreader/koreader/releases) apart from being a third party read
+it also contains some networking functionality, namely, it allows for establishing SSH connection with the device.
+There is no need to root your device.
+
+**NOTE:** Such ssh connection DOES NOTE give you root permissions.
+Nevertheless, it is sufficient to deploy your app as following (it goes with no saying that before you have to register your public key):
+
+```bash
+scp -P 2222 -o HostKeyAlgorithms=+ssh-rsa target/armv7-unknown-linux-gnueabi/release/inkview-slint-demo reader@:/mnt/ext1/applications/application.app.stage && \
+ssh -p 2222 -o HostKeyAlgorithms=+ssh-rsa reader@ \
+'sh -c "killall application.app; mv /mnt/ext1/applications/application.app.stage /mnt/ext1/applications/application.app; /mnt/ext1/applications/application.app"'
+```
+
+### Custom SSH Dropbear Server
The device must be rooted (see [here](https://github.com/ezdiy/pbjb)).
@@ -51,3 +72,10 @@ Host pocketbook
PubkeyAuthentication=no
StrictHostKeyChecking=no
```
+
+Example:
+```bash
+scp -o HostKeyAlgorithms=+ssh-rsa target/armv7-unknown-linux-gnueabi/release/inkview-slint-demo root@:/mnt/ext1/applications/application.app.stage && \
+ssh -o HostKeyAlgorithms=+ssh-rsa root@ \
+'sh -c "killall application.app; mv /mnt/ext1/applications/application.app.stage /mnt/ext1/applications/application.app; /mnt/ext1/applications/application.app"'
+```
From a5d10302f772e1b2d1dffeb9512b7c597849d829 Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Sat, 23 May 2026 16:45:13 +0200
Subject: [PATCH 10/12] docs(readme): Provide an example for the deployment
command
---
README.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/README.md b/README.md
index e8e90e3..360472c 100644
--- a/README.md
+++ b/README.md
@@ -93,6 +93,11 @@ so for example: `examples/hello_world`
just pb_device= deploy-usb
```
+For example:
+```bash
+just cargo_profile=release pb_device=PB632 deploy-usb inkview-slint-demo application.app
+```
+
For more information take a look at [utils README.md](./utils/README.md)
## Bindings generation
From f4269704436641cdbf2a35680613bdeb3a0ad67a Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Sat, 23 May 2026 16:57:38 +0200
Subject: [PATCH 11/12] closes #23: docs(readme): mention inkview-rs-templates
in readme
---
README.md | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/README.md b/README.md
index 360472c..5bfae91 100644
--- a/README.md
+++ b/README.md
@@ -103,3 +103,12 @@ For more information take a look at [utils README.md](./utils/README.md)
## Bindings generation
See documentation for the `generate-bindings` just recipe.
+
+## New `inkview-rs` projects templating
+
+Setting up new projects that make use of `inkview-rs` with properly configured linking, building, and deployment from scratch can be quite tedious.
+Often, it would require pretty much the same preconfiguration: `devenv.nix` config, justfile with the basic build and deploy helper comands, etc.
+
+To simplify this repeated process, one can make use of the adjacent templating project [inkview-rs-templates](https://github.com/ihrfv/inkview-rs-templates).
+It only requires `cargo-generate` to be installed, and allows you to create preconfigured basic projects for vanilla `inkview-rs`, `inkview-eg`, and `inkview-slint`.
+
From a69fdf51a5e987d04018fc72133865cb2a36a58f Mon Sep 17 00:00:00 2001
From: Ihor Filimonov <254675014+ihrfv@users.noreply.github.com>
Date: Thu, 11 Jun 2026 10:29:26 +0200
Subject: [PATCH 12/12] docs(readme): fix formatting
---
README.md | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 5bfae91..9a2a3c0 100644
--- a/README.md
+++ b/README.md
@@ -38,13 +38,10 @@ The subprojects may contain examples that lay under `examples/` subfolders (e.g.
1. (EITHER - recommended) one must install [NIX](https://nixos.org/download/) +
[direnv](https://direnv.net/docs/installation.html) +
[devenv](https://devenv.sh/getting-started/).
- This way Nix installs a sandbox environment with the exact cross-compilation tools required for the e-reader,
+ - This way Nix installs a sandbox environment with the exact cross-compilation tools required for the e-reader,
while direnv automatically injects them into your shell the moment you enter the project directory.
- 1. (EITHER) Execute the following to install the `armv7-unknown-linux-gnueabi` rustc target and `cargo-zigbuild` globally:
- ```bash
- just prerequisites
- ```
- **NOTE:** this way has proved to be problematic in use on macOS when building `inkview-slint` project
+ 1. (EITHER) Execute `just prerequisites` to install the `armv7-unknown-linux-gnueabi` rustc target and `cargo-zigbuild` globally
+ - **NOTE:** this way has proved to be problematic in use on macOS when building `inkview-slint` project
## Build