MCPcopy Index your code
hub / github.com/davisriedel/obsidian-typewriter-mode

github.com/davisriedel/obsidian-typewriter-mode @1.5.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.5.0 ↗ · + Follow
396 symbols 728 edges 92 files 1 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Typewriter Mode for Obsidian

Typewriter Mode turns Obsidian into a distraction-free writing environment.

  • Typewriter scrolling (current line stays at a fixed position on the screen)
  • Current line highlighting
  • Configurable number of lines kept above and below the cursor
  • Dimming of unfocused paragraphs / sentences
  • Fullscreen writing focus
  • Limit line length
  • Restore cursor position when opening files
  • Hemingway mode (disables editing previous text — write forwards only)

Installation

To install community plugins, make sure Restricted mode is turned off in Obsidian's settings.

Obsidian

You can install this plugin within Obsidian by doing the following:

  • Go to Settings > Community Plugins > Browse
  • Search for “Typewriter Mode”
  • Click Install
  • Click Enable

Manual

  1. Download the latest release from GitHub: https://github.com/davisriedel/obsidian-typewriter-mode/releases
  2. Extract the plugin folder from the zip to your vault's plugins folder: <vault>/.obsidian/plugins/. Note: On some machines, the .obsidian folder may be hidden. On macOS, you should be able to press Command+Shift+Dot to show the folder in Finder.
  3. Force reload Obsidian (Ctrl/Cmd+P → "Reload app without saving")

Beta Versions With BRAT

Follow the instructions in the repository of the BRAT plugin and use this repository's URL: https://github.com/davisriedel/obsidian-typewriter-mode to install beta versions of the plugin.

Disclosures

This plugin makes a single network request to github.com in order to fetch release notes when a new version of the plugin is installed. You can disable this, by disabling the update notice in the plugin's settings. No other network requests are made.

Acknowledgements

This plugin started as a fork of the incredible Typewriter Scroll plugin by deathau. It was turned into a separate plugin because many new features were added, breaking changes were introduced, and the code was completely restructured to make it more extensible.

The sentence highlighting was derived from Focus Active Sentence by artisticat1.

The writing focus was derived from Obsidian Focus Mode by ryanpcmcquen.

The restore cursor position feature was derived from Remember Cursor Position by dy-sh.

The hemingway mode feature was derived from Obsidian Hemingway Mode by jobedom.

Many thanks to the developers of these fantastic plugins. Please also consider supporting them.

Support this project

I am a student at the University of Tübingen and develop this plugin in my spare time. If you wish to support me and the continuous development of this plugin, you can donate via GitHub Sponsors or Buy Me a Coffee. Any support is greatly appreciated.

Changelog

See the CHANGELOG.md file.

Contribute

You are welcome to open issues and contribute to this project!

See the DEVELOPMENT.md file for instructions.

License

The plugin is licensed under the MIT license. See LICENSE.

Extension points exported contracts — how you extend this code

Window (Interface)
(no doc)
src/electron-remote.d.ts
Release (Interface)
(no doc)
src/components/update-modal.ts
PerWindowProps (Interface)
(no doc)
src/cm6/per-window-props.ts
GeneralSettings (Interface)
(no doc)
src/capabilities/settings.ts
TypewriterPositionData (Interface)
(no doc)
src/cm6/typewriter-offset-calculator.ts
TypewriterSettings (Interface)
(no doc)
src/capabilities/settings.ts
Settings (Interface)
(no doc)
src/cm6/highlight-sentence.ts
KeepLinesAboveAndBelowSettings (Interface)
(no doc)
src/capabilities/settings.ts

Core symbols most depended-on inside this repo

saveSettings
called by 22
src/lib.ts
setCSSVariable
called by 14
src/lib.ts
registerFeaturesInGroup
called by 10
src/components/settings-tab.ts
featureDefs
called by 10
src/components/settings-tab.ts
getEditorDom
called by 10
src/cm6/selectors.ts
updateStatusBar
called by 5
src/capabilities/features/hemingway-mode/hemingway-mode.ts
isDisabled
called by 4
src/cm6/plugin.ts
measureTypewriterPosition
called by 4
src/cm6/plugin.ts

Shape

Method 180
Class 136
Function 64
Interface 16

Languages

TypeScript100%

Modules by API surface

src/cm6/plugin.ts41 symbols
src/capabilities/features/general/enabled-file-paths.ts23 symbols
src/capabilities/commands/writing-focus/writing-focus.ts18 symbols
src/capabilities/settings.ts16 symbols
src/lib.ts12 symbols
src/capabilities/features/hemingway-mode/hemingway-mode.ts10 symbols
src/capabilities/base/feature-toggle.ts10 symbols
src/components/update-modal.ts9 symbols
src/cm6/highlight-sentence.ts9 symbols
src/components/settings-tab.ts8 symbols
src/cm6/typewriter-offset-calculator.ts8 symbols
src/capabilities/features/current-line/current-line-highlight-style.ts8 symbols

For agents

$ claude mcp add obsidian-typewriter-mode \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page