Recently Written · git

ink-dim

Ink Dim: tap to set the frontlight of a Viwoods AiPaper reader below the lowest system level. Tap again to go back.

git clone https://github.com/equwal/ink-dim

Log | Files | Refs


commit 18bbd385580d8f03fb5bcec1cda1d18d540d9e86
equwal <13551856+equwal@users.noreply.github.com>
2026-09-26 15:12:57 -0700

Add a More apps section with links to the other apps

The settings screen shows the other sites and apps of the author, after
About. A tap on an entry opens its page in the browser.

Add a More projects section to the README.

 README.md                                          | 24 ++++++++++
 app/src/main/java/dev/equwal/inkdim/MoreApps.kt    | 55 ++++++++++++++++++++++
 .../java/dev/equwal/inkdim/SettingsActivity.kt     |  5 ++
 .../test/java/dev/equwal/inkdim/MoreAppsTest.kt    | 30 ++++++++++++
 4 files changed, 114 insertions(+)
diff --git a/README.md b/README.md
index 1f66e8e..6583b96 100644
--- a/README.md
+++ b/README.md
@@ -93,6 +93,30 @@ Release signing is optional. Put a `keystore.properties` file in the root of
 the project with `storeFile`, `storePassword`, `keyAlias` and `keyPassword`.
 Without that file the build makes an unsigned APK.
 
+## More projects
+
+- [SubRead](https://subread.space/): read along with an audiobook, in the browser.
+  Also [for Android](https://github.com/equwal/subread-android/releases/latest),
+  [for YouTube](https://github.com/equwal/subread-extension/releases/latest)
+  and [for KOReader](https://github.com/equwal/subread.koplugin).
+- [SubRead Overlay](https://github.com/equwal/subread-overlay/releases/latest): subtitle lines over any Android media player.
+- [SubRead Dictionary](https://github.com/equwal/subread-dictionary/releases/latest): a pop-up dictionary for Android that reads Yomitan dictionaries.
+- [SubRead Anki](https://github.com/equwal/subread-anki): one tap makes an Anki card from any Android app.
+- [Subrep](https://github.com/equwal/subrep-android/releases/latest): live captions of the sound of your phone.
+- [Book Simulator](https://booksimulator.com/): a reading room for Aozora Bunko and Project Gutenberg books.
+- [honjimaku.com](https://honjimaku.com/): subtitles for Japanese audiobooks.
+- [sbm Sync](https://sbmsync.com/): your bookmarks, the same on every device,
+  with [sbm](https://github.com/equwal/sbm) for dmenu,
+  [sbm for Android](https://github.com/equwal/sbm-android/releases/latest)
+  and the [sbm add-on](https://github.com/equwal/sbm-extension/releases/latest) for Firefox and Chrome.
+- [Rebind](https://github.com/equwal/rebind/releases): remap the hardware buttons of e-ink readers and Android,
+  with [Ink Recents](https://github.com/equwal/ink-recents/releases/latest),
+  [Ink Dim](https://github.com/equwal/ink-dim/releases/latest)
+  and [Ink Update](https://github.com/equwal/ink-update/releases/latest).
+- [dickt.store](https://dickt.store/): language-learning tools, flashcards and web toys.
+- [hentaibun.online](https://hentaibun.online/): learn kanbun and kobun.
+- [Recently Written](https://recentlywritten.com/): the blog, and a list of [all projects](https://recentlywritten.com/projects.html).
+
 ## Licence
 
 GPL-3.0-or-later. See [LICENSE](LICENSE).
diff --git a/app/src/main/java/dev/equwal/inkdim/MoreApps.kt b/app/src/main/java/dev/equwal/inkdim/MoreApps.kt
new file mode 100644
index 0000000..4107f27
--- /dev/null
+++ b/app/src/main/java/dev/equwal/inkdim/MoreApps.kt
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+// Copyright (c) 2026 equwal
+package dev.equwal.inkdim
+
+/**
+ * The other sites and apps of the same author, for the settings screen. They are
+ * in the order of the catalog: the sites, then the Android apps, then the list of
+ * all projects. Ink Dim is not in it.
+ */
+object MoreApps {
+
+    /** One link: a name, one line about it, and the page that a tap opens. */
+    class App(val name: String, val line: String, val url: String)
+
+    val ALL = listOf(
+        App("SubRead", "Read along with an audiobook.", "https://subread.space/"),
+        App("Book Simulator", "A reading room for Aozora Bunko and Project Gutenberg books.", "https://booksimulator.com/"),
+        App("honjimaku.com", "Subtitles for Japanese audiobooks.", "https://honjimaku.com/"),
+        App("sbm Sync", "Your bookmarks, the same on every device.", "https://sbmsync.com/"),
+        App(
+            "SubRead for Android", "Times an audiobook against its ebook on the device.",
+            "https://github.com/equwal/subread-android/releases/latest"
+        ),
+        App(
+            "SubRead Overlay", "Subtitle lines over any Android media player.",
+            "https://github.com/equwal/subread-overlay/releases/latest"
+        ),
+        App(
+            "SubRead Dictionary", "Pop-up dictionary that reads Yomitan dictionaries.",
+            "https://github.com/equwal/subread-dictionary/releases/latest"
+        ),
+        App("SubRead Anki", "One tap makes an Anki card from any app.", "https://github.com/equwal/subread-anki"),
+        App(
+            "Subrep", "Live captions of the sound of your phone.",
+            "https://github.com/equwal/subrep-android/releases/latest"
+        ),
+        App(
+            "sbm for Android", "Fuzzy search for your bookmarks.",
+            "https://github.com/equwal/sbm-android/releases/latest"
+        ),
+        App(
+            "Rebind", "Remap the hardware buttons of e-ink readers and Android.",
+            "https://github.com/equwal/rebind/releases"
+        ),
+        App(
+            "Ink Recents", "A recent-apps switcher for e-ink.",
+            "https://github.com/equwal/ink-recents/releases/latest"
+        ),
+        App(
+            "Ink Update", "Tells you when Rebind and its extensions update.",
+            "https://github.com/equwal/ink-update/releases/latest"
+        ),
+        App("All projects", "Everything, with source code.", "https://recentlywritten.com/projects.html")
+    )
+}
diff --git a/app/src/main/java/dev/equwal/inkdim/SettingsActivity.kt b/app/src/main/java/dev/equwal/inkdim/SettingsActivity.kt
index 88ed476..dd00404 100644
--- a/app/src/main/java/dev/equwal/inkdim/SettingsActivity.kt
+++ b/app/src/main/java/dev/equwal/inkdim/SettingsActivity.kt
@@ -59,6 +59,11 @@ class SettingsActivity : Activity() {
         col.row("Licence", null, enabled = false, state = "GPL-3.0-or-later")
         col.row("Source code", REPO.removePrefix("https://")) { start(Intent(Intent.ACTION_VIEW, Uri.parse(REPO))) }
         col.row("Buy me a coffee", TIP.removePrefix("https://")) { start(Intent(Intent.ACTION_VIEW, Uri.parse(TIP))) }
+
+        col.header("More apps")
+        for (app in MoreApps.ALL) {
+            col.row(app.name, app.line) { start(Intent(Intent.ACTION_VIEW, Uri.parse(app.url))) }
+        }
     }
 
     private fun lightState(): String = when {
diff --git a/app/src/test/java/dev/equwal/inkdim/MoreAppsTest.kt b/app/src/test/java/dev/equwal/inkdim/MoreAppsTest.kt
new file mode 100644
index 0000000..9ab8066
--- /dev/null
+++ b/app/src/test/java/dev/equwal/inkdim/MoreAppsTest.kt
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+// Copyright (c) 2026 equwal
+package dev.equwal.inkdim
+
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertFalse
+import org.junit.Assert.assertTrue
+import org.junit.Test
+
+/** Tests for the list of the More apps section. */
+class MoreAppsTest {
+
+    @Test fun `the list leaves out Ink Dim`() {
+        assertFalse(MoreApps.ALL.any { it.name == "Ink Dim" || "equwal/ink-dim" in it.url })
+    }
+
+    @Test fun `each link opens an https page`() {
+        for (app in MoreApps.ALL) assertTrue(app.url, app.url.startsWith("https://"))
+    }
+
+    @Test fun `the list keeps the order of the catalog`() {
+        assertEquals(
+            listOf("SubRead", "Book Simulator", "honjimaku.com", "sbm Sync"),
+            MoreApps.ALL.take(4).map { it.name }
+        )
+        assertEquals("All projects", MoreApps.ALL.last().name)
+        // The catalog has 15 entries. Ink Dim is the one that is not in the list.
+        assertEquals(14, MoreApps.ALL.size)
+    }
+}