Show HN: Doxx – Terminal .docx viewer inspired by Glow
242 points
1 day ago
| 24 comments
| github.com
| HN
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!
zvr
13 hours ago
[-]
Wonderful project; loved the speed and responsiveness.

But a humble request: please make sure that the planned "AI integration" is completely optional, not compiled-in, or, even better, a sister project ("aidoxx"?).

Having the functionality of sending the contents of a Word document to any external service will be a red flag and block adoption of this tool in many environments.

reply
nirava
1 hour ago
[-]
+1 to this. The AI stuff should be a different tool that I can pipe stuff into:

`doxx document.docs | doxxAI`

Even without any of the bad vibes around AI, it is just much more aesthetic and wonderful if the core doxx util was a single purpose command.

Also, it is open source so if it's sufficiently useful, someone will spin off a AI stripped down version anyways, and that'll probably gain more users/goodwill in the kind of CLI SSH dev niche market this tool is trying to fit in.

reply
stavros
11 hours ago
[-]
I'm usually not averse to AI in things, but I agree with you, any online functionality in a cli tool would make our security team ban a tool, and with good reason.
reply
freedomben
8 hours ago
[-]
The name of the took would certainly be ironic if they add this...
reply
shazbotter
7 hours ago
[-]
Installing something named "doxx" and executing it sounds like a top ten bad idea for computer users.

Needs a new name, or a certain percentage of the audience will nope out before you even get to explain what it does.

reply
piker
12 hours ago
[-]
Hey this looks really awesome. Super helpful for those of us who are building in the document space for debugging if nothing else. Here are a couple of other projects for you to develop with / on if you aren't already using them:

- https://github.com/mikeebowen/OOXML-Validator (if you plan on making edits, you'll want to ensure they're renderable by other Word users)

- https://marketplace.visualstudio.com/items?itemName=yuenm18.... (incredible VS code extension for debugging OOXML files)

One thing that will surprise a lot of users is how common old-style Word (.doc) files are still. For that you might consider integrating Antiword (https://github.com/grobian/antiword) if you can get comfortable with the licensing.

Be aware that styles play an important role in numbering that doesn't seem to be picked up here. So you'll want to apply the styles before calculating the numbering levels.

Over all really cool. Hit me up if you ever want to swap notes on Docx and Rust. My email is in my profile.

Keep it up!

reply
xvilka
7 hours ago
[-]
Instead of Antiword, maybe using LibreOffice parsers directly would solve the problem for parsing all kinds of the documents.
reply
ashton314
17 hours 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
reply
treetalker
1 day 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).

reply
w108bmg
20 hours 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.
reply
rafram
17 hours ago
[-]
Some people may not want to have a tool called "doxx" installed on their work machines, FWIW.
reply
KomoD
16 hours 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

reply
8organicbits
15 hours ago
[-]
We've got `git` (an insult), `kill` (violent), `slack` (not doing work) and `fsck` (looks like fuck). Doxx seems ok to me too.
reply
paavope
13 hours ago
[-]
I've seen the `itsdangerous` [1] package (which is a dependency for lot of Python projects) raise some eyebrows several times.

[1] https://itsdangerous.palletsprojects.com/en/stable/

reply
jahsome
15 hours ago
[-]
I get the sense you've never worked under the oppresive thumb of dashboard-driven enterprise IT, heh
reply
ThreatSystems
22 hours 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?
reply
btown
20 hours 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.
reply
treetalker
20 hours 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!

reply
albertgoeswoof
14 hours ago
[-]
This is what you’re looking for: https://tritium.legal/
reply
w108bmg
20 hours 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!
reply
Eldt
21 hours ago
[-]
It doesn't have to be used over SSH, some lawyers might be comfortable using the terminal for local work
reply
nine_k
21 hours ago
[-]
The name could rather be docc, along the lines of thicc,
reply
Imustaskforhelp
14 hours ago
[-]
Yea I like this one, I feel like they should change the name but maybe that's just my opinion and the author is free to do what they want with the project's name.

But still doxx feels like it would just get some unwarranted attention when its unnecessary and docc seems a nice enough name too.

I mean, the project seems fantastic but still the project seems quite new and I don't think that it would suffer anything from a name change.

reply
Tmpod
22 hours ago
[-]
Was thinking the same. Might be worth looking into renaming the project, to prevent situations like that for both maintainers and users.
reply
majkinetor
14 hours ago
[-]
This looks great, I hope we will have releases for Windows soon. It really does going to my nerves to install MS Office on new machine, and recently I stopped doing that and use Office 365 free version to view and edit docs instead, which is way worst regarding efficiency and privacy, but at least I don't have it on my machine. Its a shame there is no stripped down version of Word that lets me just view docx files and do most basic editing and commenting, that can be installed with winget in seconds. I use markdown for everything, but in enterprise environment when I send markdown to people they convert it to Word and return it back...

BTW, 8 seconds to start Word? What kind of computer are you using? Word is not performance beast but its not that slow either.

reply
jbgt
12 hours ago
[-]
LibreOffice is a food alternative if you just want simple Word management.

Of course it's a big install on the other hand.

reply
majkinetor
10 hours ago
[-]
I like the typo :)

I tried it, but some documents are not shown correctly as far as I remember.

reply
mxuribe
7 hours ago
[-]
Both MS Word and Libreoffice leave me feeling bloated...so am thankful for a lighter weight offering like doxx...to help with my computing "diet"...Wait, are we still talking about food or apps? :-)
reply
aeve890
6 hours ago
[-]
I dream for the day when I can get to do anything I want without leaving the terminal. Thank you for your service.

The criticism of the project name is on point though. Horrible for searching and probably a no-no in job machine.

reply
_def
12 hours ago
[-]
Far tangent: does anyone else feel pressured when viewing a document in google docs and it's visible that a coworker is (or could) also viewing it, and seeing your cursor etc?
reply
sjsdaiuasgdia
8 hours ago
[-]
My favorite version of this is when someone is introduced to the idea that others can see when they select a range of text by seeing their selection show up on the view of the doc being presented to the video conf.
reply
xvilka
7 hours ago
[-]
It would have been nice if it also parsed old DOC (and RTF) formats, maybe ODT[1] as well.

[1] https://github.com/anvie/dotext

reply
politelemon
14 hours ago
[-]
It would be very nice if this were in a Docker image, so we don't need a go install.
reply
BrouteMinou
20 hours 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.

reply
i_am_proteus
9 hours ago
[-]
I have noticed many nice projects built on Rust + ratatui - many thanks to the creators and mantainers.
reply
joshka
55 minutes ago
[-]
It's always nice to hear public thanks. :)
reply
zipping1549
20 hours ago
[-]
Great project. I love anything TUI.

Not so good of a name.

reply
goku12
16 hours 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.
reply
agnishom
20 hours ago
[-]
reply
w108bmg
19 hours ago
[-]
I honestly don't get the name hate? It's 100% intentional wordplay! "Exposing" word documents in the CLI.
reply
mxuribe
7 hours ago
[-]
Hi @w108bmg i get where you're coming from...And, if your intent is to use this wonderful tool that you built for you and some small circle of friends, etc..., then the naming is of course, your choice, and you can do what you want! But, you did post it on hacker news, and you did ask for feedback. If your intent is to have this cool app be used by more users, then you should consider the feedback that you're getting here. Should all this feedback represent every single possible user? No! Let's face it, hacker news has a lot of tech-savvy users...so there's many different types of potential users not accounted for here, and so it would be good for you to get feedback from other users that you want using your app...if you want that.

This software is your baby...but if you named your baby something that possibly repels others, you should feel comfortable with that feedback going forward. i don;t mean that in a bad way, simply a fact of how humans (good or bad) respond to things. This is all simply a series of signals. What you do with that is your business of course.

By the way, have you considered a more boring name for the app like *DocSee*? :-)

reply
mionhe
18 hours 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.
reply
rafram
17 hours 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).
reply
alpaca128
11 hours ago
[-]
> "Exposing" word documents in the CLI

Exposing contents is called a leak. Doxxing is exposure of a person's identity/address etc.

There is no wordplay here that actually fits what this tool does. This is just a very misleading name.

reply
leptons
15 hours 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.

reply
16bytes
17 hours 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?

reply
3eb7988a1663
15 hours 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?

reply
g0ran
13 hours ago
[-]
What an unfortunate name.
reply
bishwos
11 hours ago
[-]
Interesting project. How much time did it take to build the project?
reply
greazy
22 hours ago
[-]
Very cool project. I wish something like this for pdf files.
reply
ivanjermakov
21 hours ago
[-]
You can always use pandoc to convert pdf to md/plaintext and print it to console.
reply
zvr
13 hours ago
[-]
Pandoc can convert to PDF, but not from PDF.

https://pandoc.org/faqs.html#how-can-i-convert-pdfs-to-other...

reply
firesteelrain
19 hours ago
[-]
Can you use this to basically cat the output and then you can grep the docx?

pandoc can do this

reply
w108bmg
19 hours 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.
reply
firesteelrain
19 hours ago
[-]
With pandoc you can do this I think

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

reply
koolba
19 hours ago
[-]
Even better you can have pandoc output markdown.
reply
firesteelrain
10 hours ago
[-]
Which almost looks like what this terminal program is doing ?
reply
angrydingo
13 hours ago
[-]
very cool, just discovered glow so I would like to build something similar too :)
reply
porridgeraisin
15 hours ago
[-]
Is there no image support? You can use the kitty image protocol or sixel to display them inline no?
reply
leephillips
7 hours ago
[-]
Thanks for making this! It seems to work great, and will be convenient to have around.

My one feature request would be to remove, or provide a version without, the “AI” stuff.

reply
acedTrex
19 hours ago
[-]
> claude.md in the repo

Very unfortunate

reply
btbuildem
18 hours 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.

reply
mikepurvis
17 hours ago
[-]
I noticed this too recently, that the copilot instructions I had written up were just as suitable for importing a human.
reply
Hilift
14 hours ago
[-]
> Working on servers over SSH, I constantly hit Word docs

What?

reply
pylotlight
18 hours ago
[-]
Install from source with git surely cannot be your only deployment plan here?
reply