Show HN: Doxx – Terminal .docx viewer inspired by Glow

138 w108bmg 35 8/17/2025, 7:52:03 PM github.com ↗
I got tired of open file.docx → wait 8 seconds → close Word just to read a document, so I built a terminal-native Word viewer!

What it does:

* View `.docx` files directly in your terminal with (mostly) proper formatting

* Tables actually look like tables (with Unicode borders!)

* Nested lists work correctly with indentation

* Full-text search with highlighting

* Copy content straight to clipboard with `c`

* Export to markdown/CSV/JSON

Why I made this:

Working on servers over SSH, I constantly hit Word docs I needed to check quickly. The existing solutions I'm aware of either strip all formatting (docx2txt) or require GUI apps. Wanted something that felt as polished as [glow](https://github.com/charmbracelet/glow) but for Word documents.

The good stuff:

* 50ms startup vs Word's 8+ seconds

* Works over SSH (obviously)

* Preserves document structure and formatting

* Smart table alignment based on data types

* Interactive outline view for long docs

Built with Rust + ratatui and heavily inspired by Charm's [glow](https://github.com/charmbracelet/glow) package for viewing Markdown in the CLI (built in Go)!

    # Install
    cargo install --git https://github.com/bgreenwell/doxx
    
    # Use
    doxx quarterly-report.docx
Still early but handles most Word docs I throw at it. Always wanted a proper Word viewer in my terminal toolkit alongside `bat`, `glow`, and friends. Let me know what you think!

Comments (35)

3eb7988a1663 · 3m ago
Can this interact with Track Changes at all? Reviews+Comments? Probably a rat's nest of complexity, but that is something which might interest me every once and a while.

The other thing which was not obvious - can you extract document metadata and/or hidden text elements?

porridgeraisin · 1m ago
Is there no image support? You can use the kitty image protocol or sixel to display them inline no?
treetalker · 10h ago
Great project! Looking forward to trying it out in my law practice.

The name causes miscues and carries negative connotations, though, on account of its homonym verb (doxxing).

w108bmg · 5h ago
It's 100% intentional wordplay! "Doxxing" documents by exposing their contents in the terminal instead of keeping them locked in Microsoft Word. The whole project is about "liberation from Office" so the pun felt perfect. I'm honestly not too creative so I was bouncing around with Google Gemini on some "clever" names.
rafram · 2h ago
Some people may not want to have a tool called "doxx" installed on their work machines, FWIW.
KomoD · 58m ago
This is such a non-issue, it's just a name.

If someone asks about it "It's a tool to view docx files", end of conversation

jahsome · 33m ago
I get the sense you've never worked under the oppresive thumb of dashboard-driven enterprise IT, heh
8organicbits · 43m ago
We've got `git` (an insult), `kill` (violent), `slack` (not doing work) and `fsck` (looks like fuck). Doxx seems ok to me too.
ThreatSystems · 7h ago
I am genuinely curious, as to how this would be a solution for a law practice? How many lawyers are SSH'd into servers? Or am I being ignorant?
btown · 5h ago
As a non-lawyer who’s nonetheless been asked to help to review internal documents en masse - the idea of a fully scriptable <50ms switch time between documents is quite appealing. AI can help with initial screening, but there are many situations where humans are asked or required to do review at scale.
treetalker · 5h ago
I hate Word but sometimes have to deal with it when I would rather just have plain text. (Among other reasons, Word is notorious for making it difficult to select text to copy and paste, especially when dealing with legal citations and quotations.) Furthermore, the structure of documents is important to understanding them, especially in the law. So it seems like it would be useful to work with the text of the documents without locking horns with M$.

Scripting uses interest me too. Perhaps pandoc will still be a better option, but I'm also a sucker for TUIs and _Charm projects!

w108bmg · 5h ago
I'm working to improve the copy/paste. Right now, you can copy everything, but not select snippets to copy/paste (ways around this, though). Hopefully have it working in the next week!
Eldt · 6h ago
It doesn't have to be used over SSH, some lawyers might be comfortable using the terminal for local work
Tmpod · 7h ago
Was thinking the same. Might be worth looking into renaming the project, to prevent situations like that for both maintainers and users.
nine_k · 6h ago
The name could rather be docc, along the lines of thicc,
ashton314 · 1h ago
Very cool!

I did something like this with pandoc:

    pandoc -s -t man "$1" | groff -T utf8 -man | ${PAGER:-less}
Keeps a lot or formatting. My favorite way to read a README file in the terminal
BrouteMinou · 5h ago
It looks fantastic! That's going into my toolbox that's for sure.

It's refreshing to see something that isn't another chatbot.

greazy · 7h ago
Very cool project. I wish something like this for pdf files.
ivanjermakov · 6h ago
You can always use pandoc to convert pdf to md/plaintext and print it to console.
firesteelrain · 4h ago
Can you use this to basically cat the output and then you can grep the docx?

pandoc can do this

w108bmg · 4h ago
Maybe? I don't use Pandoc directly (fantastic program, but I only use it thorugh Quarto and Rmarkdown), but something like `doxx document.docx --export text | grep "search term"` should work just like `cat`+`grep`, but with better table structure and no intermediate conversion needed like pandoc.
firesteelrain · 4h ago
With pandoc you can do this I think

pandoc -t plain file.docx | grep "pattern"

koolba · 3h ago
Even better you can have pandoc output markdown.
acedTrex · 4h ago
> claude.md in the repo

Very unfortunate

btbuildem · 3h ago
And why is that? Because the logs were not hand-hewn? Source code was not crafted by the honest, simple, hard-working indigenous peoples of... wherever?

If you read through that claude.md, it's a well-organized summary of the project, touching on design, architecture, enumerating the functionality implemented so far, future goals, and more. It makes for a pretty great onboarding document for collaborators, tbh.

Have jetpack, will fly.

mikepurvis · 2h ago
I noticed this too recently, that the copilot instructions I had written up were just as suitable for importing a human.
zipping1549 · 4h ago
Great project. I love anything TUI.

Not so good of a name.

goku12 · 1h ago
True on both accounts. Doxxing is a traumatic experience for those who have been at its receiving end. A good project like this shouldn't be marred by a name like that.
agnishom · 4h ago
w108bmg · 4h ago
I honestly don't get the name hate? It's 100% intentional wordplay! "Exposing" word documents in the CLI.
rafram · 2h ago
If you keep having to explain why the name isn’t offensive/distasteful, it probably is (at least to a meaningful portion of the population).
leptons · 17m ago
Out of all the names this could have had, "doxx" is probably the absolute worst. "Wordplay" doesn't excuse bad taste. I'm not sure how many comments about it will convince you of that.

>"Exposing" word documents in the CLI.

You're trying way too hard.

mionhe · 3h ago
Doxing is more than exposure. It's exposing someone's real world identity online, often with the intent to harm them. It's the harming portion that I think most people are objecting to. While I doubt most of us have enough online notoriety for us to be targeted in this kind of attack, the idea is still very uncomfortable personally.
16bytes · 2h ago
It's a very pejorative term that is used with malicious intent. You don't understand why folk find it off-putting?

What about something like mdocx?

pylotlight · 3h ago
Install from source with git surely cannot be your only deployment plan here?