Add optional horizontal (landscape) layout mode - #431
Open
kfezer wants to merge 1 commit into
Open
Conversation
There was a problem hiding this comment.
Hi there and welcome to Inkycal. Thanks for opening this issue. As this is your first Pull-Request in this repository, please read through the contributing guidelines. Please note that non-critical pull-request cannot be merged into the main branch to ensure stability. Please create a new branch and ask to have it merged into main. Thanks for your understanding.
Adds a top-level "layout": "horizontal" setting that keeps the display's native landscape orientation and tiles modules left-to-right instead of the default top-to-bottom stacking. Each module's "size" is then read as [column width, full height] instead of [full width, row height]. Default behavior (layout absent or anything other than "horizontal") is completely unchanged - this is purely additive. Addresses the long-requested horizontal mode from aceinnolab#117, without requiring the fuller 2-column grid rewrite discussed there. Verified end-to-end on real hardware (12.48" colour e-paper, Pi Zero 2 W): Calendar module on the left, Xkcd module on the right, both rendering correctly with the same existing module code (no per-module changes needed).
kfezer
force-pushed
the
feature/horizontal-layout
branch
from
August 4, 2026 20:40
85e787f to
0faff2d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
"layout": "horizontal"setting tosettings.jsonthat keeps the display's native landscape orientation and tiles modules left-to-right instead of the default top-to-bottom stacking.sizeis then read as[column width, full height]instead of[full width, row height].layoutabsent, or set to anything other than"horizontal") is completely unchanged — this is purely additive, gated behind the new setting._assemble()gives them.Related to the long-requested horizontal mode discussed in #117. That thread was closed pending a fuller 2-column grid rewrite ("would require a 2-column grid instead of one"). This PR is a smaller, pragmatic step that gets basic side-by-side layouts working today without that larger rewrite — happy to adjust direction if a fuller grid system is still preferred instead.
Test plan
epd_12_in_48_colour) on a Raspberry Pi Zero 2 W, withlayout: horizontal, Calendar module on the left (size: [550, 964]) and Xkcd module on the right (size: [754, 964]). Both rendered correctly and matched the assigned columns.layoutkey) still produces the original vertical-stacked layout — the vertical code path is untouched, only reached via an addedif/elsebranch.python3 -m py_compile inkycal/main.pypasses._assemble()— the existingtests/test_main.pydoesn't cover this method and I didn't want to bolt on test scaffolding without knowing your preferred fixture/mocking approach for module image composition. Happy to add one if you can point me at a pattern to follow.Docs
Added a short section to
docs/docs/modules.mdexplaining the new setting and showing an example.