An open API service indexing awesome lists of open source software.

https://github.com/ifer47/markeron

Lightweight screen annotation tool — press a hotkey to draw, highlight, and annotate anywhere on your desktop.
https://github.com/ifer47/markeron

canvas screen-annotation tailwindcss tauri tauri-app vite vue3-typescript

Last synced: 2 months ago
JSON representation

Lightweight screen annotation tool — press a hotkey to draw, highlight, and annotate anywhere on your desktop.

Awesome Lists containing this project

README

          


MarkerOn icon

MarkerOn


Lightweight screen annotation tool — press a hotkey to instantly draw, highlight, and annotate anywhere on your desktop.



CI
Release
Downloads
License
Stars



中文



MarkerOn

## Download


Windows
macOS ARM64
macOS x64
Microsoft Store

**[Download Latest Release](https://github.com/ifer47/markeron/releases/latest)** — pick the installer for your platform from the assets list.

## Features

- **Annotate anywhere** — draw over any app, including the taskbar
- **8 tools** — pen, highlighter, arrow, rectangle, ellipse, line, eraser, text
- **Intuitive panel** — press Space to toggle tools, colors, and stroke widths
- **Full keyboard control** — every action has a shortcut, no menus needed

8 annotation tools

Settings panel

## Keyboard Shortcuts

On **macOS**, use Command (⌘) in place of Ctrl, and Option (⌥) in place of Alt.

### Global Shortcuts

| Action | Windows | macOS |
| :--- | :--- | :--- |
| Toggle annotation mode | Ctrl + Shift + D | Command + Shift + D |
| Clear all annotations | Ctrl + Shift + C | Command + Shift + C |

### Tool Switching

| Key | Tool | Key | Tool |
| :---: | :--- | :---: | :--- |
| 1 | Pen | 5 | Ellipse |
| 2 | Highlighter | 6 | Line |
| 3 | Arrow | 7 | Eraser |
| 4 | Rectangle | T | Text |

### Common Actions

| Action | Windows | macOS |
| :--- | :--- | :--- |
| Settings panel | Space | Space |
| Copy screen | Ctrl + C | Command + C |
| Undo / Redo | Ctrl + Z / Y | Command + Z / Y |
| Stroke width | Ctrl + Scroll | Command + Scroll |
| Clear all | Delete | Delete |
| Exit | Esc | Esc |

All shortcuts

#### Drawing with Modifier Keys

| Draws | Windows | macOS |
| :--- | :--- | :--- |
| Current tool (default: pen) | Drag | Drag |
| Line | Alt + Drag | Option + Drag |
| Rectangle | Ctrl + Drag | Command + Drag |
| Square | Ctrl + Alt + Drag | Command + Option + Drag |
| Ellipse | Shift + Drag | Shift + Drag |
| Circle | Shift + Alt + Drag | Shift + Option + Drag |
| Arrow | Ctrl + Shift + Drag | Command + Shift + Drag |

#### Edit & Move

| Action | Effect |
| :--- | :--- |
| Hover over an element and drag | **Move** the element (enable "Allow dragging existing elements" in settings) |
| Double-click existing text | Re-enter **edit mode** for that text |
| Double-click empty area in T mode | Create a new text input at cursor position |

#### Color Switching

| Action | Effect |
| :--- | :--- |
| Q / E | Previous / Next color |
| Right-click | Open quick color picker at cursor |

#### Other

| Action | Windows | macOS |
| :--- | :--- | :--- |
| Stroke width | Ctrl + Scroll | Command + Scroll |
| Redo (alt) | Ctrl + Shift + Z | Command + Shift + Z |
| Switch window & exit | Alt + Tab | Command + Tab |

## Quick Start

```bash
npm install
npm run dev
npm run build
```

After launching, the app runs silently in the **system tray** with no window shown.

## Tech Stack

| Technology | Role |
| :--- | :--- |
| **Tauri v2** | Desktop framework — Rust backend, system tray, global shortcuts, transparent always-on-top window |
| **Vue 3** | Frontend UI framework |
| **Vite** | Fast bundling and HMR |
| **TypeScript** | Full type safety |
| **Canvas API** | High-performance drawing engine |

Project structure

```
markeron/
├── src-tauri/
│ ├── src/
│ │ └── lib.rs # Rust backend — window management, shortcuts, tray
│ └── tauri.conf.json # Tauri configuration

├── src/
│ ├── components/
│ │ ├── DrawingOverlay.vue # Drawing overlay (Canvas + interactions)
│ │ ├── SettingsPanel.vue # Annotation toolbar (tool / color / stroke)
│ │ ├── SettingsView.vue # Settings window (shortcut config / sidebar layout)
│ │ └── TextBox.vue # Inline text input
│ ├── composables/
│ │ └── useDrawing.ts # Drawing engine (pen, shapes, text, undo/redo)
│ ├── types/
│ │ └── app.d.ts # TypeScript type declarations
│ ├── App.vue # Root component
│ ├── main.ts # Renderer entry point
│ └── style.css # Global styles

├── index.html # HTML entry
├── vite.config.ts # Vite configuration
└── package.json
```

## License

[MIT](./LICENSE)