#!/bin/bash # shellcheck disable=SC2317 set -u # parameters konsole=org.kde.konsole-2913641 session=2 SLEEP_LONG_READ="3" SLEEP_SHORT_READ="2" SLEEP_TRANSITION="0.4" SLEEP_COMMAND_BEFORE="0.4" SLEEP_COMMAND_AFTER="0.65" SLEEP_MICROPAUSE="0.25" SLEEP_TYPESPEED="0.10" qtype() { qdbus "$konsole" "/Sessions/$session" sendText "$1" } qrun() { qdbus "$konsole" "/Sessions/$session" runCommand "$1" } qctrlb() { qdbus "$konsole" "/Sessions/$session" sendText $'\002' } qctrlc() { qdbus "$konsole" "/Sessions/$session" sendText $'\003' } qtype_slow() { echo -n "$1" \ | sed 's/\(.\)/\1\n/g' \ | while IFS="" read -r X ; do qtype "$X" ; sleep "$SLEEP_TYPESPEED" ; done } tmux_key() { qctrlb sleep 0.5 qtype "$1" } qtype_arrow_up() { qtype $'\033' qtype "[A" } qtype_arrow_down() { qtype $'\033' qtype "[B" } qtype_arrow_left() { qtype $'\033' qtype "[D" } qtype_arrow_right() { qtype $'\033' qtype "[C" } ## cleanup qctrlc tmux_key "d" qctrlc qrun "clear" sleep "$SLEEP_MICROPAUSE" qrun "cd ~/src/mfm" sleep "$SLEEP_MICROPAUSE" qrun "cp doc/demo.mfm.yml ~/.config/mfm.yml" sleep "$SLEEP_MICROPAUSE" qrun "rm -f output.rec" sleep "$SLEEP_MICROPAUSE" qrun "tmux kill-session -t demo" sleep "$SLEEP_MICROPAUSE" qrun "mkdir -p /home/vagrant/mnt" sleep "$SLEEP_MICROPAUSE" qrun "fusermount -u \"/home/vagrant/mnt/Public - Remote Debian Repository\"" sleep "$SLEEP_MICROPAUSE" qrun "rm -fr \"/home/vagrant/mnt/Public - Remote Debian Repository\"" sleep "$SLEEP_MICROPAUSE" qrun "# cleanup done" sleep "$SLEEP_LONG_READ" ## reset demo environment qrun "tmux new -s demo" sleep "$SLEEP_MICROPAUSE" tmux_key "c" qrun "cd ~/src/mfm" sleep "$SLEEP_MICROPAUSE" qrun "mdp --noslidenum doc/SCRIPT.md" sleep "$SLEEP_MICROPAUSE" tmux_key "c" qrun "export PATH=\$PATH:~/src/mfm/bin" sleep "$SLEEP_MICROPAUSE" qrun "export FZF_DEFAULT_OPTS=\"--height 40% --layout=reverse --border\"" sleep "$SLEEP_MICROPAUSE" qrun "alias cat=\"batcat -p\"" sleep "$SLEEP_MICROPAUSE" qrun "cd ~/src/mfm" sleep "$SLEEP_MICROPAUSE" qrun "clear" sleep "$SLEEP_MICROPAUSE" tmux_key "1" tmux_key ":" qrun "set -g status off" sleep "$SLEEP_MICROPAUSE" tmux_key "d" ## record qrun "asciinema rec --cols 80 --rows 24 -c 'tmux attach' output.rec" # slide 1 (title) sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 2 (config file) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # cmd 2 (show config file) qtype " " sleep "$SLEEP_TRANSITION" tmux_key "2" qtype_slow "cat " sleep "$SLEEP_MICROPAUSE" qtype_slow "~/.config" sleep "$SLEEP_MICROPAUSE" qtype_slow "/mfm.yml" sleep "$SLEEP_MICROPAUSE" qrun "" sleep "$SLEEP_LONG_READ" # double sleep "$SLEEP_LONG_READ" tmux_key "1" # slide 3 (config options 1) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 4 (config options 2) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 5 (preparation - mnt) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # demo 5 (show mnt) qtype " " sleep "$SLEEP_TRANSITION" tmux_key "2" qtype_slow "cd " sleep "$SLEEP_MICROPAUSE" qtype_slow "~/mnt" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" qtype_slow "ls" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_LONG_READ" tmux_key "1" # slide 6 (preparation - empty mnt!) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 7 (usage - run) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # demo 7 (run mfm) qtype " " sleep "$SLEEP_TRANSITION" tmux_key "2" qtype_slow "m" sleep "$SLEEP_MICROPAUSE" qtype_slow "f" sleep "$SLEEP_MICROPAUSE" qtype_slow "m" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_SHORT_READ" qtype_arrow_down sleep "$SLEEP_MICROPAUSE" qtype_arrow_down sleep "$SLEEP_MICROPAUSE" qtype_arrow_up sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_LONG_READ" tmux_key "1" # slide 8 (usage - what?) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # demo 8 (usage - what : show mnt) tmux_key "2" qtype_slow "ls" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_SHORT_READ" qtype_slow "cd \"Pub" sleep "$SLEEP_MICROPAUSE" qtype "lic - Remote Debian Repository\"" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" qtype_slow "ls" sleep "$SLEEP_MICROPAUSE" qtype $'\015' sleep "$SLEEP_SHORT_READ" qtype_slow "cd pool" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" qtype_slow "ls" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_SHORT_READ" qtype_slow "cd main" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" qtype_slow "ls" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_LONG_READ" tmux_key "1" # slide 9 (usage - explanation) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 10 (usage - prepare for detach) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # demo 10 (run mfm for detach) qtype " " sleep "$SLEEP_TRANSITION" tmux_key "2" qtype_slow "cd ~/mnt/" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" qtype_slow "m" sleep "$SLEEP_MICROPAUSE" qtype_slow "f" sleep "$SLEEP_MICROPAUSE" qtype_slow "m" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_SHORT_READ" qtype_arrow_down sleep "$SLEEP_MICROPAUSE" qtype_arrow_down sleep "$SLEEP_MICROPAUSE" qtype_arrow_up sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_LONG_READ" qtype_slow "ls" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_SHORT_READ" qtype_slow "cd \"Pub" sleep "$SLEEP_MICROPAUSE" qtype "lic - Remote Debian Repository\"" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_SHORT_READ" qtype_slow "ls" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_SHORT_READ" qtype_slow "ls -la" sleep "$SLEEP_COMMAND_BEFORE" sleep "$SLEEP_COMMAND_BEFORE" qtype $'\015' sleep "$SLEEP_COMMAND_AFTER" sleep "$SLEEP_LONG_READ" tmux_key "1" # slide 11 (usage - detached) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 12 (conclusion) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 13 (conclusion) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 14 (conclusion) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # slide 15 (conclusion) qtype " " sleep "$SLEEP_TRANSITION" sleep "$SLEEP_LONG_READ" # detach and clean tmux_key "d" qrun "tmux kill-session -t demo" qrun "termtosvg render output.rec output.svg" qrun "# success!" exit 0