Zurück zum Ranking

maaslalani/slides

Gomaaslalani.com/slides/

Terminal based presentation tool

slidespresentationmarkdownterminal
Sterne-Wachstum
Sterne
11.6k
Forks
311
Wochenwachstum
Issues
52
6k8k10k
Juni 2021Feb. 2023Nov. 2024Juli 2026
ArtefakteGo Modulesgo get github.com/maaslalani/slides
README

Slides

Slides in your terminal.

Slides Presentation

Installation

Homebrew Snapcraft AUR

Instructions

MacOS

brew install slides

Arch

yay -S slides

Nixpkgs (unstable)

nix-env -iA nixpkgs.slides

Any Linux Distro running snapd

sudo snap install slides

Go

go install github.com/maaslalani/slides@latest

From source:

git clone https://github.com/maaslalani/slides.git
cd slides
go install

You can also download a binary from the releases page.

Usage

Create a simple markdown file that contains your slides:

# Welcome to Slides
A terminal based presentation tool

---

## Everything is markdown
In fact, this entire presentation is a markdown file.

---

## Everything happens in your terminal
Create slides and present them without ever leaving your terminal.

---

## Code execution
```go
package main

import "fmt"

func main() {
  fmt.Println("Execute code directly inside the slides")
}
```

You can execute code inside your slides by pressing `<C-e>`,
the output of your command will be displayed at the end of the current slide.

---

## Pre-process slides

You can add a code block with three tildes (`~`) and write a command to run *before* displaying
the slides, the text inside the code block will be passed as `stdin` to the command
and the code block will be replaced with the `stdout` of the command.

```
~~~graph-easy --as=boxart
[ A ] - to -> [ B ]
~~~
```

The above will be pre-processed to look like:

┌───┐  to   ┌───┐
│ A │ ────> │ B │
└───┘       └───┘

For security reasons, you must pass a file that has execution permissions
for the slides to be pre-processed. You can use `chmod` to add these permissions.

```bash
chmod +x file.md
```

Checkout the example slides.

Then, to present, run:

slides presentation.md

If given a file name, slides will automatically look for changes in the file and update the presentation live.

slides also accepts input through stdin:

curl http://example.com/slides.md | slides

Go to the first slide with the following key sequence:

  • g g

Go to the next slide with any of the following key sequences:

  • space
  • right
  • down
  • enter
  • n
  • j
  • l
  • Page Down
  • number + any of the above (go forward n slides)

Go to the previous slide with any of the following key sequences:

  • left
  • up
  • p
  • h
  • k
  • N
  • Page Up
  • number + any of the above (go back n slides)

Go to a specific slide with the following key sequence:

  • number + G

Go to the last slide with the following key:

  • G

To quickly jump to the right slide, you can use the search function.

Press /, enter your search term and press Enter
(The search term is interpreted as a regular expression. The /i flag causes case-insensitivity.).

Press ctrl+n after a search to go to the next search result.

Code Execution

If slides finds a code block on the current slides it can execute the code block and display the result as virtual text on the screen.

Press ctrl+e on a slide with a code block to execute it and display the result.

Pre-processing

You can add a code block with three tildes (~) and write a command to run before displaying the slides, the text inside the code block will be passed as stdin to the command and the code block will be replaced with the stdout of the command. Wrap the pre-processed block in three backticks to keep proper formatting and new lines.

```
~~~graph-easy --as=boxart
[ A ] - to -> [ B ]
~~~
```

The above will be pre-processed to look like:

┌───┐  to   ┌───┐
│ A │ ────> │ B │
└───┘       └───┘

For security reasons, you must pass a file that has execution permissions for the slides to be pre-processed. You can use chmod to add these permissions.

chmod +x file.md

Configuration

slides allows you to customize your presentation's look and feel with metadata at the top of your slides.md.

This section is entirely optional, slides will use sensible defaults if this section or any field in the section is omitted.

---
theme: ./path/to/theme.json
author: Gopher
date: MMMM dd, YYYY
paging: Slide %d / %d
---
  • theme: Path to json file containing a glamour theme, can also be a link to a remote json file which slides will fetch before presenting.
  • author: A string to display on the bottom-left corner of the presentation view. Defaults to the OS current user's full name. Can be empty to hide the author.
  • date: A string that is used to format today's date in the YYYY-MM-DD format. If the date is not a valid format, the string will be displayed. Defaults to YYYY-MM-DD.
  • paging: A string that contains 0 or more %d directives. The first %d will be replaced with the current slide number and the second %d will be replaced with the total slides count. Defaults to Slide %d / %d. You will need to surround the paging value with quotes if it starts with %.

Date format

Given the date January 02, 2006:

Value Translates to
YYYY 2006
YY 06
MMMM January
MMM Jan
MM 01
mm 1
DD 02
dd 2

SSH

Slides is accessible over ssh if hosted on a machine through the slides serve [file] command.

On a machine, run:

slides serve [file]

Then, on another machine (or same machine), ssh into the port specified by the slides serve [file] command:

ssh 127.0.0.1 -p 53531

You will be able to access the presentation hosted over SSH! You can use this to present with slides from a computer that doesn't have slides installed, but does have ssh. Or, let your viewers have access to the slides on their own computer without needing to download slides and the presentation file.

Alternatives

Credits: This project was heavily inspired by lookatme.

Development

See the development documentation

Ähnliche Repositories
hakimel/reveal.js

The HTML Presentation Framework

JavaScriptnpmMIT Licensepresentationsslides
revealjs.com
72k17k
slidevjs/slidev

Presentation Slides for Developers

TypeScriptnpmMIT Licenseslidespresentation
sli.dev
47.8k2.1k
hugohe3/ppt-master

AI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations, data-backed charts and tables on demand, audio narration from speaker notes, and support for your own .pptx templates. · by Hugo He

PythonPyPIMIT Licenseai-agentpowerpoint
hugohe3.github.io/ppt-master/
40.2k3.3k
zarazhangrui/frontend-slides

Create beautiful slides on the web using a coding agent's frontend skills

JavaScriptnpmMIT Licenseai-slidesanthropic
26k2.1k
iamgio/quarkdown

🪐 Markdown with superpowers: from ideas to papers, presentations, websites, books, and knowledge bases.

KotlinGNU General Public License v3.0markdownmarkup-language
quarkdown.com
15.8k489
Anionex/banana-slides

一个基于nano banana pro🍌的原生AI PPT生成应用,迈向"Vibe PPT"; 支持上传任意模板图片,上传任意素材&智能解析,一句话/大纲/页面描述自动生成PPT,口头修改指定区域、一键导出可编辑ppt - An AI-native slides generator based on nano banana pro🍌

TypeScriptnpmGNU Affero General Public License v3.0ai-ppt-makerai-slide-builder
bananaslides.online
15.2k1.8k
dream-num/univer

Univer is a full-stack framework for creating and editing spreadsheets / word processor / presentation on both web and server.

TypeScriptnpmApache License 2.0data-tableexcel
docs.univer.ai
13.9k1.2k
marp-team/marp

The entrance repository of Markdown presentation ecosystem

TypeScriptnpmMIT Licensemarpmarkdown
marp.app
12.2k288
jxnblk/mdx-deck

♠️ React MDX-based presentation decks

JavaScriptnpmMIT Licensereactreactjs
mdx-deck.jxnblk.com
11.5k596
ksky521/nodeppt

This is probably the best web presentation tool so far!

JavaScriptnpmMIT Licensepresentationppt
10.4k2k
FormidableLabs/spectacle

A React-based library for creating sleek presentations using JSX syntax that gives you the ability to live demo your code.

TypeScriptnpmMIT Licensereactreactjs
commerce.nearform.com/open-source/spectacle/
10.1k699
mfontanini/presenterm

A markdown terminal slideshow tool

Rustcrates.ioBSD 2-Clause "Simplified" Licenseclipresentation
mfontanini.github.io/presenterm/
8.6k192