Recently Written · git

subread.koplugin

KOReader plugin: the book follows the narration of an audiobook, from an .srt made by subread.space

git clone https://github.com/equwal/subread.koplugin

Log | Files | Refs


commit b72a96213c16460b2c896a3f1c64d27a75322fdd
equwal <truex@equwal.com>
2026-09-21 13:22:31 -0700

Do not cover the narrated line with the controls

"Start read-along" opened the controls dialog at once. On a tablet the
dialog covered the line that the narrator read, and its clock and cue
stayed those of the time when it opened.

Start now shows a short notice only. The same menu entry opens the
controls when the read-along runs. Open controls are built again when
the cue changes, so the clock and the cue are current.

Tested on a Viwoods AiPaper with a Japanese book: the mark follows the
cues, and the page turns.

 main.lua | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/main.lua b/main.lua
index 2950d28..0ccf8a0 100644
--- a/main.lua
+++ b/main.lua
@@ -455,6 +455,8 @@ function SubRead:showCue(index)
     self.retry_from_index = 0
     self.last_xpointer = pos0
     self:drawCue(pos0, pos1)
+    -- Open controls show the clock and the cue of the time when they were built.
+    if self.controls_dialog then self:showControls() end
 end
 
 --- Turns the page if needed and draws the mark.
@@ -810,8 +812,13 @@ function SubRead:addToMainMenu(menu_items)
                     touchmenu_instance:onClose()
                     if not self:checkSupported() then return end
                     if not self.clock:isRunning() then
+                        -- The controls would cover the line that the narrator reads.
+                        -- They open with the same menu entry when the user wants them.
                         self:start()
-                        if not self.clock:isRunning() then return end
+                        if self.clock:isRunning() then
+                            self:showNotification(_("Read-along started. The controls are in this menu."))
+                        end
+                        return
                     end
                     self:showControls()
                 end,