# Glow
Render markdown on the CLI, with _pizzazz_!
## What is it?
Glow is a terminal based markdown reader designed from the ground up to bring
out the beauty—and power—of the CLI.
Use it to discover markdown files, read documentation directly on the command
line and stash markdown files to your own private collection so you can read
them anywhere. Glow will find local markdown files in subdirectories or a local
Git repository.
By the way, all data stashed is encrypted end-to-end: only you can decrypt it.
More on that below.
## Installation
Use your fave package manager:
```bash
# macOS or Linux
brew install glow
# Arch Linux (btw)
yay -S glow
# Void Linux
xbps-install -S glow
# Nix
nix-env -iA nixpkgs.glow
# FreeBSD
pkg install glow
```
Or download a binary from the [releases][releases] page. MacOS, Linux, FreeBSD
binaries are available, as well as Debian and RPM packages. ARM builds are also
available for Linux and FreeBSD.
Or just use `go get`:
```bash
go get github.com/charmbracelet/glow
```
[releases]: https://github.com/charmbracelet/glow/releases
## Usage
Run without arguments to start the TUI and browse local and stashed markdown.
Or, to simply format a document on the CLI, use a markdown source as the
primary argument:
```bash
# Read from file
glow README.md
# Read from stdin
glow -
# Fetch README from GitHub / GitLab
glow github.com/charmbracelet/glow
# Fetch markdown from HTTP
glow https://host.tld/file.md
```
### Stashing
Glow works with the Charm Cloud to allow you to store any markdown file in your
own private collection. When you run:
`glow stash README.md`
You'll add that markdown file to your stash. Running `glow` without arguments
will let you browse through all your stashed documents. This is a great way to
keep track of things that you need to reference often.
Stashing is private, its contents will not be exposed publicly, and it's
encrypted end-to-end. More on encryption below.
### Word Wrapping
The `-w` flag lets you set a maximum width at which the output will be wrapped:
```bash
glow -w 60
```
### Paging
The output can be displayed in the user's preferred pager with the `-p` flag.
This defaults to the ANSI-aware `less -r` if `$PAGER` is not explicitly set.
### Styles
You can choose a style with the `-s` flag. When no flag is provided `glow` tries
to detect your terminal's current background color and automatically picks
either the `dark` or the `light` style for you.
```bash
glow -s [dark|light]
```
Alternatively you can also supply a custom JSON stylesheet:
```bash
glow -s mystyle.json
```
For additional usage details see:
```bash
glow --help
```
Check out the [Glamour Style Section](https://github.com/charmbracelet/glamour/blob/master/styles/gallery/README.md)
to find more styles. Or [make your own](https://github.com/charmbracelet/glamour/tree/master/styles)!
## 🔒 Encryption: how it works
Encryption works by issuing symmetric keys (basically a generated password) and
encrypting it with the local SSH public key generated by the open-source
[charm][charmlib] library. That encrypted key is then sent up to our server.
We can’t read it since we don’t have your private key. When you want to decrypt
something or view your stash, that key is downloaded from our server and
decrypted locally using the SSH private key. When you link accounts, the
symmetric key is encrypted for each new public key. This happens on your
machine and not our server, so we never see any unencrypted data.
[charmlib]: https://github.com/charmbracelet/charm
## License
[MIT](https://github.com/charmbracelet/glow/raw/master/LICENSE)
Part of [Charm](https://charm.sh).
Charm loves open source! / Charm热爱开源!