DopusWorX - A viewer/editor for md, csv, html, source, and binary files

DopusWorX

Latest release: v1.0.0-beta.3 โ€” 2026-06-20 (first released 2026-06-19)

DopusWorX grew out of mdWorX and has been rewritten from the ground up for a more robust and efficient design. What began as a Markdown viewer is now a document workspace inside Directory Opus, with a full maths workspace, more file types, thirty palettes and a much sturdier save path. It ships under its own name to mark the change.

What it is

A native Directory Opus viewer plugin: a Windows x64 DLL that renders documents in the Opus viewer pane and the pop-out viewer window. It is not a separate application (watch this space), it loads inside Opus and uses the Microsoft Edge WebView2 runtime to draw itself.

It is file-type aware. Open a file and DopusWorX picks the right view for it based on your preferences.

The design ethos has always been to keep it easy and non-intrusive. There are a lot of features, but you have complete control over what is on and what is not. Don't use maths? Turn it off. Don't like the toolbars? Hide them. And so on.

Key highlights

  • Source-file viewing with syntax highlighting for around 150 languages, up from ~35.
  • Choose the highlighting grammar per file type with the new Highlight Grammar setting. Ambiguous extensions are resolved by reading the file's content, not the extension alone.
  • CSV editor and viewer, with text input, sorting, filtering, and row/column add or remove.
  • Maths renderer with WYSIWYG live preview for Markdown, supporting both AsciiMath and LaTeX.
  • HTML rendering and source, with a split-pane view.
  • Obsidian image and reference link support.
  • Word, character and line count status pill.
  • More custom palettes built in-house, like ProWorX.
  • Updated UI and extended options compared to mdWorX.
  • File-type association and custom extensions, all from the settings menu.
  • A lot of work on the stability and robustness of file operations, aiming to make sure your work is never lost to crashes or background apps editing files.

That's off the top of my head. Below is a longer list I was keeping track of, though I won't claim it's exhaustive...

Full Feature List

Views and editing

  • Reading view, fully rendered output
  • Live view, edit in place with markers on the cursor line
  • Source view, raw text with syntax highlighting
  • Split screen in Source, raw left, preview right
  • Draggable divider, link or unlink synced scrolling
  • Per-file scroll position remembered on reopen
  • Ctrl+wheel and trackpad pinch zoom, toolbars stay put
  • Zoom menu with presets and reset, 50 to 200 percent
  • Full formatting toolbar, reorder or hide buttons
  • Auto-hide toolbars, reveal on hover
  • Word, character and line count pill
  • Undo and redo with a history dropdown
  • Find and replace, case, whole word, regex, count
  • Print or save the whole document as PDF
  • Export Markdown to a standalone HTML file
  • Export code or source as plain text
  • Undo an accidental reload from a toast

Markdown

  • GitHub flavoured Markdown, tables, task lists
  • Footnotes, editable in place
  • Definition lists, abbreviations, sub and superscript
  • Highlight with ==text==, mark styling
  • Clickable task checkboxes that edit the source
  • Auto-link bare URLs as you read
  • Smart typography, curly quotes, dashes, ellipsis
  • Optional hard line breaks, one newline one break
  • Inline HTML passes through, sanitised
  • Heading button cycles H1 to H6
  • Smart clear-formatting eraser, line or selection

Obsidian syntax

  • Wiki-links, [[note]] and [[note#heading]]
  • Block anchor links, [[note#^block-id]]
  • Embeds and transclusion, ![[note]] and ![[note#section]]
  • Section and block extraction for embeds
  • Image embeds with size, ![[picture.png|420]]
  • Obsidian alt-text image syntax, size and alignment

Maths

  • Inline $...$ and display $$...$$ rendering
  • AsciiMath input, inline, display and ```am fences
  • Auto-render, detects LaTeX or AsciiMath per equation
  • Lock input to LaTeX only or AsciiMath only
  • Mix both styles in one note
  • Convert an equation between styles in place
  • Multi-line environments, align, gather, cases, matrices
  • Symbol panel, browse symbols by category
  • Symbol inserts match your current style
  • Live preview of the equation under the cursor
  • Click an equation to edit, click away to redraw
  • Smart caret lands inside the equation body
  • Slanted fractions, \sfrac and \nicefrac
  • Eight maths fonts, Latin Modern, STIX Two and more
  • KaTeX or Temml engine
  • Prices stay text, $5 is safe, $ is literal
  • Custom macros from a box or a file
  • Maths only loads on notes that use it

Code and source files

  • Syntax highlighting for around 150 languages, the common ones built in and the rest loaded on demand
  • Pick the grammar per file type in Settings (Highlight Grammar), or map any custom extension to any language
  • Content detection for ambiguous extensions, e.g. .m between MATLAB/Octave, Objective-C and Mathematica
  • Plain text and logs open as syntax-aware source
  • Fenced code highlighted in all three views
  • Copy button on every code block
  • Word-wrap toggle and configurable tab width
  • Line-number gutter, several styles
  • Active line highlight, optional
  • Code folding and bracket matching
  • Comment, duplicate and move-line buttons
  • Show whitespace and line-ending marks
  • Markdown source highlighted too, headings and marks
  • Code theme picker, many built-in themes
  • Use the syntax theme in Source view too
  • Colour values detected in source, with a picker
  • Diff and patch files highlighted, changes coloured

CSV and tables

  • CSV and TSV grid, sortable columns
  • Sort ascending, descending or clear
  • In-cell editing, header row editing
  • Add or delete rows and columns
  • Insert several rows or columns at once
  • Drag to resize columns and row height, saved per file
  • Select cells and copy as TSV
  • Live filter box, freeze first column
  • Manual delimiter override, remembered per file
  • Cell wrap toggle
  • Copy the grid out as a Markdown table

HTML

  • HTML files render in an isolated, sanitised view
  • Source tab alongside the rendered page
  • Split view, edit source with live preview
  • Refresh the rendered preview on demand

Themes and palettes

  • 30 built-in palettes, 18 dark, 12 light
  • Default Auto follows the Opus pane background
  • Visual colour editor, save as a named theme
  • Per-token marker colours, bold, italic, strike, code
  • Per-heading colours, H1 to H6
  • Blockquote and table-header colours
  • Independent source-editor font, size and colours
  • Tunable borders, rules, shadows and page surface
  • Heading underline and rule thickness
  • Page shadow depth, six levels
  • Custom themes stored as JSON in your profile

Images

  • Insert a local file or paste an http(s) URL
  • Set alt text, width, height and alignment
  • Copy the image next to the doc, rewrite path relative
  • URL images downloaded, real format sniffed and fixed
  • Collision-free naming when a file already exists
  • Remote-image privacy gate, off by default, no network
  • Configurable image search folders for attachments

Context menus

  • Cut, copy and paste in editable views
  • Copy document as Markdown, HTML, rich or plain text
  • Copy a link address or open it in the browser
  • Copy an image address
  • Insert image, find or replace from the menu
  • Maths menu, convert, insert, copy as LaTeX or AsciiMath
  • CSV menu, insert or delete rows and columns, sort
  • Print or save as PDF, select all, zoom

Encoding and file safety

  • Auto-detect UTF-8 and UTF-16 LE or BE by BOM
  • Fallback codepage picker for legacy files
  • Shift-JIS and Windows codepages 1250 to 1258
  • CJK, Arabic, Hebrew, Devanagari, Thai, Greek, bidi text
  • Line endings, LF or CRLF, preserved on save
  • Encoding and line ending shown in the toolbar
  • Save, Save As, Save a Copy split menu
  • Optional auto-save, your interval, never clobbers outside edits
  • External-change conflict banner, keep or reload
  • Conflict detection by content hash, not just mtime
  • Empty-write floor guards against data loss
  • Atomic writes, temp file then MoveFileEx
  • Recovery stash in AppData survives an Opus crash

Settings

  • Settings dialog, Formats, File Types, About tabs
  • Live preview of palette and theme changes
  • Toolbar layout editor, drag to reorder
  • File association panel, per extension
  • Pick the highlighting grammar per file type
  • Back up the registry before changing associations
  • Add your own file types, with a grammar of your choice
  • Plain-language help popups
  • Support button on the About tab

Directory Opus integration

  • Native viewer plugin DLL, pane and pop-out window
  • Rendered with the system Edge WebView2 runtime
  • Shows a download link if WebView2 is missing
  • Opens any text file, catch-all for unknown types
  • Double-click setup to open .md in the viewer
  • Admin Install and Uninstall scripts, into the Opus folder
  • In-app updater, HTTPS only, host allowlist, SHA256 gate
  • The viewer DLL writes no registry keys, settings in AppData

Head over to the repo and click on 'Releases' to download the plugin with install/uninstall scripts to make it simple:

https://github.com/HyperWorX/DopusWorX

It still carries a beta tag while it sees real-world use. Released free for the Opus community. A standalone product is on the table and will come shortly.

Any feedback is more than welcome.

Cheers.

17 Likes

Congratulations, this plugin is well thought out and is absolutely beautiful !
The Undo an accidental reload from a toast is especially appreciated as it is very easy to do with equations in Obsidian . Yes, this is a good starting point work space for ideas.

I had a little trouble scrolling all my Body fonts . I eventually typed part of it in and then got it.
Not sure about this.

I like the variety of Math Fonts !
Not all of them may do things as you want them though.
Look out for dots and huge integrals.

I really appreciated the Render single newlines as Line breaks option.
It helps keep the source code easy to read and render inline Equations as we want them.
It is also good that we can avoid an unnecessary source code line gap in places.

2 Likes

I'm glad you get some use out of it. Thank you for the positive feedback and also for the issues to look out for; it's very helpful.

You've got the right idea. This was never meant to be a replacement for dedicated tools or for dedicated work sessions (although it can be used as such), but just for putting down quick edits and ideas. It's kind of grown a bit more than that initial idea.

The maths was definitely the most finicky part of all of this, so I do envisage some issues. Working with several different interleaving parts, especially supporting different maths types, was a bit of a challenge. Let me know if anything else pops up.

One thing that I found quite useful is that you can define your own control sequences for things that you use all the time. This was really helpful for me when doing things like: N-S equations, Sets, linear algebra etc.

This looks really interesting (and was obviously a lot of work...). Query (and I hate being "that guy", but oh, well): Would it be possible to add epub, mobi, and azw files to the things your viewer can display? There are preview handlers that can display the cover of an ebook but I'm not aware of any previous handlers that can actually display the contents of an ebook the way a .docx or .pdf can be displayed.

1 Like

Wow, what a great work. What I'm missing is syntax highlighting for ".vbs" because I still have many DOpus-scripts in VBScript.
It would also be nice if DopusWorX could recognize script files with the special extensions ".js.txt" and ".vbs.txt" as JavaScript/VBScript like DOpus does.

1 Like

You can enter your own custom extensions at the bottom of the file types to pick up ones and it should register ththem as source text.

If you put VBS in there it should work and I would imagine the syntax highlighter engine should automatically pick it up. I don't know why I forgot to put VBS in as the default list. But I did know I would forget things so I put in the custom option.

I already added .vbs, .js.txt and .vbs.txt and some other extensions like .ahk (Autohotkey) and .ncl (NirCmd) but none of them gets syntax highlighted. The ".js.txt" extension could possibly simply be added to the "JavaScript" extensions. I edited settings.js and viewer.js to do this but it only added the extension to the tooltip for "JavaScript" without applying syntax highlighting.

Ffs.. that guy :roll_eyes:

Yeah, ebooks are on my list, I've just not wanted to rush them.

The main snag is DRM. Most paid epubs and Kindle files (mobi, azw) are locked, and I can't open those, so a version that only did unprotected files would fall over on a big chunk of people's libraries. And even past that, doing it right means reading order, contents, embedded fonts, position memory and so on, not just throwing the pages on screen. I don't want to ship something that looks like a reader but only does half the job.

You've hit the real gap though. The standalone readers already do epub fine, and the preview handlers only ever show the cover, so the actual missing bit is the content showing in the Opus pane itself. That's the part worth doing, rather than redoing what's already out there.

It also feeds into something I'm still chewing over: what DopusWorX even is. It started as a markdown editor and turned into a document workspace, and I don't want to just keep bolting formats on. Reading and editing might be two different jobs, and a separate reader could be cleaner than one plugin trying to do everything. PDF's the same, easy enough to add, but it's part of that same question.

So not a no, just not yet. Rather do it properly or leave it. Open to thoughts.

2 Likes

Let me look at it, it should be, it's all wired in. I will get back to you.

Done, press the check for update in the settings or straight from the release page.

Let me know if any issues.

That was a really fast wish fullfillment. Even .ahk and .ncl extensions receive basic syntax colors now. Many thanks.

1 Like

No problem, like I said, it was wired in, I just had to find the regression point stopping it. You got lucky :slight_smile:

great job! thanx...
can i add .rpt, .tpl and maybe .inp to ะก++ category ?

Do they map well to C++ syntax rules? IIRC they are pretty different besides tpl which could be.

Since we are still in beta, I can push a dev build I had which included mapping lezer grammar tokens and a heuristic algo for file content disambiguation (e.g. finding if the .m extension is say Matlab/Mathematica...). It has autocomplete too, but wasn't sure on the stability of it across live and reading mode so beware.

not exact but close. there even some Notepad+ highlight syntax for it, but in Dopus it'll be much cuter) especially with QuickShow

Understood. Thank you.

Pushed a decent highlighting update I think you @fkast will be happy with using the dev build I converted to a beta .

Coverage jumped from ~35 languages to around 150, sadly non of yours natively....but....read on...

There's also a new Highlight Grammar dropdown under Settings > File types, so you can force any extension to any grammar (e.g. open .tpl as C++). Anything it doesn't recognise just opens as plain text, no errors.

The common ones ship built in, everything else loads on demand the first time you open that file type, so the viewer doesn't get heavier for languages you never touch.

For ambiguous extensions like .m, it contains a heuristic model to read the file contents to work out whether it's say MATLAB, Objective-C or Mathematica, rather than guessing from the extension alone.

---

Hit the check for update on the settings page and install the latest build (or just head to the repo).

Let me know if any issues.

P.S., Your code is a bit outdated though. I think it should say Construsoft at the top. :stuck_out_tongue:

1 Like

Many thanks, next level plugin for Opus :slight_smile:

small issue - cropped context menu.

what you are seeing:
csv, right-click context menu, the viewer pane is at bottom of lister with toolbar underneath.
The Zoom menu is cropped

EDIT:
clickable filepaths and urls would be a bonus

If you could please install the latest release again for me and check? It should be fixed now. Just press check for updates or install from repo.

EDIT:

File paths, nope (sort of). There are a lot of security and practicality issues with this and being secure with redundancy measures is something I never wanted to compromise. Plus It is a 'viewer' after all. I did look into it previously. You can wait for the standalone app :wink:

The sort of is that they are available using Obsidian/Wiki-link syntax in markdown files, but that needs to be manually specified as a relative location or absolute path. You don't want just any trap-door existing to a file on a computer that could do any number of things not so nice.

Urls should work. Where are u having issues?

EDIT 2: I couldn't reproduce a url issue but in any case hardened the code up a little for CSV files if that was where you had the issues. Please check for updates or go to repo and install the latest release again.