{"id":49178653,"url":"https://github.com/soyunomas/puremark","last_synced_at":"2026-04-23T00:01:16.443Z","repository":{"id":352514329,"uuid":"1215447071","full_name":"soyunomas/puremark","owner":"soyunomas","description":"A clean, native Markdown viewer and editor for Linux built with Wails (Go + WebKit).","archived":false,"fork":false,"pushed_at":"2026-04-19T23:25:50.000Z","size":193,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-20T01:11:14.578Z","etag":null,"topics":["desktop-app","golang","linux","markdown-editor","markdown-viewer","wails"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soyunomas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-19T23:20:15.000Z","updated_at":"2026-04-19T23:30:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/soyunomas/puremark","commit_stats":null,"previous_names":["soyunomas/puremark"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/soyunomas/puremark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soyunomas%2Fpuremark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soyunomas%2Fpuremark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soyunomas%2Fpuremark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soyunomas%2Fpuremark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soyunomas","download_url":"https://codeload.github.com/soyunomas/puremark/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soyunomas%2Fpuremark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32159962,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T17:06:48.269Z","status":"ssl_error","status_checked_at":"2026-04-22T17:06:19.037Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop-app","golang","linux","markdown-editor","markdown-viewer","wails"],"created_at":"2026-04-23T00:01:14.272Z","updated_at":"2026-04-23T00:01:16.407Z","avatar_url":"https://github.com/soyunomas.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PureMark\n\nA clean, native Markdown viewer and editor for Linux built with [Wails](https://wails.io) (Go + WebKit).\n\nDesigned for reading notes, studying, and presenting documents with maximum readability.\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Platform](https://img.shields.io/badge/platform-Linux-lightgrey.svg) ![Go](https://img.shields.io/badge/Go-1.23-00ADD8.svg) ![Version](https://img.shields.io/badge/version-1.1.0-green.svg)\n\n![Screenshot](./image.png)\n\n## Features\n\n### Viewing \u0026 Rendering\n- **Native file association** — Double-click any `.md` file to open it instantly\n- **Elegant rendering** — Markdown to HTML with clean typography (Inter + JetBrains Mono)\n- **Syntax highlighting** — Code blocks with highlight.js, colors adapt to each theme\n- **Rich text copy** — Copy rendered content as `text/html` + `text/plain` for pasting into Word, email, etc.\n- **Print support** — Optimized `@media print` CSS with page-break control\n\n### Editing\n- **Edit mode** — Toggle between view and edit with `Ctrl+E`\n- **Inline formatting toolbar** — Bold, Italic, Strikethrough, Headings, Quotes, Lists, Links, Code (inline and block)\n- **Smart formatting** — Place your cursor on a word and apply formatting; it wraps the whole word automatically\n- **Full undo / redo** — `Ctrl+Z` / `Ctrl+Y` with custom undo stack (native undo unreliable in WebKitGTK)\n- **Unsaved changes protection** — Prompts to save before closing if there are pending edits\n\n### Multi-Tab\n- **Tabbed interface** — Open multiple files simultaneously\n- **Per-tab state** — Each tab maintains its own content, mode, undo/redo stack, and dirty flag\n- **Tab bar with scroll** — Horizontal scrolling with arrows and mouse wheel when many tabs are open\n- **Quick open button** — `+` button on the tab bar to open new files\n- **Drag \u0026 Drop** — Drop `.md` files onto the window to open them as new tabs\n\n### UI \u0026 Customization\n- **9 color themes** — Default, Nord, Solarized, Dracula, Rosé Pine, Catppuccin, Oceanic, Sunset Coral, Emerald\n- **Light / Dark mode** — Per-theme toggle with one click\n- **Zoom controls** — `Ctrl++`, `Ctrl+-`, `Ctrl+0`, `Ctrl+Mouse Wheel`, and status bar slider\n- **Frameless window** — Clean look with custom title bar and window controls\n- **Full menu bar** — File, Edit, View, Document, Format, Go, Tools, Help\n- **Context menu** — Right-click for Cut, Copy, Paste, Copy as Rich Text, Select All\n- **Status bar** — File path, line count, file size, modification date, zoom slider, fullscreen toggle\n- **Multi-language UI** — Spanish and English\n- **Preferences persistence** — Theme, color scheme, language, zoom level remembered across sessions\n\n### System Integration\n- **`.deb` package** with automatic desktop entry, icon registration, and MIME type association\n- **CLI support** — Open files directly from terminal: `puremark file.md`\n- **Multiple file arguments** — `puremark file1.md file2.md` opens both in tabs\n\n## Installation\n\n### Option A: `.deb` package (recommended)\n\nDownload the latest `.deb` from [Releases](https://github.com/soyunomas/puremark/releases) and install:\n\n```bash\nsudo dpkg -i puremark_1.1.0_amd64.deb\n```\n\nThis will:\n- Install the binary to `/usr/local/bin/puremark`\n- Register PureMark as the default viewer for `.md` files\n- Add the application icon and desktop entry\n\nTo uninstall:\n\n```bash\nsudo dpkg -r puremark\n```\n\n### Option B: Build from source\n\n#### Prerequisites\n\n- [Go](https://go.dev/dl/) 1.23+\n- [Node.js](https://nodejs.org/) 18+\n- [Wails CLI](https://wails.io/docs/gettingstarted/installation) v2\n- WebKit2GTK dev libraries:\n\n```bash\n# Debian / Ubuntu / Mint\nsudo apt install libwebkit2gtk-4.0-dev libgtk-3-dev\n```\n\nVerify your environment:\n\n```bash\nwails doctor\n```\n\n#### Build \u0026 Install\n\n```bash\ngit clone https://github.com/soyunomas/puremark.git\ncd puremark\nmake install\n```\n\nThis compiles the app, copies the binary to `~/.local/bin/`, and registers the `.desktop` file.\n\nMake sure `~/.local/bin` is in your `PATH`.\n\n#### Build `.deb` locally\n\n```bash\nmake deb\n```\n\nGenerates `puremark_1.1.0_amd64.deb` in the project directory.\n\n## Usage\n\n**From file manager:** Double-click any `.md` file (after installation, PureMark is the default handler).\n\n**From terminal:**\n\n```bash\npuremark path/to/file.md\npuremark file1.md file2.md   # Opens both in tabs\n```\n\n**Without arguments:** Opens a welcome screen — use `Ctrl+O` or **File → Open** to pick a file.\n\n## Keyboard Shortcuts\n\n| Shortcut | Action |\n|---|---|\n| `Ctrl+O` | Open file |\n| `Ctrl+S` | Save file |\n| `Ctrl+E` | Toggle edit mode |\n| `Ctrl+W` | Close current tab |\n| `Ctrl+P` | Print |\n| `Ctrl+Q` | Quit |\n| `Ctrl+Z` | Undo |\n| `Ctrl+Y` / `Ctrl+Shift+Z` | Redo |\n| `Ctrl+B` | Bold (edit mode) |\n| `Ctrl+I` | Italic (edit mode) |\n| `Ctrl+A` | Select all (content only) |\n| `Ctrl+Shift+C` | Copy as rich text |\n| `Ctrl++` / `Ctrl+-` | Zoom in / out |\n| `Ctrl+0` | Reset zoom |\n| `Ctrl+Mouse Wheel` | Zoom |\n| `F11` | Toggle fullscreen |\n| `Esc` | Close menu / modal |\n\n## Makefile Targets\n\n```\nmake build      # Compile for production\nmake install    # Build + install locally\nmake uninstall  # Remove from system\nmake deb        # Generate .deb package\nmake dev        # Run in dev mode (live reload)\nmake clean      # Remove build artifacts\n```\n\n## Tech Stack\n\n- **Backend:** Go + [Wails v2](https://wails.io)\n- **Frontend:** TypeScript + [Marked.js](https://marked.js.org) + [DOMPurify](https://github.com/cure53/DOMPurify) + [highlight.js](https://highlightjs.org)\n- **Runtime:** WebKit2GTK (Linux)\n\n## Project Structure\n\n```\npuremark/\n├── app.go              # Go backend (file I/O, dialogs, file stats)\n├── main.go             # Wails app entry point\n├── frontend/\n│   └── src/\n│       ├── main.ts     # Frontend logic (UI, tabs, editor, undo stack, i18n)\n│       └── style.css   # All styles, themes, syntax highlighting\n├── build/\n│   └── appicon.png     # App icon\n├── puremark.desktop    # Linux desktop entry\n├── build-deb.sh        # .deb packaging script\n├── install.sh          # Manual install script\n├── uninstall.sh        # Manual uninstall script\n├── Makefile            # Build automation\n└── wails.json          # Wails config\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoyunomas%2Fpuremark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoyunomas%2Fpuremark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoyunomas%2Fpuremark/lists"}