This note details the changes made to the Zen and ZMK codebase to improve the experience of e-ink displays.
You can test out below changes using your Zen config repo by modifying your config/west.yml
file, following ZMK instructions:
manifest:
remotes:
- name: caksoylar
url-base: https://github.com/caksoylar
projects:
- name: zmk
remote: caksoylar
revision: caksoylar/zen-v1+v2 # custom branch name
import: app/west.yml
self:
path: config
...or alternatively, you can cherry-pick specific commits noted below to your own fork of ZMK.
The improvements for Corne-ish Zen v2 (for R3 of the GB) and v1 (R1/R2 GB) are in the caksoylar/zen-v1+v2
branch of my ZMK fork. (Note that you need to use corneish_zen_v1_left
and corneish_zen_v1_right
as the board names when building for v1.)
2024-12-09 edit: I removed caksoylar/zen-v1+v2+experimental
branch because mouse keys are now in ZMK main
and thus supported in caksoylar/zen-v1+v2
.
Warning
⚠️ : Going forward I will only maintain combined v1+v2 branches and not v2-only branches likecaksoylar/zen-v2
andcaksoylar/zen-v2+mouse
.
Below are the details of improvements, some are always in effect and some require setting corresponding config to be enabled, as detailed below.
- Avoid unnecessarily refreshing the battery level widget (reduce ghosting)
- Tweak battery level thresholds so the battery levels are more "accurate"
- Add option to hide layer changes that are momentary (using
&mo
,<
etc.) from the layer widget (reduces the number of partial refreshes)- https://github.com/caksoylar/zmk/commit/c5db4d2 and https://github.com/caksoylar/zmk/commit/e2d9519
- Add
CONFIG_ZMK_DISPLAY_HIDE_MOMENTARY_LAYERS=y
to yourcorneish_zen.conf
file to enable
- Add a periodic full display refresh (to clear up ghosting) using zmkfirmware/zmk#969
- https://github.com/caksoylar/zmk/commit/4c79085
- Add
CONFIG_ZMK_DISPLAY_FULL_REFRESH_PERIOD=N
to yourcorneish_zen.conf
file to refresh everyN
seconds
- Add option to invert displays to white-on-black instead of black-on-white
- https://github.com/caksoylar/zmk/commit/25a1d80
- Add
CONFIG_IL0323_INVERT=y
to yourcorneish_zen.conf
file to enable
- Add option to hide the "LAYER" heading in the layer widget and realign all widgets
- https://github.com/caksoylar/zmk/commit/eb0a2df
- Add
CONFIG_CUSTOM_WIDGET_LAYER_STATUS_HIDE_HEADING=y
to yourcorneish_zen.conf
file to enable
- Add options to select different logo images to replace the "Corne-ish Zen" logo on the right half, from @manna-harbour:
- https://github.com/caksoylar/zmk/commit/3f8e1b5
CONFIG_CUSTOM_WIDGET_LOGO_IMAGE_ZMK=y
for ZMK logo instead of ZenCONFIG_CUSTOM_WIDGET_LOGO_IMAGE_LPKB=y
for LowProKB logoCONFIG_CUSTOM_WIDGET_LOGO_IMAGE_MIRYOKU=y
for Miryoku logo
- Add option to enable @aumuell's driver tweak to reduce ghosting for partial refreshes
- https://github.com/zmkfirmware/zmk/commit/08c307b
- This causes a different fading pattern on partial refreshes, with vertical/horizontal banding rather than full screen. However it can make the fading stronger for some screens
- Add
CONFIG_IL0323_ALTERNATIVE_REFRESH=y
to yourcorneish_zen.conf
to enable
Feel free to contact me on Discord bravekarma#4601
or you can open an issue in https://github.com/caksoylar/zmk as well.
Hi there, thanks for the amazing work!
Do you mind briefly explaining the logo image format in case one would contribute/use different images?