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