MCPcopy Index your code
hub / github.com/gsantner/markor

github.com/gsantner/markor @v2.16.1 sqlite

repository ↗ · DeepWiki ↗ · release v2.16.1 ↗
6,138 symbols 21,388 edges 230 files 283 documented · 5%
README

GitHub releases GitHub downloads Translate on Crowdin Community Discussion GitHub CI

Markor

Text editor - Notes & ToDo (for Android).

Simple and lightweight, supporting Markdown, todo.txt, Zim & more!

Download: F-Droid, GitHub

Markor is a TextEditor for Android. This project aims to make an editor that is versatile, flexible, and lightweight. Markor utilizes simple markup formats like Markdown and todo.txt for note-taking and list management. It is versatile at working with text; it can also be used for keeping bookmarks, copying to clipboard, fast opening a link from text and lots more. Created files are interoperable with any other plaintext software on any platform. Markor is openly developed free software that accepts community contributions.

Screenshots
Screenshots

Features

📝 Create notes and manage your to-do list using simple markup formats

🌲 Work completely offline -- whenever, wherever

👌 Compatible with any other plaintext software on any platform -- edit with notepad or vim, filter with grep, convert to PDF or create a zip archive

🖍 Syntax Highlighting and format related actions -- quickly insert pictures and to-dos

👀 Convert, preview, and share documents as HTML and PDF

📚 Notebook: Store all documents on a common filesystem folder

📓 QuickNote: Fast accessible for keeping notes

☑️ To-Do: Write down your to-do

🖍 Formats: Markdown, todo.txt, Zim/WikiText, Plaintext, csv, ics, ini, json, toml, vcf, yaml

📋 Copy to clipboard: Copy any text, including text shared into Markor

💡 Notebook is the root folder of documents and can be changed to any location on the filesystem. QuickNote and To-Do are textfiles

🎨 Highly customizable, dark theme available

💾 Auto-Save with options for undo/redo

👌 No ads or unnecessary permissions

🌎 Language selection -- use other language than on the system

🔃 Markor is an offline app. It works with sync apps, but they have to do syncing respectively.

🔒 Can encrypt your textfiles with AES256. You need to set a password at the settings and use Android device with version Marshmallow or newer. You can use jpencconverter to encrypt/decrypt on desktop. Be aware that only the text is encrypted not pictures or attachments.

New features in the latest update - Markor v2.11 - AsciiDoc, CSV and Org-Mode, Todo.txt advanced search, Line numbers

Line number support

Markor supports showing line numbers now. In the top file menu you can find a new option to enable numbers. It is supported in editor as well in view mode of documents (in code blocks).

Line numbers

New format: AsciiDoc

AsciiDoc is one of the new formats that are now supported. While it might be not as much fleshed out like Markdown, it should fit for general use.

AsciiDoc

New format: CSV

CSV file are supported now (in sense of syntax highlighting and preview). For details see CSV README, it was implemented in #1988, #1987, #1980, #1667.

  • Editor with SyntaxHighlighter
  • Each csv column is shown in a different unique color to see which csv-data belongs to which colum/header
  • Preview as html-Table with export as pdf
  • A csv column may contain markdown (See Example column in screenshot)

New format: Org-Mode

The third and last new format newly added is Org-Mode. Note that currently only editor syntax highlighting and action buttons to make editing easier are available. There is no dedicated view mode implemented.

Org-Mode

Navigation

Contribute

  • Programming
    The project is always open for contributions and welcomes merge requests. Take a look at our issue tracker for open issues, especially "good first issues".
  • Feature requests & discussions
    Start a discussion here.
  • Bug reports
    Report issues here. Please search for similar issues & requests first. If it's not a bug, please head to discussions.
  • Localization
    Translate on Crowdin (free).

Develop

Clone the project using git. Then open the project in Android Studio (recommended), install required Android SDK dependencies where required. You may also use any other plaintext editor of your preference.

There is a Makefile in the project which makes it easy to test, lint, build, install & run the application on your device. See the Makefile for reference. You can find binaries (.apk), logs, test results & other outputs in the dist/ directory.
Example: make all install run.

The project code style is the AOSP Java Code Style. Use the auto reformat menu option of Android Studio before commiting or before you create the pull request.

Technologies / Dependencies

  • Java, Android SDK, AndroidX
  • No dependency on NDK, 1 APK = all Android supported Architectures
  • Editor: Advanced component based on Android EditText
  • Preview: Android WebView
  • Editor syntax highlighting: Custom implementation for all supported formats
  • Markdown parser: flexmark-java
  • Zim/WikiText parser: Custom implementation, transpiling to Markdown
  • todo.txt parser: Custom implementation
  • Binary support: WebView html img/audio/video with support for most common formats
  • CI/CD: GitHub Actions
  • Build system: Gradle, Makefile

Resources

Privacy

Markor does not use your internet connection unless your own user-generated content references external resources (for example, when you reference an external image by URL). The app works completely offline, no internet connection required! No personal data is shared with the author or any third parties. Files can be shared to other apps from inside the app by pressing the share button. Files are stored locally in a user selectable folder, defaulting to the internal storage "Documents" directory.

Android Permissions

  • WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE
    Read from and write files to storage.
  • INTERNET
    In user-generated content data can be loaded from the internet.
  • INSTALL_SHORTCUT
    Install a shortcut to launchers to open a file/folder in Markor.

License

The code of the app is licensed Apache 2.0.
Localization & translation files (string*.xml) as well samples are licensed CC0 1.0 (public domain).
Project is based on the unmaintained projects writeily and writeily-pro.

FAQ

File browser & file management

How do I save a file?

Markor automatically saves text when you leave Markor or close a file. Additionally there is save button in the top menu.

How do I save files to SD Cards?

Browse to the start folder of your SD Card and press the + button (using file browser or the menu option). Now press the plus button and follow the steps in the dialog. Afterwards Markor's file browser won't strike out filenames anymore and files are writable.

sdcard-mount

How to synchronize files?

Markor is and will stay an offline focused application. It works with sync synchronization apps, they have to do syncing respectively. Sync clients known to work in combination include BitTorrent Sync, Dropbox, FolderSync, OwnCloud, NextCloud, Seafile, Syncthing, Syncopoli and others.
The project recommendation is Syncthing. -> Guide for Syncthing

What is Notebook?

The root folder of your files! Markor starts with this folder at the main screen and allows you to browse files. You can work at any (accessible) file & location with Markor.

What is ToDo?

Your main to-do list file in todo.txt format. You c

Extension points exported contracts — how you extend this code

a0 (Interface)
(no doc) [7 implementers]
app/src/main/java/net/gsantner/opoc/wrapper/GsCallback.java
KatexVisitor (Interface)
(no doc) [1 implementers]
app/thirdparty/java/other/com/vladsch/flexmark/ext/katex/FlexmarkKatexExtension.java
a1 (Interface)
(no doc) [7 implementers]
app/src/main/java/net/gsantner/opoc/wrapper/GsCallback.java
a2 (Interface)
(no doc) [7 implementers]
app/src/main/java/net/gsantner/opoc/wrapper/GsCallback.java
a3 (Interface)
(no doc) [7 implementers]
app/src/main/java/net/gsantner/opoc/wrapper/GsCallback.java
a4 (Interface)
(no doc) [7 implementers]
app/src/main/java/net/gsantner/opoc/wrapper/GsCallback.java

Core symbols most depended-on inside this repo

replace
called by 651
app/src/main/java/net/gsantner/markor/frontend/textsearch/TextSearchHandler.java
append
called by 618
app/src/main/java/net/gsantner/markor/frontend/textview/TextViewUtils.java
length
called by 268
app/src/main/java/net/gsantner/markor/frontend/textview/TextViewUtils.java
getString
called by 230
app/src/main/java/net/gsantner/opoc/model/GsPropertyBackend.java
add
called by 209
app/src/main/java/net/gsantner/opoc/wrapper/GsHashMap.java
get
called by 183
app/src/main/java/net/gsantner/markor/model/AppSettings.java
contains
called by 180
app/src/main/java/net/gsantner/opoc/model/GsSharedPreferencesPropertyBackend.java
find
called by 159
app/src/main/java/net/gsantner/markor/frontend/textsearch/TextSearchHandler.java

Shape

Method 3,547
Function 2,255
Class 294
Interface 32
Enum 10

Languages

TypeScript57%
Java43%

Modules by API surface

app/thirdparty/assets/mermaid/mermaid.min.js3,122 symbols
app/thirdparty/assets/katex/katex.min.js301 symbols
app/src/main/java/net/gsantner/markor/model/AppSettings.java164 symbols
app/src/main/java/net/gsantner/opoc/util/GsContextUtils.java154 symbols
app/src/test/java/net/gsantner/markor/format/wikitext/WikitextSyntaxHighlighterTests.java83 symbols
app/thirdparty/java/other/com/vladsch/flexmark/ext/katex/FlexmarkKatexExtension.java64 symbols
app/src/main/java/net/gsantner/opoc/wrapper/GsMenuItemDummy.java59 symbols
app/src/main/java/net/gsantner/markor/frontend/textview/SyntaxHighlighterBase.java59 symbols
app/src/main/java/net/gsantner/opoc/frontend/filebrowser/GsFileBrowserListAdapter.java58 symbols
app/src/main/java/net/gsantner/markor/frontend/textview/TextViewUtils.java57 symbols
app/src/main/java/net/gsantner/opoc/util/GsFileUtils.java55 symbols
app/src/main/java/net/gsantner/markor/frontend/textview/HighlightingEditor.java55 symbols

For agents

$ claude mcp add markor \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact