
ZenOS는 KOReader 위에 설치하는 맞춤형 인터페이스 플러그인이다. 개인화한 홈 화면과 새 라이브러리, 빠른 제어판, 런처, 독서 도구와 통합 설정을 제공하며, KOReader를 기반으로 계속 사용한다. 프로젝트 웹사이트에서 소개를 볼 수 있고, 릴리스와 설치 안내도 제공한다.
ZenOS는 불필요한 요소를 줄이고 분명한 가치를 더하는 것을 설계 원칙으로 삼는다. 제작자는 성능, 안정성, 사용 편의성을 필수 조건으로 두고 배터리 효율과 반응성을 고려해 기능을 조정했다고 설명한다. 전용 렌더러와 캐시를 사용해 큰 라이브러리를 탐색할 때 반복적인 작업을 줄이고, 필요한 곳에만 패치를 적용한다. 안전한 경우 변경된 화면 영역만 다시 그리며 터치·비터치 기기에서 레이아웃을 공유하도록 설계했다.
홈 화면과 라이브러리
홈 화면에는 날짜와 시간, 추천 도서, 독서 통계와 목표, 책 목록, 인용문 위젯을 배치할 수 있다. 화면 공간에 맞춰 위젯을 배열하고 홈 화면에서 편집하거나 프리셋을 적용·저장한다. 인용문 위젯은 내장 문구와 주석, 사용자 인용문 파일을 함께 표시할 수 있다. 사용자 파일은 koreader/settings/ZenOS/quotes/에 두며, 기본 사용자 파일은 koreader/settings/ZenOS/quotes.lua다. 홈 안내
홈의 책 목록은 최근 읽은 책, 즐겨찾기, 읽을 책(To Be Read), 저자, 시리즈, 언어, 태그, 컬렉션, 사용 가능한 경우 Kindle Library, 폴더 또는 사용자 목록으로 전환할 수 있다. 선택 사항인 목록 제어 기능으로 책 상태를 필터링하거나 동작, 제어판, 플러그인 메뉴, KOReader 메뉴를 실행한다. 추천 도서는 최근 책, 읽을 책 목록, 직접 지정한 책 중에서 고르며 메타데이터와 진행률 표시를 설정할 수 있다.
라이브러리에서는 현재 폴더의 메뉴에서 기본형, 모자이크형, 상세 목록형 레이아웃을 선택한다. 표지 비율, 배지, 진행률, 둥근 모서리, 폴더 표지, 시리즈 자동 묶기를 조정할 수 있다. Zen Settings > Library > Appearance > Layout에서는 모자이크 미리보기와 목록 페이지당 항목 수, 상세 목록에 표시할 필드를 설정한다. 폴더별로 표시 방식과 정렬, 상태 필터를 저장할 수 있다.
간소화된 컨텍스트 메뉴에서 읽음 상태와 컬렉션, 파일 작업, 전체 화면 책 상세 정보를 다룬다. 기본 메타데이터 편집기는 책 정보와 파일명, 표지를 수정하거나 Hardcover, Google Books, Open Library에서 정보를 채운다. 라이브러리 안내
라이브러리 아래쪽에는 최대 7개의 탭을 둘 수 있다. 기본 목적지는 라이브러리, 사용 가능한 경우 Kindle Library, 지정 폴더, 홈, 이어 읽기, 즐겨찾기, 컬렉션, 저자, 시리즈, 언어, 태그, 책 상태, 통계, 만화, 뉴스다. 사용자 지정 탭은 제어 기능이나 디스패처 동작을 실행하고 플러그인 또는 KOReader 메뉴를 열 수 있으며, 이름과 아이콘도 지정할 수 있다. 지원되는 탭 중 하나를 기본 화면으로 설정한다. 탐색 막대 안내
제어판·런처·읽기 화면
화면 어디서나 아래로 쓸어내리면 최대 9개의 설정 가능한 제어 항목과 밝기·색온도 슬라이더가 열린다. 버튼은 기기 기능을 전환하고 디스패처 동작을 실행하거나 플러그인·KOReader 메뉴를 연다. 블루투스, Tailscale, ZenFM 등 설치된 연동 기능도 표시할 수 있다. 블루투스를 누르면 켜고 끄며, 길게 누르면 Kindle, Kobo, PocketBook에서 연결을 관리한다. Tailscale은 Wi-Fi를 함께 전환할 수 있다. 조명 슬라이더의 빼기 버튼을 길게 누르면 값을 0으로 설정한다.
런처에서는 최근 책을 책 전환기로 열고 현재 책의 세부 정보를 확인하거나 바로가기 버튼 페이지를 만든다. 버튼으로 제어 기능과 동작을 실행하고 플러그인·KOReader 메뉴를 열 수 있으며, 폴더에 넣고 행을 나눠 배치할 수도 있다. 책 상세 정보, 책 전환기, 버튼 페이지의 순서를 바꿀 수 있고 런처를 상단 메뉴의 첫 탭으로 지정할 수 있다. 런처 안내
Zen 페이지 브라우저는 페이지 탐색, 검색, 목차, 책갈피, 글꼴 설정, 책 상세 정보를 한 화면에 모은다. 안정적인 페이지 표기와 비선형 책 콘텐츠를 지원한다. 읽기 화면 테마는 밝은 모드와 어두운 모드에 맞춰 바꿀 수 있다. 상단·하단 상태 표시줄은 서로 독립적으로 프리셋, 사용자 글꼴, 표시 내용을 설정한다.
ZenOS 스타일 사전·하이라이트 메뉴는 설치된 경우 Wikipedia, X-Ray, KOAssistant, AI Assistant를 표시할 수 있다. KOReader의 화면을 가로막는 시작 메시지 대신 시작 배너를 사용하며, 화면 가장자리를 누르고 있을 때 실수로 텍스트가 선택되는 일을 줄이는 여백 보호 기능도 제공한다. 읽기 화면 안내
모드와 설정
Zen Mode는 KOReader의 기본 메뉴 탭 대부분을 숨기며, 이제 KOReader를 다시 시작하지 않고 켜고 끌 수 있다. Lockdown Mode는 통제된 독서 환경을 위한 설정 가능한 제한을 제공한다. Incognito Mode는 독서 기록과 통계의 추적을 일시적으로 막고, 선택한 시간이 지나면 자동으로 꺼지도록 설정할 수 있다. 안내 문서는 Zen Mode와 Lockdown Mode에서 확인한다.
야간 모드, 밝기, 색온도는 각각 독립된 일정을 설정할 수 있다. 밝기와 색온도는 KOReader의 밝은 모드·어두운 모드를 따르게 설정할 수도 있으며, 모드가 바뀔 때마다 별도 값을 적용한다. 자동화 기능은 각각 선택 사항이다.
Zen Settings는 ZenOS 설정과 자주 쓰는 KOReader 설정을 검색 가능한 인터페이스에 모은다. 홈, 라이브러리, 읽기 화면, 인터페이스, 부가 기능, 일반, KOReader, 정보 항목으로 구성된다. 라이브러리에는 모양, 폴더, 책, 컨텍스트 메뉴 설정이 있다. 인터페이스에는 제어판, 런처, 탐색 막대, 상태 표시줄, 전역 글꼴, Zen Keyboard, Zen Search, 배경화면, 메뉴 배경 흐림, 사용자 아이콘 설정이 포함된다. 일반에는 Wi-Fi, 블루투스, 일정, 절전, 고급 설정, 업데이트가 있으며 통계는 부가 기능에 있다.
설정 화면은 마지막으로 보던 위치를 기억한다. 대부분의 기능은 개별적으로 설정할 수 있으며 KOReader를 종료하지 않고 ZenOS를 업데이트할 수 있다. 새로 설치하면 시각적 설정 안내와 Zen Mode, Zen Settings, 읽기 화면 페이지 브라우저에 대한 짧은 화면 안내가 나온다. 안내는 Zen Settings > About > Setup Guide에서 다시 열 수 있다.
플러그인 연동과 사용자 설정
ZenOS는 OPDS 브라우저에 테마를 적용하고 Rakuyomi 및 kindle.koplugin과 연동한다. 지원되는 비안드로이드 ARM 기기에는 ZenPM을 설치할 수 있으며, ZenFM 플러그인이 있으면 ZenFM 제어 기능을 추가한다. 사용자 아이콘 팩으로 ZenOS와 KOReader의 그림을 교체할 수 있다. 플러그인은 공개 연동 API를 통해 홈 위젯과 상태 표시줄 항목을 추가할 수 있다. 자세한 내용은 부가 기능 안내, 사용자 아이콘 팩 안내, 동작 안내를 참고한다.
외부 플러그인은 다음 API로 홈 위젯을 등록할 수 있다.
local register = rawget(_G, "__ZENOS_REGISTER_HOME_ITEM")
if register then
register("my_plugin.summary", function(ctx)
-- Return a KOReader widget sized to ctx.width and ctx.height.
end, {
label = "My summary",
size = "s",
})
end
위젯 생성 함수는 width, height, is_first_row, 항목별 module_cfg 테이블을 받는다. 새 항목은 기본적으로 비활성화되며 Zen Settings > Home > Widgets에서 켜고 위치를 정한다. ZenOS보다 먼저 로드되는 플러그인은 ZenOSReady를 받았을 때 등록해야 한다. 등록 해제에는 _G.__ZENOS_UNREGISTER_HOME_ITEM(id)를 사용한다. 기존 연동을 위해 __ZEN_UI_* 별칭도 유지하며 ZenUIReady도 계속 전달한다.
홈은 화면 높이에 따라 반응형 그리드를 사용한다. 위젯 크기는 xs=1, s=2, m=3, l=4, xl=10 단위다. 4:3 화면은 10단위를 제공하며, 더 길쭉한 화면은 최대 20단위까지 자동으로 넓어진다. 활성화한 위젯은 현재 화면의 용량에 맞아야 한다. 기존 preferred_pct 크기 테이블도 계속 사용할 수 있으며 가장 가까운 그리드 단위로 반올림한다.
등록 함수는 인자가 유효하지 않거나 기본 제공 항목과 ID가 충돌하면 false를 반환한다. 이미 등록된 외부 ID를 다시 등록하면 생성 함수와 옵션을 교체한다.
설치 조건과 업데이트
먼저 KOReader 2026.03 이상을 설치해야 한다. ZenOS는 KOReader 2026.07을 기준으로 테스트했으며 2026.03과의 호환성을 확인했다. KOReader 설치 안내를 참고한다. ZenOS를 시작하기 전에 Project: Title을 비활성화하거나 제거해야 한다. ZenOS는 Simple UI, Visual Overhaul Suite (VOS), QuickMenu, Appearance, Burrow, QuickUI, Reader Menu Redesign, Shortcuts Toolbar, Neo QuickSettings 및 충돌이 알려진 사용자 패치를 자동으로 비활성화한 뒤 KOReader를 다시 시작하라고 안내한다.
이미 Zen UI를 사용한다면 플러그인 폴더를 하나 더 설치하지 말고 Zen UI 설정 화면에서 업데이트한다. 업데이트 기능은 설정을 보존하고 KOReader를 재시작한 뒤 ZenOS로 자동 전환한다. 이전 과정에서 자동 재시작이 두 번 진행된다. Zen UI가 비활성화된 상태라면 마이그레이션을 실행하도록 한 번 활성화한다. 기존 zen_ui.koplugin 디렉터리 옆에 zenos.koplugin을 수동 설치하면 안 된다.
업그레이드는 koreader/settings/Zen UI를 변경하지 않은 롤백용 스냅샷으로 보존하고, 별도 복사본을 koreader/settings/ZenOS로 옮긴다. 따라서 이전 Zen UI 빌드로 되돌리면 ZenOS 업그레이드 직전의 설정이 복원된다. 업그레이드 후 ZenOS에서 바꾼 설정은 이전 Zen UI로 복사되지 않는다.
새로 설치할 때는 최신 릴리스에서 zenos.koplugin.zip을 내려받아 압축을 푼다. 생성된 zenos.koplugin 폴더를 기기의 KOReader 플러그인 디렉터리에 복사한다. 압축 파일 자체가 아니라 압축을 푼 폴더를 복사해야 한다. KOReader를 다시 시작하면 ZenOS가 자동으로 로드된다. 로드되지 않으면 Tools > More tools > Plugin management > ZenOS에서 활성화한다. 최종 경로는 .../plugins/zenos.koplugin/main.lua 형태다.
| 기기 | 플러그인 디렉터리 |
|---|---|
| Kobo | /mnt/onboard/.adds/koreader/plugins/ |
| Kindle | /mnt/base-us/koreader/plugins/ |
| PocketBook | /mnt/ext1/applications/koreader/plugins/ |
| Android | sdcard/koreader/plugins/ |
| 데스크톱(Linux/macOS) | /koreader/plugins/ |
Project Title을 사용한 적이 있다면 ZenOS를 쓰기 전에 비활성화하거나 제거해야 한다. 두 플러그인이 모두 표지 브라우저를 패치하므로 동시에 활성화하면 충돌한다. 제거하려면 KOReader 플러그인 디렉터리에서 projecttitle.koplugin 폴더를 삭제한다. 비활성화하려면 폴더 이름을 projecttitle.koplugin.disabled로 바꾼다. 다음 실행 때 KOReader가 이를 무시한다. 작업 후 KOReader를 다시 시작하면 ZenOS가 정상적으로 로드된다. Project Title
번역·기여·라이선스
ZenOS는 현재 영어(en), 이탈리아어(it), 스페인어(es), 프랑스어(fr), 네덜란드어(nl), 독일어(de), 불가리아어(bg), 체코어(cs), 헝가리어(hu), 인도네시아어(id), 브라질 포르투갈어(pt_BR), 유럽 포르투갈어(pt_PT), 루마니아어(ro), 러시아어(ru), 우크라이나어(uk), 일본어(ja), 베트남어(vi), 중국어 간체(zh_CN), 중국어 번체(zh_TW), 홍콩 중국어 번체(zh_HK), 마카오 중국어 번체(zh_MO), 그리스어(el)로 번역돼 있다. 번역 수정과 추가 기여 방법은 locales/README.md와 CONTRIBUTING.md에 안내돼 있다.
버그 제보, 기능 요청, 번역, 코드 기여를 받는다. 기여 지침은 기능별로 PR 하나를 제출하고, 테스트·검토를 위해 dev 브랜치에 PR을 보내며, AI 도구로 만든 코드는 제출 전에 충분히 검토하고 테스트하도록 한다. 새 코드는 프로젝트의 기존 스타일과 테마, 사용자 경험에 맞춰야 한다.
ZenOS는 자체 개발 작업이지만 KOReader 커뮤니티의 오픈소스 프로젝트에서 구성 요소와 아이디어, 참조 구현, 수정해 사용한 코드를 얻었다. 프로젝트가 언급한 자료는 joshuacant/ProjectTitle, qewer33/koreader-patches, sebdelsol/KOReader.patches, doctorhetfield-cmd/simpleui.koplugin, Euphoriyy/appearance.koplugin, AndyHazz/bookshelf.koplugin, kristianpennacchia/zzz-readermenuredesign.koplugin, OGKevin/kobo.koplugin, sabrina553/bluetooth.koplugin, Tharavol/bluetooth.koplugin, rameezk/rebind.koplugin, Phrogz/SLAXML, certifi다. Appearance에서 수정한 색상 선택기와 Rebind의 EPUB 메타데이터 수정 코드를 각각 GPL-3.0, MIT 라이선스로 적용했다. SLAXML 파서와 DOM 직렬 변환기, Mozilla CA 인증서 데이터도 포함한다. 인증서 데이터는 Mozilla Public License 2.0으로 배포된다. 포함된 메타데이터 구성 요소의 저작권·라이선스 전문은 LICENSES.md에 있다.
보안 취약점 제보 방법은 SECURITY.md에서 확인한다. ZenOS의 라이선스는 GPL-3.0이다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요