A markdown based tool for slide deck creation.

Overview

Tests

Decker

A markdown based tool for slide deck creation.

Installation from source

  1. Install stack and Node.js (for npm)
  2. Clone this repo.
  3. cd decker
  4. git submodule update --init --recursive
  5. make install

Installation from source on Windows

Instead of a makefile we use a PowerShell script on Windows to install decker from source

  1. cd decker
  2. .\bin\build.ps1

If you want to copy decker to C:\Program Files (x86) you can call .\bin\build.ps1 -local. This needs a PowerShell session with administrator rights.

To then call Decker from anywhere on the PowerShell command line create a PowerShell profile file, add the following line, and restart your PowerShell session!

$Env:Path += ";${Env:ProgramFiles(x86)}\Decker\bin"

External tools

Decker uses a few external tools that need to be installed on the system to use the full functionality:

  • ssh for publishing slide decks and resources
  • rsync for publishing slide decks and resources
  • LaTeX with pdflatex to generate LaTeX in PDF-files and embedded Tikz figures
  • Graphviz to generate graphs using dot
  • Gnuplot to generate graphs using dot
  • pdf2svg to generate SVG files from PDF documents
  • libbzip2-dev
  • NodeJS to install JavaScript dependencies
  • coreutils the GNU coreutils

Installation of external tools on macOS

Use Homebrew to install most of them.

brew install rsync graphviz gnuplot pdf2svg yarn coreutils

For the rest follow instructions on their respective webites.

To confirm that you have installed all of the required external tools, run the following command in a terminal window:

decker check

Installation of external tools on Linux

Use Ubuntu's Advanced Packaging Tool (APT) to install external tools.

apt-get update && apt-get install -y gnuplot graphviz libbz2-dev pdf2svg rsync ssh      

To confirm that you have installed all of the required external tools, run the following command in a terminal window:

decker check

Usage

Decker behaves very much like a build tool. It works recursively on the current directory and all subdirectories. Markdown files ending on .md in those directories are processed and converted to either a Reveal.js slide show, a HTML document, or a PDF document, depending on the file name.

  • *-deck.md

    Files with this ending are processed as silde decks. From one source file potentially four different targets can be generated:

    • *-deck.html A reveal.js based slide show
    • *-handout.hmtl A HTML document containing the speaker notes to the slide show.
    • *-deck.pdf A PDF version of the slide show
    • *-handout.pdf A PDF version of the handout
  • *-page.md

    Markdown files ending on *-page.md are translated into corresponding HTML or PDF documents.

Decker targets

  • decker version

    Prints the current Decker version and branch as well as the current pandoc version.

  • decker help

    Prints a help document to stdout in Markdown format.

  • decker info

    Prints information about the current project's directories, the targets (files which will be generated) and the meta data options which are found in top level decker.yaml file.

  • decker html

    Builds HTML versions of all available documents.

  • decker decks

    Builds only HTML slide decks.

  • decker pdf

    Builds PDF versions of all documents.

  • decker pdf-decks

    Builds PDF versions of all slide decks.

    To use decker pdf or decker pdf-decks, Google Chrome has to be installed.
    Windows: Currently decker pdf does not work on Windows. Please add print: true or menu: true to your slide deck and use the print button in the menu or on the title slide. MacOS: Follow the Google Chrome installer instructions. Google Chrome.app has to be located in either /Applications/Google Chrome.app or /Users/username/Applications/Google Chrome.app Alternatively you can add chrome to $PATH.
    Linux: chrome has to be on $PATH.

  • decker --watch

    Builds HTML versions of all documents and then watches for document changes. Each change to a watched document triggers a rebuild. Watching can be terminated with ^C.

  • decker --server

    Like decker watch. Additionally a local web server is started that serves the generated HTML files. The *-deck.html file is openend in the browser. Changed files are reloaded in the browser. (still requires livereloadx)

  • decker example

    Write a few example files to the current directory. To start exploring Decker type

    $ decker example
    $ cd example
    $ decker --server

    and make some changes to the Markdown files.

  • decker clean

    Recursively removes all generated files from the current directory (i.e. the public folder). Also removes cached resources.

  • decker publish

    Publish the generated files to a remote location using rsync if the location is specified in the meta data. The keys rsync-destination.host and rsync-destination.path specify the publishing destination.

Contributions

Pull requests

Contributions are accepted via pull requests. Before working on a feature, please write up an issue and discuss it with the other developers. For each implemented feature, increment the version number in package.yaml. Breaking changes increment the second number. Fixes increment the third number.

Tooling

Use appropriate tooling. We use Visual Studio Code with the Haskell Language Server plugin.

Haskell source code formatting

Haskell soure code readability depends heavily on consistent formatting conventions. Formatting is automated using the excellent ormolu formatter via the Haskell Language Server.

You might also like...

A plugin for the Obsidian markdown note application, adding functionality to render markdown documents with multiple columns of text.

A plugin for the Obsidian markdown note application, adding functionality to render markdown documents with multiple columns of text.

Multi-Column Markdown Take your boring markdown document and add some columns to it! With Multi Column Markdown rather than limiting your document lay

Sep 15, 2022

A markdown-it plugin that process images through the eleventy-img plugin. Can be used in any projects that uses markdown-it.

markdown-it-eleventy-img A markdown-it plugin that process images through the eleventy-img plugin. Can be used in any projects that use markdown-it. F

Sep 15, 2022

An obsidian plugin for uploading local images embedded in markdown to remote store and export markdown for publishing to static site.

An obsidian plugin for uploading local images embedded in markdown to remote store and export markdown for publishing to static site.

Obsidian Publish This plugin cloud upload all local images embedded in markdown to specified remote image store (support imgur only, currently) and ex

Sep 21, 2022

4Web is a collection&creation of codebase, frameworks, libraries dedicated to web development 📦

4Web is a collection&creation of codebase, frameworks, libraries dedicated to web development 📦

📨 You can also contribute to add / create your own collection in this repository Collection name Description 📌 blinke

May 17, 2022

FormGear is a framework engine for dynamic form creation and complex form processing and validation for data collection.

FormGear is a framework engine for dynamic form creation and complex form processing and validation for data collection.

FormGear is a framework engine for dynamic form creation and complex form processing and validation for data collection. It is designed to work across

Sep 14, 2022

Best dialogue for file creation, renaming, opening, deletion or jumping to a specific line

Best dialogue for file creation, renaming, opening, deletion or jumping to a specific line

Features No need to rely on vscode.quickOpen Create, rename, delete, open files/folders without relying on the sidebar Jump to specific lines Find spe

Jul 31, 2022

Allow moving/copying/and creation embeds for blocks with drag-n-drop just like Logseq or Roam

Allow moving/copying/and creation embeds for blocks with drag-n-drop just like Logseq or Roam

Demo Features Drag-n-drop for list items in the same pane and between different panes 3 modes: move block, copy block, embed block Automatic reference

Sep 19, 2022

A Cli that handles the creation of a basic express App that supports Husky configuration & static analysis tools

A Cli that handles the creation of a basic express App that supports Husky configuration & static analysis tools

@phazero/create-express-app · Create express app is a CLI that can generate boiler plate code for setting up an express app. Installation & Usage npx

Jun 6, 2022

4WEB is a collection & creation of codebase, frameworks, libraries and various resources dedicated to web development 📦🌐

4WEB is a collection & creation of codebase, frameworks, libraries and various resources dedicated to web development 📦🌐

📨 Vous pouvez également contribuer à ajouter/créer votre propre collection dans ce référentiel ... Table des matières 🔎 Codebase 🔎 NPM packages 🔎

May 17, 2022
Comments
  • explain.js: captureCamera() fails if there are no cameras

    explain.js: captureCamera() fails if there are no cameras

    If you use a device like a MacMini that simply has no camera device the function fails at line 396 and throws an error, aborting the whole recording setup.

    Expected behaviour if there are simply no devices to capture would be to return a null or an empty stream so further setup still happens.

    bug 
    opened by salbeira 0
  • kv-pairs of code blocks get wrong

    kv-pairs of code blocks get wrong "data-data" prefix

    Key-value-pairs (e.g. decker=cool) get wrong prefix (data-data-decker=cool)

    ``` {.cpp decker=cool}
    some code
    ```
    

    gets translated to

    <pre class="cpp" data-data-decker="cool">
    <code>
    some code
    </code>
    <pre>
    

    It should prefix just one "data-".

    Since this also happens with line-numbers=2-5, it breaks highlighting of code lines.

    bug 
    opened by mbotsch 3
Owner
Decker
Development on the Decker family of tools
Decker
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 13 Jul 1, 2022
Make the content slide prettily across the screen with variable sizes of scrolling items, in any of four directions, pausing while the mouse is over the marquee, and all with vanilla JavaScript.

TEG Marquee Make the content slide prettily across the screen with variable sizes of scrolling items, in any of four directions, pausing while the mou

Paul B. Joiner 0 Dec 30, 2021
Exports a JPDB deck to a Yomichan compatible frequency list.

JPDB Frequency List A frequency list generated using most of the jpdb corpus can be found in the releases. It is not exhaustive, as there is no deck a

marv 17 Sep 3, 2022
MDX Deck so good you get the chills 😮‍💨

MDX Frisson MDX Deck so good you get the chills. ??‍?? Frisson noun: a sudden strong feeling of excitement or fear; a thrill. Features ?? Markdown/MDX

Sreetam Das 6 Jun 17, 2022
A dependency-free JavaScript ES6 slider and carousel. It’s lightweight, flexible and fast. Designed to slide. No less, no more

Glide.js is a dependency-free JavaScript ES6 slider and carousel. It’s lightweight, flexible and fast. Designed to slide. No less, no more What can co

null 6.6k Sep 24, 2022
A full screen slide show for images and videos

Vanilla JS Slide full screen slide show for videos and images Why? This is a scratch-your-own-itch project as I wanted a way to see images and videos

Christian Heilmann 22 Sep 13, 2022
🏷️ See what Games are verified for the Steam Deck and which Medal they have on ProtonDB in the Steam Store

Show Great on Deck on Steam great-on-deck-search ??️ See what games are verified for the Steam Deck and which medal they got on ProtonDB in the Steam

Piepmatz 20 Sep 8, 2022
Plugin for the Steam Deck, to adjust color settings, like saturation or gamma

vibrantDeck A Steam Deck plugin (for Decky Loader) to adjust screen saturation / vibrancy. Build instrutions Clone the repository to use as an example

libvibrant 15 Sep 19, 2022
Simple customizable slide panel (without jQuery)

toolslide.js Minimalistic customizable slide panel (without jQuery) Table of contents Quick start Usage Examples Options Methods Events Browser suppor

null 5 May 23, 2022