A small tool to display markdown files as a slideshow.

Related tags

GUI rusty-slider
Overview

Rusty Slider

Cross-compile

A small tool to display markdown files as a slideshow.

Screenshot

Demo

Try out Rusty Slider online:

Download

Rusty Slider is available for multiple platforms, such as Windows, Linux, MacOS, and the web. Download the latest binary build from github:

https://github.com/ollej/rusty-slider/releases/

Usage

The file assets/rusty-slider.md will be read and split into slides on horizontal lines: ---

At the moment, the markdown supported is headers, paragraphs, code blocks, blockquotes, and simple lists. Emphasis and strong are supported if the theme has italic and bold fonts.

Heading level 1 can be used as title page, as it will render in the middle of the slide and can have a larger font size set by the theme option font_size_header_title.

You may use html comments (<!-- ... -->) in the markdown for anything you don't want to be shown.

Shortcuts

Use left and right arrow keys or left and right mouse button to move back and forth between slides.

The S key saves the current slide as a PNG on disk.

Use the key Q or Escape to exit the slideshow.

Command line options

Use flag --automatic when starting the application to automatically switch slide every N seconds.

Run code blocks

When the command line flag --enable-code-execution is used, it is possible to run code in code blocks and show the result.

When a code block with a recognized language is showing on a slide, it can be executed by pressing the enter key. The output will be added in a new code block at the bottom of the slide.

This feature only works when running locally on a machine that has the interpretator for each language installed. Be careful when using this as there is no checks done on the shell script.

Only the first code block on a slide can be executed.

Supported languages

  • bash
  • python
  • perl
  • ruby

Theme

Create a file called assets/default-theme.json to modify default display values.

If you make your own theme file, and want to share it, I'd be happy to add it to the release.

Example theme.json

{
    "background_image": "assets/background.png",
    "background_color": "#753204",
    "heading_color": "#8f4d22",
    "text_color": "#cccccc",
    "align": "right",
    "font": "assets/Amble-Regular.ttf",
    "font_bold": "assets/Amble-Bold.ttf",
    "font_italic": "assets/Amble-Italic.ttf",
    "font_size_header_title": 100,
    "font_size_header_slides": 80,
    "font_size_text": 40,
    "vertical_offset": 20.0,
    "horizontal_offset": 100.0,
    "line_height": 2.0,
    "blockquote_background_color": "#333333",
    "blockquote_padding": 20.0,
    "blockquote_left_quote": "",
    "blockquote_right_quote": "",
    "font_code": "assets/Hack-Regular.ttf",
    "font_code_size": 20,
    "code_line_height": 1.2,
    "code_background_color": "#002b36",
    "code_theme": "Solarized (dark)",
    "code_tab_width": 2,
    "bullet": "",
    "shader": true
}

Command line options

The command line options can also be used as URL arguments to the web demo.

rusty-slider 0.12.0
A small tool to display markdown files as a slideshow.

USAGE:
    rusty-slider [OPTIONS]

FLAGS:
        --enable-code-execution    Enable executing code in code blocks
    -h, --help                     Prints help information
    -V, --version                  Prints version information

OPTIONS:
    -a, --automatic <automatic>      Automatically switch slides every N seconds [default: 0]
    -d, --directory <directory>      Path to directory to load files from [default: assets]
    -S, --screenshot <screenshot>    When taking screenshot, store PNG at this path [default: screenshot.png]
    -s, --slides <slides>            Markdown files with slides text [default: assets/rusty-slider.md]
    -t, --theme <theme>              File with theme options [default: assets/default-theme.json]

Licenses

Rusty Slider

Copyright 2022 Olle Wreede, released under the MIT License.

Amble font

By Punchcut Apache License Version 2.0, January 2004 http://www.apache.org/licenses/

Hack font

Copyright Chris Simpkins SIL OFL 1.1 and Bitstream Vera v0.00 https://www.fontsquirrel.com/license/hack

Comments
  • Support comments/editor notes

    Support comments/editor notes

    I'm currently using rough timestamps like this one:

    <!-- ts: 0:30 -->
    

    It appears to screw things up for rusty-slider. Is there a way to have comments?

    enhancement 
    opened by kvark 11
  • Panic on start due to no sound device

    Panic on start due to no sound device

    ALSA lib pcm.c:2576:(snd_pcm_open_conf) Unknown field libs
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: NoDevice', /home/kvark/.cargo/registry/src/github.com-1ecc6299db9ec823/macroquad-0.3.6/src/audio/native_snd.rs:12:61
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    

    Seems quite silly to fail here because I didn't even expect sounds to be involved in my presentation :)

    bug 
    opened by kvark 3
  • Using -d directory refering to transitions /bignoise.png in that directory

    Using -d directory refering to transitions /bignoise.png in that directory

    Hi,

    I really loved this idea of presentation. Thanks for the great work. I created a folder presentation for all the images and markdown files outside the project and passed the directory path to it.

    Getting this Error:

    kind: NotFound, message: "No such file or directory" }), path: "/PATH/Presentation/transitions/bignoise.png" }', /PATH/rusty-slider/src/transitioner.rs:103:22

    Instead of copying files for every presentation, If all the dependent files are taken from the project path it will be wonderful. So can use this binary for different presentations.

    Let me know if you need more inputs.

    enhancement 
    opened by Karuturirs 2
  • Override the assets path

    Override the assets path

    Let's say I want to store multiple different presentations somewhere. Currently, it looks like the only option is having something like this:

    slides
      Presentation
        assets
      AnotherPresentation
        assets
    

    It's inconvenient because the only thing inside each presentation folder is "assets". Of course I could move the slides md out with an override, but there would still be an assets folder.

    What would be convenient for me is:

    • remove the assets entirely
    • by default rusty-slider looks for all the assets in the current directory
    • there is a command line option to override this directory
    enhancement 
    opened by kvark 2
  • Cargo install fails the build on macroquad stuff

    Cargo install fails the build on macroquad stuff

    Doing

     cargo install --git https://github.com/ollej/rusty-slider
    

    Getting

    error[E0308]: mismatched types
       --> src/slider.rs:109:13
        |
    109 |             text_font,
        |             ^^^^^^^^^ expected struct `macroquad::text::Font`, found enum `Result`
        |
        = note: expected struct `macroquad::text::Font`
                     found enum `Result<macroquad::text::Font, FontError>`
    
    opened by kvark 1
  • Macroquad panic in text loading

    Macroquad panic in text loading

    thread 'main' panicked at 'called Result::unwrap() on an Err value: FileError { kind: IOError(Os { code: 2, kind: NotFound, message: "No such file or directory" }), path: "" }', /Users/kvark/.cargo/registry/src/github.com-1ecc6299db9ec823/macroquad-0.3.6/src/text.rs:239:52 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

    bug 
    opened by kvark 3
Releases(v0.23.0)
Owner
Olle Wreede
Olle Wreede
A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

ScribeDown Current version: v0.0.1 Feature level: See the roadmap Beautiful, Clean, Writer-Oriented The goal of ScribeDown is to make Markdown the bes

Alex Dumas 4 Dec 20, 2022
SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

SixtyFPS 5.5k Jan 1, 2023
A Rust library to parse Blueprint files and convert them into GTK UI files

?? gtk-ui-builder A Rust library to parse Blueprint files and convert them into GTK UI files Inspired by the Blueprint project Example 1 - blueprints

Observer KRypt0n_ 5 Oct 22, 2022
A small tool to use along with i3/Sway to add CSS-powered decorations to your focused windows, for better usability.

glimmer What A tool for decorating i3 windows when they get focused, written in Rust. classic.mp4 Why When using i3-gaps I ran into the following prob

Daniel Acuña 26 Dec 17, 2022
A small dice roller app with GUI written in Rust 🦀🎲

?? Mini Dice A small dice roller written in Rust and using the egui library. Demo ?? A short introduction... I started creating Mini Dice with the goa

Angelica Raborar 4 May 16, 2023
A little wrapper I've written for creating UI screens from files for the BevyEngine.

UI Screens for BevyEngine This is a little thing I put together for creating simple UI screens using the BevyEngine. The idea is to define the screens

Greg Moller 3 Nov 19, 2022
A TUI to quickly find files in your Google Drive

A TUI to quickly find files in your Google Drive

David Somers 21 Nov 18, 2022
nats-spy is a terminal tool to help you to monitor NATS messages.

nats-spy nats-spy is a terminal tool to help you to monitor NATS messages. Install Homebrew (macOS) brew install alihanyalcin/nats-spy/nats-spy Usage

Alihan Doğuş Yalçın 23 Oct 23, 2022
Prototype for a Deno to npm package build tool.

dnt - Deno to Node Transform Prototype for a Deno to npm package build tool. What does this do? It takes a Deno module and creates an npm package for

David Sherret 573 Jan 9, 2023
Prototype for a Deno to npm package build tool.

dnt - Deno to Node Transform Prototype for a Deno to npm package build tool. What does this do? It takes a Deno module and creates an npm package for

Deno Land 570 Dec 28, 2022
A simple GUI version of the pH calibration tool written in egui, based on the eframe template.

caliphui A simple GUI version of the pH calibration tool written in egui, based on the eframe template. Usage Native binaries are provided under relea

Peter Dunne 0 Dec 29, 2021
GUI based tool to sort and categorize images written in Rust

ImageSieve GUI based tool to sort out images based on similarity, categorize them according to their creation date and archive them in a target folder

Florian Fetz 67 Dec 14, 2022
Toolbx Tuner is a tool to improve the experience with toolbx.

Tuner Toolbx Tuner is a tool to improve the experience with toolbx. Project Roadmap The project is currently only a user-interface concept. The

Hannes Kuchelmeister 50 Dec 28, 2022
A tool for creating egui Visuals (themes).

egui-visuals-utility A tool for creating egui Visuals (themes). The code is rather messy and might crash but it seems to work. To load the theme use s

null 7 Jan 13, 2023
write your next slideshow in rust 🦀, as a self-contained binary 📦.

?? bema Write your next slideshow in rust ?? , as a self-contained binary ?? . ?? DSL See examples/basic.rs. ?? frontends There are several ways you c

Olivier Abdesselam 21 Sep 5, 2022
A library to display rich (Markdown) snippets and texts in a rust terminal application

A CLI utilities library leveraging Markdown to format terminal rendering, allowing separation of structure, data and skin. Based on crossterm so works

Canop 614 Dec 29, 2022
A zero-config leptos component to display markdown

A port of yew-markdown using leptos ! Usage You can use this component to render both static and dynamic markdown. Static markdown use leptos::*; {

Antonin Peronnet 4 Aug 4, 2023
Rust code for T-Display S3 AMOLED, ESP32-S3 board with RM67162 AMOLED display

T-Display S3 AMOLED What is it? This is a Rust BSP for the Lilygo's T-Display S3 AMOLED board. RM67162 AMOLED driver in QSPI mode RM67162 AMOLED drive

BH1XUW 4 Jun 28, 2023
Introducing Inlyne, a GPU powered yet browsless tool to help you quickly view markdown files in the blink of an eye.

Inlyne - a GPU powered, browserless, markdown + html viewer inlyne README.md --theme dark/light About Markdown files are a wonderful tool to get forma

null 308 Jan 1, 2023
This is a tool to evaluate or export code from Markdown files.

Evaluate Markdown This is a tool to evaluate or export code from Markdown files. Why? Because I like writing Markdown files with code snippets (it's g

Balazs Nadasdi 5 Apr 25, 2023