A highly customizable UI plugin for KOReader that features a home screen, bottom navigation bar, top bar and desktop modules/widgets.
1,647
stars
617
commits
Lua
primary language
Sep 6, 2026
updated
A clean, distraction-free UI plugin for KOReader that transforms your reading experience. SimpleUI adds a dedicated Home Screen, a customisable Navigation Bar, a top status bar, and a reworked library title bar, giving you instant access to your library, history, collections, and reading stats without navigating through nested menus.
The centrepiece of SimpleUI. A home screen that gives you everything at a glance:
.lua file in <KOReader settings dir>/simpleui/sui_quotes/ (created automatically on first run, never touched by updates) returning a table of { q = "...", a = "Author", b = "Book (optional)" } entries, then set Source → Custom on the module. Edit the built-in pool instead via modules/quotes.lua in the plugin folder.Build extra Home-Screen-like pages of your own, each with an independent module layout, alongside your main Home Screen:
A persistent tab bar at the bottom of the screen for one-tap navigation:
A slim status bar always visible at the top of the screen:
An extra panel tab injected into KOReader's native touch menu, giving one-tap access to your favourite Quick Actions plus frontlight and warmth sliders without leaving your current screen:
A reworked title bar for the Library, History, Collections, and other full-screen views:
Custom cover art for folders in the Library mosaic view:
.cover.* image file placed manually in the folder for full controlBeyond the compact Reading Stats module, SimpleUI adds dedicated statistics windows:
Shortcut buttons configurable on the Home Screen, the Navigation Bar, the Title Bar, and the Quick Settings Bar:
All features are accessible from the SUI Settings Window — a full-screen, touch-friendly panel with sections for Home Screen, Bars, Library, Style, Quick Actions, and About. Open it by tapping the Settings button (gear icon), which sits in the Navigation Bar and Quick Settings Bar by default and can also be bound to a Quick Action or gesture of your own. Long-pressing most bars or modules jumps straight to their own settings without going through the section list at all.
Export your entire SimpleUI configuration to a single portable .sui file and restore it on any device:
name (1) instead of overwritten)settings/simpleui/backups/ — copy them somewhere safe (e.g. over USB) before re-flashing firmwareFound under About → Factory Reset. This wipes every Simple UI setting — layout, bars, quick actions, presets library, everything the plugin has ever saved — back to defaults, then restarts KOReader.
settings/simpleui/, not as settings entries, so a Factory Reset never deletes them; only the configuration that pointed to them is cleared.simpleui.kopluginplugins/ directory on your KOReader device:
/.adds/koreader/plugins/koreader/pluginskoreader/plugins at the root of onboard storage.Tip: If you skip or close the Welcome Screen, tap the Home Screen tab in the Navigation Bar to open your new home screen.
Tip: "Start with Home Screen" is already on after the Welcome Screen finishes, so KOReader opens directly to your Home Screen every time you turn on your device. You can toggle it any time from the Settings button under Home Screen → Behaviour → Start with Home Screen.
SimpleUI has full translation support. The UI language is detected automatically from your KOReader language setting — no configuration needed.
English is built in. Beyond that, translation files exist for:
Bulgarian (bg), Czech (cs), German (de), Spanish (es), French (fr), Hungarian (hu), Italian (it_IT), Japanese (ja), Lithuanian (lt_LT), Polish (pl), Portuguese – Brazil (pt_BR), Portuguese – Portugal (pt_PT), Romanian (ro, ro_MD), Russian (ru), Swedish (sv), Turkish (tr), Ukrainian (uk), Vietnamese (vi), Chinese Simplified (zh_CN), Chinese Traditional (zh_TW) — each as locale/<code>.po.
Coverage varies by language and changes frequently as contributions come in, so we don't track exact percentages here — open a .po file or a PO editor such as Poedit to see how complete a given language currently is.
⚠️ A
.pofile can contain syntax errors (an unescaped quote or a literal line break inside a string) that stop it from loading in KOReader, even though most of its content is translated. If a language you expect to see falls back to English, this is the most likely cause. Runmsgfmt --statistics -o /dev/null locale/<code>.poto check a file for errors — contributions to fix the offending lines are welcome.
Every user-facing string in the plugin is translatable. To add a new language:
locale/simpleui.pot to locale/<lang>.po, using the standard locale code for your language (examples: de, fr, it, ja)msgstr field with your translation:msgid "Currently Reading"
msgstr "Aktuell gelesen"
locale/ folder — no code changes neededThe plugin first tries an exact match for the locale code (e.g. pt_PT.po), then falls back to the language prefix (e.g. pt.po), then falls back to English.
%d, %s, and %% must be kept in your translation exactly as they appear in the msgid — you can reorder them if your language requires it, but not remove them\n is a line break — keep it in the same positionmsgid line — only edit msgstrmsgstr is left empty (""), the English original is shown as a fallbackAn icon pack lets you replace multiple SimpleUI icons at once — titlebar buttons, pagination chevrons, navigation tab icons, touch-menu tab bar icons, and quick-action icons — with a single tap.
<KOReader settings dir>/simpleui/sui_icons/packs/
A pack can be either:
.zip file containing those same files, either flat or inside a single root folder.You can place packs there manually, or use Style → Icons → Icon Packs → Install pack from ZIP… to browse to a .zip directly on your device.
The packs/ folder is created automatically on first run and is never touched by plugin updates.
Open Simple UI's Settings and go to Style → Icons → Icon Packs, then tap the pack you want. Icons are applied immediately to the live UI — no restart needed.
Packs are additive and partial: only the slots covered by the pack are changed. Slots not included in a pack keep their current value (custom or default). To revert everything afterwards, use Style → Icons → System Icons → Reset All System Icons.
Every file in the pack root must be an .svg or .png. The filename (without extension) determines which icon slot it fills:
SimpleUI titlebar buttons
| Filename | Description |
|---|---|
sui_menu.svg | Menu button (right side of titlebar) |
sui_search.svg | Search button |
sui_back.svg | Back / return button |
Browse-by buttons (Library titlebar)
| Filename | Description |
|---|---|
sui_browse_normal.svg | Browse button — default / all books view |
sui_browse_author.svg | Browse button — by author |
sui_browse_series.svg | Browse button — by series |
sui_browse_tags.svg | Browse button — by tags |
Native pagination chevrons
| Filename | Description |
|---|---|
sui_pager_prev.svg | Previous page |
sui_pager_next.svg | Next page |
sui_pager_first.svg | First page |
sui_pager_last.svg | Last page |
Navpager arrows (Navigation Bar)
| Filename | Description |
|---|---|
sui_navpager_prev.svg | Navpager previous arrow |
sui_navpager_next.svg | Navpager next arrow |
Quick-action icons (prefix sui_action_)
| Filename | Description |
|---|---|
sui_action_library.svg | Library |
sui_action_homescreen.svg | Home Screen |
sui_action_collections.svg | Collections |
sui_action_history.svg | History |
sui_action_continue.svg | Continue Reading |
sui_action_random_document.svg | Random |
sui_action_favorites.svg | Favourites |
sui_action_bookmark_browser.svg | Bookmark Browser |
sui_action_wifi_toggle.svg | Wi-Fi toggle (On) |
sui_action_wifi_toggle_off.svg | Wi-Fi toggle (Off) |
sui_action_frontlight.svg | Brightness |
sui_action_night_mode.svg | Night Mode |
sui_action_stats_calendar.svg | Reading Stats |
sui_action_power.svg | Power menu |
sui_action_settings.svg | SimpleUI Settings |
sui_action_browse_authors.svg | Browse by Author |
sui_action_browse_series.svg | Browse by Series |
sui_action_browse_tags.svg | Browse by Tags |
Quick Actions Defaults
| Filename | Description |
|---|---|
sui_qa_folder.svg | Default Quick Action icon (Folder) |
sui_qa_plugin.svg | Default Quick Action icon (Plugin) |
sui_qa_system.svg | Default Quick Action icon (System) |
Folder Covers
| Filename | Description |
|---|---|
sui_fc_empty.svg | Placeholder cover for empty folders |
Touch menu tab bar (native KOReader tabs + the SimpleUI-injected Quick Settings tab)
| Filename | Description |
|---|---|
sui_tab_main.svg | Tab: Menu |
sui_tab_setting.svg | Tab: Settings |
sui_tab_tools.svg | Tab: Tools |
sui_tab_search.svg | Tab: Search |
sui_tab_fm_settings.svg | Tab: File Browser Settings (File Manager only) |
sui_tab_navigation.svg | Tab: Reader Navigation (Reader only) |
sui_tab_typeset.svg | Tab: Reader Typeset (Reader only) |
sui_tab_filebrowser.svg | Tab: Back to File Browser (Reader only) |
sui_tab_qs_panel.svg | Tab: SimpleUI Quick Settings (injected tab) |
Tab bar icons only support
.svg/.pngimage files — Nerd Font symbols are not available for this group. These icons are rendered by KOReader's own native tab-bar widget, which only ever resolves an icon by looking up an image file by name; it has no code path for drawing a font glyph. Every other icon group in SimpleUI (titlebar, pagination, navpager, quick actions, etc.) is rendered by SimpleUI's own widgets and supports Nerd Font symbols normally — this limitation is specific to the tab bar. The "Nerd Font symbol…" option is hidden accordingly when picking a tab bar icon from Style → Icons → System Icons → Tab Bar.
Files with names that do not match any of the above are silently ignored.
pack.lua)A pack can include a pack.lua file in its root to provide metadata and override the default filename conventions:
return {
name = "Night Owl", -- display name in the menu (default: folder name)
author = "your-name",
version = "1.0",
description = "Dark, rounded icons",
-- Optional: map a slot ID to an alternative filename inside the pack.
-- Useful if you want filenames that differ from the convention above.
map = {
sui_menu = "hamburger.svg",
sui_pager_prev = "arrow-left.svg",
},
}
If pack.lua is absent, the pack name shown in the menu is the folder name (or the zip stem).
NightOwl/ ← pack name (or NightOwl.zip)
pack.lua ← optional manifest
sui_menu.svg
sui_search.svg
sui_back.svg
sui_browse_normal.svg
sui_browse_author.svg
sui_browse_series.svg
sui_browse_tags.svg
sui_pager_prev.svg
sui_pager_next.svg
sui_pager_first.svg
sui_pager_last.svg
sui_navpager_prev.svg
sui_navpager_next.svg
sui_action_library.svg
sui_action_collections.svg
sui_action_history.svg
sui_action_continue.svg
sui_action_frontlight.svg
sui_action_night_mode.svg
sui_action_power.svg
sui_action_settings.svg
All files are optional — a valid pack can contain as few as one icon.
.svg for best results; KOReader renders SVGs at any resolution. .png files work but may look blurry on high-DPI screens.packs/ and are therefore stable.NightOwl/) and distribute the .zip.The lightweight, single-icon alternative to a full pack. Place .svg files in:
<KOReader settings dir>/simpleui/custom_icons/
to make them available in the icon picker when creating or editing a custom Quick Action (Quick Actions → Edit → Icon). Like packs/, this folder is created automatically on first run and left untouched by updates. Use an Icon Pack when you want to restyle many icons at once with a shared identity; use this folder when you just want one specific icon for one specific action.
Contributions are welcome — bug fixes, new features, translations, and documentation improvements. See CONTRIBUTING.md for how to get started.
To report a bug, open an Issue and include your KOReader version and device model.
MIT — see LICENSE for details.
(top 30 of 46)
Hacker News (1)
Lua
99.8%
A highly customizable UI plugin for KOReader that features a home screen, bottom navigation bar, top bar and desktop modules/widgets.
1,647
stars
617
commits
Lua
primary language
Sep 6, 2026
updated
A clean, distraction-free UI plugin for KOReader that transforms your reading experience. SimpleUI adds a dedicated Home Screen, a customisable Navigation Bar, a top status bar, and a reworked library title bar, giving you instant access to your library, history, collections, and reading stats without navigating through nested menus.
The centrepiece of SimpleUI. A home screen that gives you everything at a glance:
.lua file in <KOReader settings dir>/simpleui/sui_quotes/ (created automatically on first run, never touched by updates) returning a table of { q = "...", a = "Author", b = "Book (optional)" } entries, then set Source → Custom on the module. Edit the built-in pool instead via modules/quotes.lua in the plugin folder.Build extra Home-Screen-like pages of your own, each with an independent module layout, alongside your main Home Screen:
A persistent tab bar at the bottom of the screen for one-tap navigation:
A slim status bar always visible at the top of the screen:
An extra panel tab injected into KOReader's native touch menu, giving one-tap access to your favourite Quick Actions plus frontlight and warmth sliders without leaving your current screen:
A reworked title bar for the Library, History, Collections, and other full-screen views:
Custom cover art for folders in the Library mosaic view:
.cover.* image file placed manually in the folder for full controlBeyond the compact Reading Stats module, SimpleUI adds dedicated statistics windows:
Shortcut buttons configurable on the Home Screen, the Navigation Bar, the Title Bar, and the Quick Settings Bar:
All features are accessible from the SUI Settings Window — a full-screen, touch-friendly panel with sections for Home Screen, Bars, Library, Style, Quick Actions, and About. Open it by tapping the Settings button (gear icon), which sits in the Navigation Bar and Quick Settings Bar by default and can also be bound to a Quick Action or gesture of your own. Long-pressing most bars or modules jumps straight to their own settings without going through the section list at all.
Export your entire SimpleUI configuration to a single portable .sui file and restore it on any device:
name (1) instead of overwritten)settings/simpleui/backups/ — copy them somewhere safe (e.g. over USB) before re-flashing firmwareFound under About → Factory Reset. This wipes every Simple UI setting — layout, bars, quick actions, presets library, everything the plugin has ever saved — back to defaults, then restarts KOReader.
settings/simpleui/, not as settings entries, so a Factory Reset never deletes them; only the configuration that pointed to them is cleared.simpleui.kopluginplugins/ directory on your KOReader device:
/.adds/koreader/plugins/koreader/pluginskoreader/plugins at the root of onboard storage.Tip: If you skip or close the Welcome Screen, tap the Home Screen tab in the Navigation Bar to open your new home screen.
Tip: "Start with Home Screen" is already on after the Welcome Screen finishes, so KOReader opens directly to your Home Screen every time you turn on your device. You can toggle it any time from the Settings button under Home Screen → Behaviour → Start with Home Screen.
SimpleUI has full translation support. The UI language is detected automatically from your KOReader language setting — no configuration needed.
English is built in. Beyond that, translation files exist for:
Bulgarian (bg), Czech (cs), German (de), Spanish (es), French (fr), Hungarian (hu), Italian (it_IT), Japanese (ja), Lithuanian (lt_LT), Polish (pl), Portuguese – Brazil (pt_BR), Portuguese – Portugal (pt_PT), Romanian (ro, ro_MD), Russian (ru), Swedish (sv), Turkish (tr), Ukrainian (uk), Vietnamese (vi), Chinese Simplified (zh_CN), Chinese Traditional (zh_TW) — each as locale/<code>.po.
Coverage varies by language and changes frequently as contributions come in, so we don't track exact percentages here — open a .po file or a PO editor such as Poedit to see how complete a given language currently is.
⚠️ A
.pofile can contain syntax errors (an unescaped quote or a literal line break inside a string) that stop it from loading in KOReader, even though most of its content is translated. If a language you expect to see falls back to English, this is the most likely cause. Runmsgfmt --statistics -o /dev/null locale/<code>.poto check a file for errors — contributions to fix the offending lines are welcome.
Every user-facing string in the plugin is translatable. To add a new language:
locale/simpleui.pot to locale/<lang>.po, using the standard locale code for your language (examples: de, fr, it, ja)msgstr field with your translation:msgid "Currently Reading"
msgstr "Aktuell gelesen"
locale/ folder — no code changes neededThe plugin first tries an exact match for the locale code (e.g. pt_PT.po), then falls back to the language prefix (e.g. pt.po), then falls back to English.
%d, %s, and %% must be kept in your translation exactly as they appear in the msgid — you can reorder them if your language requires it, but not remove them\n is a line break — keep it in the same positionmsgid line — only edit msgstrmsgstr is left empty (""), the English original is shown as a fallbackAn icon pack lets you replace multiple SimpleUI icons at once — titlebar buttons, pagination chevrons, navigation tab icons, touch-menu tab bar icons, and quick-action icons — with a single tap.
<KOReader settings dir>/simpleui/sui_icons/packs/
A pack can be either:
.zip file containing those same files, either flat or inside a single root folder.You can place packs there manually, or use Style → Icons → Icon Packs → Install pack from ZIP… to browse to a .zip directly on your device.
The packs/ folder is created automatically on first run and is never touched by plugin updates.
Open Simple UI's Settings and go to Style → Icons → Icon Packs, then tap the pack you want. Icons are applied immediately to the live UI — no restart needed.
Packs are additive and partial: only the slots covered by the pack are changed. Slots not included in a pack keep their current value (custom or default). To revert everything afterwards, use Style → Icons → System Icons → Reset All System Icons.
Every file in the pack root must be an .svg or .png. The filename (without extension) determines which icon slot it fills:
SimpleUI titlebar buttons
| Filename | Description |
|---|---|
sui_menu.svg | Menu button (right side of titlebar) |
sui_search.svg | Search button |
sui_back.svg | Back / return button |
Browse-by buttons (Library titlebar)
| Filename | Description |
|---|---|
sui_browse_normal.svg | Browse button — default / all books view |
sui_browse_author.svg | Browse button — by author |
sui_browse_series.svg | Browse button — by series |
sui_browse_tags.svg | Browse button — by tags |
Native pagination chevrons
| Filename | Description |
|---|---|
sui_pager_prev.svg | Previous page |
sui_pager_next.svg | Next page |
sui_pager_first.svg | First page |
sui_pager_last.svg | Last page |
Navpager arrows (Navigation Bar)
| Filename | Description |
|---|---|
sui_navpager_prev.svg | Navpager previous arrow |
sui_navpager_next.svg | Navpager next arrow |
Quick-action icons (prefix sui_action_)
| Filename | Description |
|---|---|
sui_action_library.svg | Library |
sui_action_homescreen.svg | Home Screen |
sui_action_collections.svg | Collections |
sui_action_history.svg | History |
sui_action_continue.svg | Continue Reading |
sui_action_random_document.svg | Random |
sui_action_favorites.svg | Favourites |
sui_action_bookmark_browser.svg | Bookmark Browser |
sui_action_wifi_toggle.svg | Wi-Fi toggle (On) |
sui_action_wifi_toggle_off.svg | Wi-Fi toggle (Off) |
sui_action_frontlight.svg | Brightness |
sui_action_night_mode.svg | Night Mode |
sui_action_stats_calendar.svg | Reading Stats |
sui_action_power.svg | Power menu |
sui_action_settings.svg | SimpleUI Settings |
sui_action_browse_authors.svg | Browse by Author |
sui_action_browse_series.svg | Browse by Series |
sui_action_browse_tags.svg | Browse by Tags |
Quick Actions Defaults
| Filename | Description |
|---|---|
sui_qa_folder.svg | Default Quick Action icon (Folder) |
sui_qa_plugin.svg | Default Quick Action icon (Plugin) |
sui_qa_system.svg | Default Quick Action icon (System) |
Folder Covers
| Filename | Description |
|---|---|
sui_fc_empty.svg | Placeholder cover for empty folders |
Touch menu tab bar (native KOReader tabs + the SimpleUI-injected Quick Settings tab)
| Filename | Description |
|---|---|
sui_tab_main.svg | Tab: Menu |
sui_tab_setting.svg | Tab: Settings |
sui_tab_tools.svg | Tab: Tools |
sui_tab_search.svg | Tab: Search |
sui_tab_fm_settings.svg | Tab: File Browser Settings (File Manager only) |
sui_tab_navigation.svg | Tab: Reader Navigation (Reader only) |
sui_tab_typeset.svg | Tab: Reader Typeset (Reader only) |
sui_tab_filebrowser.svg | Tab: Back to File Browser (Reader only) |
sui_tab_qs_panel.svg | Tab: SimpleUI Quick Settings (injected tab) |
Tab bar icons only support
.svg/.pngimage files — Nerd Font symbols are not available for this group. These icons are rendered by KOReader's own native tab-bar widget, which only ever resolves an icon by looking up an image file by name; it has no code path for drawing a font glyph. Every other icon group in SimpleUI (titlebar, pagination, navpager, quick actions, etc.) is rendered by SimpleUI's own widgets and supports Nerd Font symbols normally — this limitation is specific to the tab bar. The "Nerd Font symbol…" option is hidden accordingly when picking a tab bar icon from Style → Icons → System Icons → Tab Bar.
Files with names that do not match any of the above are silently ignored.
pack.lua)A pack can include a pack.lua file in its root to provide metadata and override the default filename conventions:
return {
name = "Night Owl", -- display name in the menu (default: folder name)
author = "your-name",
version = "1.0",
description = "Dark, rounded icons",
-- Optional: map a slot ID to an alternative filename inside the pack.
-- Useful if you want filenames that differ from the convention above.
map = {
sui_menu = "hamburger.svg",
sui_pager_prev = "arrow-left.svg",
},
}
If pack.lua is absent, the pack name shown in the menu is the folder name (or the zip stem).
NightOwl/ ← pack name (or NightOwl.zip)
pack.lua ← optional manifest
sui_menu.svg
sui_search.svg
sui_back.svg
sui_browse_normal.svg
sui_browse_author.svg
sui_browse_series.svg
sui_browse_tags.svg
sui_pager_prev.svg
sui_pager_next.svg
sui_pager_first.svg
sui_pager_last.svg
sui_navpager_prev.svg
sui_navpager_next.svg
sui_action_library.svg
sui_action_collections.svg
sui_action_history.svg
sui_action_continue.svg
sui_action_frontlight.svg
sui_action_night_mode.svg
sui_action_power.svg
sui_action_settings.svg
All files are optional — a valid pack can contain as few as one icon.
.svg for best results; KOReader renders SVGs at any resolution. .png files work but may look blurry on high-DPI screens.packs/ and are therefore stable.NightOwl/) and distribute the .zip.The lightweight, single-icon alternative to a full pack. Place .svg files in:
<KOReader settings dir>/simpleui/custom_icons/
to make them available in the icon picker when creating or editing a custom Quick Action (Quick Actions → Edit → Icon). Like packs/, this folder is created automatically on first run and left untouched by updates. Use an Icon Pack when you want to restyle many icons at once with a shared identity; use this folder when you just want one specific icon for one specific action.
Contributions are welcome — bug fixes, new features, translations, and documentation improvements. See CONTRIBUTING.md for how to get started.
To report a bug, open an Issue and include your KOReader version and device model.
MIT — see LICENSE for details.
Hacker News (1)
(top 30 of 46)
Lua
99.8%