command module
Version: v1.1.0 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Nov 23, 2021 License: BSD-3-Clause Imports: 23 Imported by: 0



presentx screenshot

Go's present tool but with code syntax highlighting. Highlighted code is editable with some caveats

This is a quick and dirty implementation of flippeeer's reddit post. You can find a static version at acanalis's github.io.


Requires go-presentx installed and a prepared directory with ./templates and ./static folder. You may clone this repo and run go-presentx in the directory to be up and running on Go to slides link and open a .slide file to start a presentation.

You can serve the presentation on the internet configuring -orighost flag to your public domain. You may have to configure websockets if using a reverse-proxy like NGINX.


See releases executables for windows/linux/mac binaries.

To install from source: the following commands will generate an executable tool for your OS and architecture. Requires Go

git clone https://github.com/soypat/go-presentx.git
cd go-presentx
go install

go-presentx shall be installed to your $GOPATH/bin. Add this directory to your PATH to be able to call go-presentx from console.

  • Requires Go installed. Enable modules with go env -w GO111MODULE="on"

Start presentation on (default) by running:

go run . 

About the syntax highlighting changes

  • No auto-rendering while editing

  • Uses the lightweight prism.js for syntax highlighting

  • Change code style by replacing static/prism.css with one from prism.js' site and modifying it to fit your needs (see css config section)

  • Press CTRL while in editable code block to re-render all syntax

  • Issue with the caret being invisible at times and sometimes appearing to be on the next line

Prism CSS config

  • Ligatures off by default. You may enable them in prism-github-dark.css by setting "calt" to on (see comment).

Non-default settings listed:

pre[class*="language-"] {
    caret-color: #ccc;
    font-size: 0.95em;
    border-radius: 7px;
    line-height: 1.2;
pre[class*="language-"] {
    padding: 0.6em;

Contributing, License and authors

PRs welcome. I'll look at issues, I'll try to be nice.

idk, same license as Go I guess. Credit to The Go Authors.



Present displays slide presentations and articles. It runs a web server that presents slide and article files from the current directory.

It may be run as a stand-alone command or an App Engine app.

The setup of the Go version of NaCl is documented at: https://golang.org/wiki/NativeClient

To use with App Engine, copy the files in the tools/cmd/present directory to the root of your application and create an app.yaml file similar to this:

runtime: go111

- url: /favicon.ico
  static_files: static/favicon.ico
  upload: static/favicon.ico
- url: /static
  static_dir: static
- url: /.*
  script: auto

# nobuild_files is a regexp that identifies which files to not build.  It
# is useful for embedding static assets like code snippets and preventing
# them from producing build errors for your project.
nobuild_files: [path regexp for talk materials]

When running on App Engine, content will be served from the ./content/ subdirectory.

Present then can be tested in a local App Engine environment with

GAE_ENV=standard go run .

And deployed using

gcloud app deploy

Input files are named foo.extension, where "extension" defines the format of the generated output. The supported formats are:

.slide        // HTML5 slide presentation
.article      // article format, such as a blog post

The present file format is documented by the present package: https://pkg.go.dev/golang.org/x/tools/present


Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL