**Created**:: [[2021-09-10 Friday]]
**Link**:: https://youtu.be/fWuFeMMZid4
**Duration**:: 29:17

# Summary
In this video, the speaker provides a comprehensive guide on how to create and present a sketch note slideshow using Obsidian, Excalidraw, and the QuickAdd plugin. The tutorial includes setting up slides, configuring automation scripts, handling JavaScript in Obsidian, and exploring alternative presentation methods. By the end of the video, viewers will have the tools needed to enhance their visual personal knowledge management practices.
# Key Takeaways
- Learn to set up a sketch note slideshow using Excalidraw and Obsidian.
- Discover automation scripts that facilitate slide creation and presentation.
- Explore alternative methods for presenting without scripting, using practical tools in Excalidraw.
# Content
Hey and welcome back! In today's video, I'm going to give you a step-by-step walkthrough of how you can present your sketch note in a creative manner using Excalidraw and Obsidian. I'm going to cover a couple of topics: first, I'm going to demonstrate the solution, how you set up your slides, and how you present this slide. Then we're going to look at some of the JavaScripts that you need. Together, we're going to configure QuickAdd to automate the whole process. After that, we'll move on to some practical aspects, such as how you can edit scripts in Obsidian, edit JavaScript in Obsidian, and look at the code view plugin. I'll also show you how you can download and install these scripts if you don't want to copy and paste code; I'll provide you with the JavaScript file so you can easily implement this automation in your own environment. Finally, I'll show you an alternative that doesn't require any scripts and I think is also quite powerful. So with that, let's get started with the solution demo. [* ](https://youtu.be/fWuFeMMZid4?t=0)
So, I want to present this drawing and I want to set up my slides. What I've done up front is created groups in this drawing. For example, this is a group of objects, and actually, this group contains groups within it. If I double-click, you can see that those objects at the top are a group as well. However, I have a set of groups here that are the areas of the drawing that I want to present. The way I'm setting up my slides is with a macro that captures the group IDs into a navigation file. I click on the first item, I click my shortcut, I click on the second, and you can see in the top right, in the meantime, I have a message pop up that the ID has been added to my navigation file. That's it—I've set up my navigation for this drawing. I can also look at this file that was created with the navigation, and these are the group IDs that I'm going to be using. The first empty line is important because that ensures my opening slide is the entire drawing; if I remove that, then my opening slide will be the first object. When I come back, I want to start my presentation. I have another shortcut for that and the script, which will bring my drawing full screen. Then I have two more shortcuts and scripts, one for forward navigation and the other for backward navigation. You can see I can move through the slides and nicely explain my presentation. In the end, I can revert to the full-screen view of the drawing. This is what we want to achieve with our scripts. Now let's dive into how you can make this work. [* ](https://youtu.be/fWuFeMMZid4?t=74)
All right, let's now look at the scripts. Altogether, I have five different scripts that support two separate workflows. Workflow one is when you want to set up your slides and capture the group IDs of selected objects to store them in the navigation file. Workflow two occurs when you do your presentation. Presenting also has two workflows: one for starting the presentation, which initializes full-screen mode, and the second for moving the slides forward or backward. I have separated some of the logic into distinct macros based on reusability; in particular, `getNavigationFilePath` is a macro or script I use in pretty much all of the macros you will see. We will get into that in a second. So looking at the code, I'll give you a very quick explanation of the logic, and then you can download the code and play with it to understand how it works and, of course, modify it to your own needs. [* ](https://youtu.be/fWuFeMMZid4?t=202)
To capture the group ID, I start by storing the Excalidraw automate object in a variable. This is really just to avoid having to write out `ExcalidrawAutomate` on every single line where I have it. Then, I set the view to the active view. Notice that I don't have `eaReset` here because in this case, I'm not drawing anything; I'm just capturing the selected item. You can put `eaReset` here, but it's generally a good practice to do a reset because you don't know how you've used the Excalidraw automate object earlier, and you might have some settings or components you don't want in your next macro. In this case, we don't need `eaReset`. I set the view to the active view, which is the view I have open. I get the selected elements, and as you saw in my demo, I have groups of groups in terms of objects. A group may contain additional groups. The way I identify the largest group that’s selected is by counting which group has the highest number of items in it. This code here counts the number of items in the group, and I simply take the one that has the highest number and add this to a variable called `groupId`, which I'll be using in my macro shortly when I use QuickAdd to capture this data into the navigation file. [* ](https://youtu.be/fWuFeMMZid4?t=290)
Next, if we look at the navigation file path code, this calculates the file path containing the navigation data for my presentation. I take the file path of the currently open document, slice off the file extension by looking for the last dot in my file name, and I change that name by adding `-navigation`. This is how this file name was created. I also add a variable that indicates the direction is forward; this is needed not in the capture process but in the presentation process, so I use the same script to distinguish between forward navigation and backward navigation. The previous slide script is very simple; it sets the same variable to back, allowing my script to know which way to progress the slides. [* ](https://youtu.be/fWuFeMMZid4?t=415)
Now, regarding the presentation, I have this `startPresentation` script, which is very simple. I always start by getting the Excalidraw automate object and selecting the active view. In this case, I check if there is a full-screen element; if there isn't, then I call the toggle full-screen function in Excalidraw Automate and provide this input variable as true. This means that it should force the view mode as it goes to full-screen mode. Finally, I set the previous slide counter to -1. Notice that I'm placing this variable in local storage and not in QuickAdd variables; this is because these parameters in QuickAdd are specific to the instance when the macro is running. So if I click my hotkey and the macro runs, then this variable will be retained until I close Obsidian, offering persistence between various keystrokes when I want to progress my slides. After starting the presentation, I can call `displaySlide` and this function will take the navigation file path from the variable that was set, and it will get the actual file handle using the Obsidian API, reading that file into a new variable called `wholeSlides`. It reads the file and splits it by looking for the new-line character, turning the flat file into an array of group IDs. This means it will convert the areas of the group ID into an actual array of ground IDs. So, essentially, the logic follows that the slide number is converted to an integer and then progresses based on whether the direction is forward or backward. [* ](https://youtu.be/fWuFeMMZid4?t=501)
Now, let's continue by looking at how QuickAdd is set up. If I go to settings and scroll down to QuickAdd, you can see that I've set up four choices, each with its own macros. We'll examine these macros one by one. The first one is the `captureGroupIdToNavigationFileMacro`. If I click to configure it, you can see that this macro has three steps. First, I run my script to capture the group ID, then I run my script to get the navigation file path, and finally, I run the capture choice to save the group ID to a navigation file. The way to create this capture choice is by clicking the capture button and selecting the script. For example, if I wanted to add the script `captureGroupId`, I would choose it and click add, which adds it to the end of the list. Then, you can arrange the order as needed. Next, I can delete it here because we don't need it again. Looking at the capture choice settings, I'm setting the file name to be based on a variable, which I set up in the navigation file path script. Using double curly brackets allows the variable to be integrated into QuickAdd. Also, I turned on switches to create the file if it doesn't exist and write to the bottom of the file in sequential order. Lastly, I enable the capture format to specify the variables I want to capture into the file. [* ](https://youtu.be/fWuFeMMZid4?t=844)
The second macro, `startPresentation`, is similar; it consists of three steps. First, it runs the `startPresentation`, taking me to full-screen mode and initiating it with a slide counter of -1. Then it gets the navigation file path and displays the slide based on that path. The next macro, `nextSlide`, is similar as well; the only difference is that it does not need to toggle full-screen again because it’s already in that mode. Finally, the `previousSlide` script retrieves the navigation file and calls the `previousSlide` function, setting the direction variable to back for the display slide logic, which ensures the correct movement of the slide number. [* ](https://youtu.be/fWuFeMMZid4?t=1034)
Once I've set the macros, I can create choices by specifying their names, selecting them as macro choices, and adding them. If I click to configure, I can select which macro each choice runs. Using keyboard shortcuts, like typing “crazy,” I can easily access these choices. One potential issue is editing JavaScript files in Obsidian because QuickAdd requires JS files to be configured in a specific scripts folder. There are two options for editing the scripts. The first option is to create a scripts folder, and by right-clicking, you can show that folder in the system explorer and edit it with a text editor of your choice, such as Notepad or Notepad++. The second option involves installing a simple plugin called Code View, which allows JavaScript development directly in Obsidian. Currently, Code View is not published as a community plugin, so you must follow a link I provide in the video description to access the GitHub page for Code View. [* ](https://youtu.be/fWuFeMMZid4?t=1262)
You will need to download three files: main.js, manifest.json, and styles.css. Once downloaded, you can place them in the plugins folder located in the `.obsidian` directory. Enable the plugin, and then you can directly edit your JS files within Obsidian, which simplifies the process significantly. I will upload a zip file containing the five necessary scripts that you can download. After extracting the zip file, drop the scripts into the newly created scripts folder. Note that if you don't have Code View installed and use default Obsidian settings, you may not see these files. In that case, go to settings, click on files and links, and enable the option to detect all file extensions. This will make it visible in the file explorer. Additionally, I'm going to share a data.json file if you have no other macros in QuickAdd. This way, replacing your data.json with the provided file will expedite the process. However, I suggest taking the time to set it up yourself; QuickAdd is a powerful tool worth learning. [* ](https://youtu.be/fWuFeMMZid4?t=1645)
Finally, I want to show you a simpler way to present using Excalidraw and Obsidian without needing any scripts. You go to your drawing, switch to view mode, which removes all buttons and makes your drawing read-only, and then go full screen. In full-screen mode, you can use the control button and your mouse wheel to zoom in and out of the areas you want to present. While this method does have some drawbacks regarding precision, with practice, you can position your pointer for smooth zooming. If you prefer a more structured process, my script options may serve you better. With that, I hope you found this video helpful, and I encourage you to explore both QuickAdd and Excalidraw Automate for powerful additions to your personal knowledge management workflow. Thank you! [* ](https://youtu.be/fWuFeMMZid4?t=1747)
# YouTube Details
## YouTube Description
If you find the plugin and/or my videos helpful, please say thanks by buying me a coffee: https://ko-fi.com/zsolt
If you'd like to request a feature or report a bug, please raise it on GitHub: https://github.com/zsviczian/obsidian-excalidraw-plugin
If you want to connect, you can reach me (@zsviczian) in the Obsidian Members Group (OMG) on Discord or on Twitter.
Link to the scripts and the QuickAdd config file:
https://github.com/zsviczian/obsidian-excalidraw-plugin/discussions/140
Timestamps:
[00:00](https://youtu.be/fWuFeMMZid4?t=0) Intro
[01:14](https://youtu.be/fWuFeMMZid4?t=74) Solution Demo
[03:21](https://youtu.be/fWuFeMMZid4?t=201) Scripts walkthrough
[14:03](https://youtu.be/fWuFeMMZid4?t=843) QuickAdd configuration
[20:59](https://youtu.be/fWuFeMMZid4?t=1259) Edit JS in Obsidian (CodeView)
[24:55](https://youtu.be/fWuFeMMZid4?t=1495) Download scripts & install
[27:24](https://youtu.be/fWuFeMMZid4?t=1644) An alternative solution
Links
---------
My blog: https://zsolt.blog
Obsidian: https://obsidian.md
Excalidraw Automate: https://zsviczian.github.io/obsidian-excalidraw-plugin/
QuickAdd plugin: https://github.com/chhoumann/quickadd
CodeView plugin: https://github.com/zsviczian/obsidian-codeeditor/releases
## YouTube Transcript
[hey and welcome back in today's video](https://youtu.be/fWuFeMMZid4?t=0) [i'm going to give you a step-by-step](https://youtu.be/fWuFeMMZid4?t=2) [walkthrough of how you can present your](https://youtu.be/fWuFeMMZid4?t=4) [sketch note](https://youtu.be/fWuFeMMZid4?t=7) [in a crazy like manner using xcoli draw](https://youtu.be/fWuFeMMZid4?t=8) [and obsidian i'm going to cover a couple](https://youtu.be/fWuFeMMZid4?t=11) [of topics so first of all i'm going to](https://youtu.be/fWuFeMMZid4?t=14) [give you a demonstration of the solution](https://youtu.be/fWuFeMMZid4?t=15) [how you set up your slide and how you](https://youtu.be/fWuFeMMZid4?t=18) [present this slide then we're going to](https://youtu.be/fWuFeMMZid4?t=20) [look at some of the javascripts that you](https://youtu.be/fWuFeMMZid4?t=23) [need](https://youtu.be/fWuFeMMZid4?t=25) [then together we're going to configure](https://youtu.be/fWuFeMMZid4?t=26) [quick add to automate the whole process](https://youtu.be/fWuFeMMZid4?t=28) [and then we move on to some of the](https://youtu.be/fWuFeMMZid4?t=31) [practical sides of the story and that is](https://youtu.be/fWuFeMMZid4?t=33) [how you can edit script in obsidian how](https://youtu.be/fWuFeMMZid4?t=37) [you can edit javascript in obsidian and](https://youtu.be/fWuFeMMZid4?t=40) [we'll look at the code view plugin as](https://youtu.be/fWuFeMMZid4?t=43) [well as i'll show you how you can](https://youtu.be/fWuFeMMZid4?t=45) [download and install](https://youtu.be/fWuFeMMZid4?t=47) [these scripts if you don't want to copy](https://youtu.be/fWuFeMMZid4?t=49) [paste code i'm going to provide you with](https://youtu.be/fWuFeMMZid4?t=51) [the javascript file so you can easily](https://youtu.be/fWuFeMMZid4?t=54) [implement this automation in your own](https://youtu.be/fWuFeMMZid4?t=56) [environment and then finally i'm going](https://youtu.be/fWuFeMMZid4?t=59) [to show you an alternative which doesn't](https://youtu.be/fWuFeMMZid4?t=62) [require any scripts and i think is also](https://youtu.be/fWuFeMMZid4?t=64) [quite powerful so with that let's get](https://youtu.be/fWuFeMMZid4?t=67) [started with the solution demo](https://youtu.be/fWuFeMMZid4?t=70) [so i want to present this drawing and i](https://youtu.be/fWuFeMMZid4?t=74) [want to set up my slides what i've done](https://youtu.be/fWuFeMMZid4?t=78) [up front is i've created groups](https://youtu.be/fWuFeMMZid4?t=81) [in this drawing so this is for example a](https://youtu.be/fWuFeMMZid4?t=84) [group of objects and actually this group](https://youtu.be/fWuFeMMZid4?t=87) [contains uh groups within it so if i](https://youtu.be/fWuFeMMZid4?t=89) [double click you can see that those](https://youtu.be/fWuFeMMZid4?t=92) [objects in the top are a group as well](https://youtu.be/fWuFeMMZid4?t=94) [but anyhow i have a set of groups here](https://youtu.be/fWuFeMMZid4?t=97) [which are the areas of the drawing that](https://youtu.be/fWuFeMMZid4?t=100) [i want to present](https://youtu.be/fWuFeMMZid4?t=103) [and the way i](https://youtu.be/fWuFeMMZid4?t=105) [i am going to set up my slides is i have](https://youtu.be/fWuFeMMZid4?t=106) [a macro that will capture the group ids](https://youtu.be/fWuFeMMZid4?t=109) [into a navigation file so i click on the](https://youtu.be/fWuFeMMZid4?t=112) [first item i click my shortcut i click](https://youtu.be/fWuFeMMZid4?t=115) [on the second you can see in the top](https://youtu.be/fWuFeMMZid4?t=118) [right in the meantime](https://youtu.be/fWuFeMMZid4?t=120) [i have that](https://youtu.be/fWuFeMMZid4?t=122) [message pop up](https://youtu.be/fWuFeMMZid4?t=124) [that](https://youtu.be/fWuFeMMZid4?t=126) [the id has been added to my navigation](https://youtu.be/fWuFeMMZid4?t=127) [file and that's it i've set up my](https://youtu.be/fWuFeMMZid4?t=131) [navigation for this drawing i can also](https://youtu.be/fWuFeMMZid4?t=133) [look at this file was created](https://youtu.be/fWuFeMMZid4?t=136) [with the navigation and so these are the](https://youtu.be/fWuFeMMZid4?t=140) [group ids](https://youtu.be/fWuFeMMZid4?t=143) [that i'm going to be using the first](https://youtu.be/fWuFeMMZid4?t=144) [empty line is important because that is](https://youtu.be/fWuFeMMZid4?t=147) [going to ensure that my opening slide is](https://youtu.be/fWuFeMMZid4?t=149) [the entire drawing if i remove that then](https://youtu.be/fWuFeMMZid4?t=152) [my opening slide is going to be the](https://youtu.be/fWuFeMMZid4?t=155) [first object](https://youtu.be/fWuFeMMZid4?t=157) [and if i come back](https://youtu.be/fWuFeMMZid4?t=159) [i want to start my presentation i have](https://youtu.be/fWuFeMMZid4?t=161) [another shortcut for that and the script](https://youtu.be/fWuFeMMZid4?t=163) [and that is](https://youtu.be/fWuFeMMZid4?t=166) [going to bring my drawing full screen](https://youtu.be/fWuFeMMZid4?t=167) [and then i have two more shortcuts and](https://youtu.be/fWuFeMMZid4?t=171) [scripts one is the forward navigation](https://youtu.be/fWuFeMMZid4?t=173) [and the other is the backward navigation](https://youtu.be/fWuFeMMZid4?t=177) [and so you can see i can move through](https://youtu.be/fWuFeMMZid4?t=180) [the slides and i can](https://youtu.be/fWuFeMMZid4?t=182) [nicely explain my presentation and in](https://youtu.be/fWuFeMMZid4?t=185) [the end i can get back to the full](https://youtu.be/fWuFeMMZid4?t=189) [screen view of the drawing](https://youtu.be/fWuFeMMZid4?t=191) [so this is what we want to achieve with](https://youtu.be/fWuFeMMZid4?t=194) [our scripts now let's dive into](https://youtu.be/fWuFeMMZid4?t=197) [how you can make this work all right so](https://youtu.be/fWuFeMMZid4?t=199) [let's now look at the scripts](https://youtu.be/fWuFeMMZid4?t=202) [all together i have five different](https://youtu.be/fWuFeMMZid4?t=204) [scripts and this is supporting two](https://youtu.be/fWuFeMMZid4?t=206) [separate workflows so workflow one is](https://youtu.be/fWuFeMMZid4?t=210) [when you want to set up your slides when](https://youtu.be/fWuFeMMZid4?t=213) [you want to capture the group ids of](https://youtu.be/fWuFeMMZid4?t=216) [selected objects and store them in the](https://youtu.be/fWuFeMMZid4?t=218) [navigation file and then workflow two is](https://youtu.be/fWuFeMMZid4?t=221) [when you do your presentation](https://youtu.be/fWuFeMMZid4?t=224) [now](https://youtu.be/fWuFeMMZid4?t=227) [presenting](https://youtu.be/fWuFeMMZid4?t=228) [has also two workflows so one is when](https://youtu.be/fWuFeMMZid4?t=229) [you start the presentation so that's](https://youtu.be/fWuFeMMZid4?t=232) [when your screen will switch to full](https://youtu.be/fWuFeMMZid4?t=234) [screen mode and it will initialize the](https://youtu.be/fWuFeMMZid4?t=237) [presentation mode and then the second](https://youtu.be/fWuFeMMZid4?t=240) [workflow is when you move the slides](https://youtu.be/fWuFeMMZid4?t=243) [forward or backward](https://youtu.be/fWuFeMMZid4?t=245) [and](https://youtu.be/fWuFeMMZid4?t=248) [i also have separated some of the logic](https://youtu.be/fWuFeMMZid4?t=249) [into separate macros](https://youtu.be/fWuFeMMZid4?t=252) [based on reusability in particular](https://youtu.be/fWuFeMMZid4?t=256) [get navigation file path](https://youtu.be/fWuFeMMZid4?t=259) [is a macro](https://youtu.be/fWuFeMMZid4?t=262) [or as a script i use in pretty much all](https://youtu.be/fWuFeMMZid4?t=263) [of the macros that you will see and we](https://youtu.be/fWuFeMMZid4?t=266) [will get into that in a second](https://youtu.be/fWuFeMMZid4?t=269) [so looking at the code](https://youtu.be/fWuFeMMZid4?t=272) [um i'm just going to give you a very](https://youtu.be/fWuFeMMZid4?t=274) [quick](https://youtu.be/fWuFeMMZid4?t=277) [explanation of the logic and then you](https://youtu.be/fWuFeMMZid4?t=278) [can download the code and play with it](https://youtu.be/fWuFeMMZid4?t=280) [to](https://youtu.be/fWuFeMMZid4?t=283) [understand how it works and of course to](https://youtu.be/fWuFeMMZid4?t=284) [modify it to your own needs](https://youtu.be/fWuFeMMZid4?t=287) [so capture group id i start with](https://youtu.be/fWuFeMMZid4?t=290) [storing the x collateral automate object](https://youtu.be/fWuFeMMZid4?t=294) [in this variable](https://youtu.be/fWuFeMMZid4?t=297) [this is really just to uh](https://youtu.be/fWuFeMMZid4?t=299) [avoid having to write out right x](https://youtu.be/fWuFeMMZid4?t=301) [college or automate on every single line](https://youtu.be/fWuFeMMZid4?t=304) [where i have e](https://youtu.be/fWuFeMMZid4?t=307) [and then](https://youtu.be/fWuFeMMZid4?t=309) [i](https://youtu.be/fWuFeMMZid4?t=310) [set the view](https://youtu.be/fWuFeMMZid4?t=312) [to the active view](https://youtu.be/fWuFeMMZid4?t=313) [and notice that i don't have ea reset](https://youtu.be/fWuFeMMZid4?t=315) [here so](https://youtu.be/fWuFeMMZid4?t=319) [ea](https://youtu.be/fWuFeMMZid4?t=320) [reset](https://youtu.be/fWuFeMMZid4?t=321) [i don't need this because in this](https://youtu.be/fWuFeMMZid4?t=323) [case i'm not drawing anything i'm just](https://youtu.be/fWuFeMMZid4?t=325) [capturing the selected item you can put](https://youtu.be/fWuFeMMZid4?t=328) [ea reset here](https://youtu.be/fWuFeMMZid4?t=331) [but](https://youtu.be/fWuFeMMZid4?t=332) [it's generally a good practice to do a](https://youtu.be/fWuFeMMZid4?t=333) [reset because you don't know how you've](https://youtu.be/fWuFeMMZid4?t=336) [used the x collider automate object](https://youtu.be/fWuFeMMZid4?t=338) [earlier and you might have some settings](https://youtu.be/fWuFeMMZid4?t=340) [style settings or components there that](https://youtu.be/fWuFeMMZid4?t=343) [you don't want in your next macro but in](https://youtu.be/fWuFeMMZid4?t=346) [this case we don't need ea reset i set](https://youtu.be/fWuFeMMZid4?t=350) [the view to the active view so that's](https://youtu.be/fWuFeMMZid4?t=353) [the view i have open i](https://youtu.be/fWuFeMMZid4?t=356) [get the selected elements](https://youtu.be/fWuFeMMZid4?t=359) [and as you saw in my demo](https://youtu.be/fWuFeMMZid4?t=361) [i have groups of groups](https://youtu.be/fWuFeMMZid4?t=365) [in terms of the objects](https://youtu.be/fWuFeMMZid4?t=368) [so a group may contain additional groups](https://youtu.be/fWuFeMMZid4?t=370) [the way i identify the largest group](https://youtu.be/fWuFeMMZid4?t=374) [that's selected is by counting which](https://youtu.be/fWuFeMMZid4?t=377) [group has the highest number of](https://youtu.be/fWuFeMMZid4?t=380) [items in it so this](https://youtu.be/fWuFeMMZid4?t=383) [code here counts the number of items in](https://youtu.be/fWuFeMMZid4?t=386) [the group](https://youtu.be/fWuFeMMZid4?t=388) [and then](https://youtu.be/fWuFeMMZid4?t=389) [i](https://youtu.be/fWuFeMMZid4?t=390) [simply take the one that has the highest](https://youtu.be/fWuFeMMZid4?t=391) [number and i add this](https://youtu.be/fWuFeMMZid4?t=394) [to a variable called group id which i'll](https://youtu.be/fWuFeMMZid4?t=397) [be using](https://youtu.be/fWuFeMMZid4?t=400) [in my macro in a second when i'm using](https://youtu.be/fWuFeMMZid4?t=402) [quick add capture to capture this data](https://youtu.be/fWuFeMMZid4?t=405) [into the navigation file but moving on](https://youtu.be/fWuFeMMZid4?t=408) [if we look at the navigation file path](https://youtu.be/fWuFeMMZid4?t=412) [code because this is the next one in the](https://youtu.be/fWuFeMMZid4?t=415) [logic](https://youtu.be/fWuFeMMZid4?t=418) [what this does is this calculates the](https://youtu.be/fWuFeMMZid4?t=419) [file path](https://youtu.be/fWuFeMMZid4?t=421) [containing the](https://youtu.be/fWuFeMMZid4?t=423) [navigation data for my presentation](https://youtu.be/fWuFeMMZid4?t=425) [i simply take the file path of the](https://youtu.be/fWuFeMMZid4?t=429) [currently open document i](https://youtu.be/fWuFeMMZid4?t=432) [slice off the file extension by looking](https://youtu.be/fWuFeMMZid4?t=435) [for the last dot](https://youtu.be/fWuFeMMZid4?t=438) [in](https://youtu.be/fWuFeMMZid4?t=441) [my file name](https://youtu.be/fWuFeMMZid4?t=441) [and i change that name and i add dash](https://youtu.be/fWuFeMMZid4?t=443) [navigation so this is how](https://youtu.be/fWuFeMMZid4?t=448) [this file name was created](https://youtu.be/fWuFeMMZid4?t=450) [and also](https://youtu.be/fWuFeMMZid4?t=453) [i add this variable](https://youtu.be/fWuFeMMZid4?t=455) [that direction is forward](https://youtu.be/fWuFeMMZid4?t=458) [this is](https://youtu.be/fWuFeMMZid4?t=462) [needed not in the capture process but](https://youtu.be/fWuFeMMZid4?t=463) [this is here because also the same](https://youtu.be/fWuFeMMZid4?t=466) [script runs in the presentation process](https://youtu.be/fWuFeMMZid4?t=469) [and this is how i distinguish between](https://youtu.be/fWuFeMMZid4?t=472) [forward and then we can look at the](https://youtu.be/fWuFeMMZid4?t=474) [previous slide script is very simple it](https://youtu.be/fWuFeMMZid4?t=477) [sets the same](https://youtu.be/fWuFeMMZid4?t=480) [variable to back](https://youtu.be/fWuFeMMZid4?t=483) [and so this is how my script is going to](https://youtu.be/fWuFeMMZid4?t=485) [know which way to](https://youtu.be/fWuFeMMZid4?t=489) [progress the slides](https://youtu.be/fWuFeMMZid4?t=491) [so these were](https://youtu.be/fWuFeMMZid4?t=493) [this was the capture group id and now](https://youtu.be/fWuFeMMZid4?t=495) [we've already moved on to the](https://youtu.be/fWuFeMMZid4?t=497) [presentation the presentation i have](https://youtu.be/fWuFeMMZid4?t=498) [this script start presentation](https://youtu.be/fWuFeMMZid4?t=502) [which is very simple i always start with](https://youtu.be/fWuFeMMZid4?t=505) [getting the exclamatory automate object](https://youtu.be/fWuFeMMZid4?t=509) [and selecting the active view](https://youtu.be/fWuFeMMZid4?t=512) [and in this case i check if there is a](https://youtu.be/fWuFeMMZid4?t=515) [full screen element](https://youtu.be/fWuFeMMZid4?t=517) [and if there isn't then i call](https://youtu.be/fWuFeMMZid4?t=519) [this toggle](https://youtu.be/fWuFeMMZid4?t=522) [full screen](https://youtu.be/fWuFeMMZid4?t=524) [function in xcaladra automate and i](https://youtu.be/fWuFeMMZid4?t=526) [provide this input variable true and](https://youtu.be/fWuFeMMZid4?t=529) [true means that it should force going to](https://youtu.be/fWuFeMMZid4?t=532) [view mode](https://youtu.be/fWuFeMMZid4?t=536) [as it turns to full screen mode](https://youtu.be/fWuFeMMZid4?t=537) [and](https://youtu.be/fWuFeMMZid4?t=542) [finally](https://youtu.be/fWuFeMMZid4?t=543) [i](https://youtu.be/fWuFeMMZid4?t=544) [go ahead and set the previous slide](https://youtu.be/fWuFeMMZid4?t=545) [counter to -1 notice that in this case](https://youtu.be/fWuFeMMZid4?t=549) [i'm placing the variable to local](https://youtu.be/fWuFeMMZid4?t=552) [storage](https://youtu.be/fWuFeMMZid4?t=555) [and not](https://youtu.be/fWuFeMMZid4?t=557) [to](https://youtu.be/fWuFeMMZid4?t=558) [the quick add](https://youtu.be/fWuFeMMZid4?t=561) [variables and that is because these](https://youtu.be/fWuFeMMZid4?t=563) [parameters in quick add](https://youtu.be/fWuFeMMZid4?t=567) [are](https://youtu.be/fWuFeMMZid4?t=569) [specific to the instance when the the](https://youtu.be/fWuFeMMZid4?t=570) [macro is running so if i click my hotkey](https://youtu.be/fWuFeMMZid4?t=574) [and](https://youtu.be/fWuFeMMZid4?t=578) [the macro runs then between the macro](https://youtu.be/fWuFeMMZid4?t=579) [steps](https://youtu.be/fWuFeMMZid4?t=582) [this variable is there](https://youtu.be/fWuFeMMZid4?t=583) [the window local storage](https://youtu.be/fWuFeMMZid4?t=585) [is going to](https://youtu.be/fWuFeMMZid4?t=588) [retain this value until i close obsidian](https://youtu.be/fWuFeMMZid4?t=589) [so this is going to be persistent](https://youtu.be/fWuFeMMZid4?t=593) [between the various keystrokes meaning](https://youtu.be/fWuFeMMZid4?t=596) [the the various times when i want to](https://youtu.be/fWuFeMMZid4?t=600) [progress](https://youtu.be/fWuFeMMZid4?t=604) [my slides](https://youtu.be/fWuFeMMZid4?t=605) [and](https://youtu.be/fWuFeMMZid4?t=607) [after](https://youtu.be/fWuFeMMZid4?t=608) [starting the presentation i can call](https://youtu.be/fWuFeMMZid4?t=610) [display slide and display slide is going](https://youtu.be/fWuFeMMZid4?t=612) [to take the navigation file path](https://youtu.be/fWuFeMMZid4?t=617) [from this variable that was set in this](https://youtu.be/fWuFeMMZid4?t=620) [file](https://youtu.be/fWuFeMMZid4?t=624) [and it is going to](https://youtu.be/fWuFeMMZid4?t=625) [get the actual file handle](https://youtu.be/fWuFeMMZid4?t=627) [using the obsidian api and it is going](https://youtu.be/fWuFeMMZid4?t=630) [to read that file into this](https://youtu.be/fWuFeMMZid4?t=634) [variable whole slides and the way it](https://youtu.be/fWuFeMMZid4?t=637) [reads it is it reads](https://youtu.be/fWuFeMMZid4?t=640) [the file](https://youtu.be/fWuFeMMZid4?t=642) [and then it splits it uh looking for the](https://youtu.be/fWuFeMMZid4?t=644) [new line character and what this does is](https://youtu.be/fWuFeMMZid4?t=648) [it converts this flat file that was read](https://youtu.be/fWuFeMMZid4?t=651) [it contained it converts it into an](https://youtu.be/fWuFeMMZid4?t=655) [array of group ids so that means it's](https://youtu.be/fWuFeMMZid4?t=657) [going to be this](https://youtu.be/fWuFeMMZid4?t=660) [area of](https://youtu.be/fWuFeMMZid4?t=662) [group id](https://youtu.be/fWuFeMMZid4?t=664) [1 and then you will have group id 2 etc](https://youtu.be/fWuFeMMZid4?t=666) [right so](https://youtu.be/fWuFeMMZid4?t=671) [it's going to create this sort of](https://youtu.be/fWuFeMMZid4?t=672) [array](https://youtu.be/fWuFeMMZid4?t=675) [and](https://youtu.be/fWuFeMMZid4?t=677) [then i take](https://youtu.be/fWuFeMMZid4?t=678) [my](https://youtu.be/fWuFeMMZid4?t=679) [slide number](https://youtu.be/fWuFeMMZid4?t=680) [from](https://youtu.be/fWuFeMMZid4?t=682) [the](https://youtu.be/fWuFeMMZid4?t=683) [local storage and i convert and](https://youtu.be/fWuFeMMZid4?t=684) [everything in local storage is a string](https://youtu.be/fWuFeMMZid4?t=686) [so i'll need to convert it into an](https://youtu.be/fWuFeMMZid4?t=689) [integer](https://youtu.be/fWuFeMMZid4?t=692) [and i check my](https://youtu.be/fWuFeMMZid4?t=693) [variable](https://youtu.be/fWuFeMMZid4?t=696) [on the direction](https://youtu.be/fWuFeMMZid4?t=697) [and if it's forward then i'm going to](https://youtu.be/fWuFeMMZid4?t=699) [progress the slide number](https://youtu.be/fWuFeMMZid4?t=702) [up](https://youtu.be/fWuFeMMZid4?t=704) [with one](https://youtu.be/fWuFeMMZid4?t=705) [or if i'm at the end of the slide](https://youtu.be/fWuFeMMZid4?t=707) [presentation then i set it to zero this](https://youtu.be/fWuFeMMZid4?t=711) [minus one is required because the](https://youtu.be/fWuFeMMZid4?t=714) [numbering of the area element starts](https://youtu.be/fWuFeMMZid4?t=717) [with zero](https://youtu.be/fWuFeMMZid4?t=720) [and goes to](https://youtu.be/fWuFeMMZid4?t=721) [length minus one](https://youtu.be/fWuFeMMZid4?t=723) [and therefore you need to cater for that](https://youtu.be/fWuFeMMZid4?t=726) [if i'm going backwards then the logic is](https://youtu.be/fWuFeMMZid4?t=728) [similar if i'm already at the](https://youtu.be/fWuFeMMZid4?t=731) [first slide then i need to jump back](https://youtu.be/fWuFeMMZid4?t=734) [to the](https://youtu.be/fWuFeMMZid4?t=738) [very end of the](https://youtu.be/fWuFeMMZid4?t=739) [of the deck and](https://youtu.be/fWuFeMMZid4?t=742) [i store this new slide number in my](https://youtu.be/fWuFeMMZid4?t=745) [local storage](https://youtu.be/fWuFeMMZid4?t=748) [and i](https://youtu.be/fWuFeMMZid4?t=749) [get the group id](https://youtu.be/fWuFeMMZid4?t=751) [of that specific slide by taking this](https://youtu.be/fWuFeMMZid4?t=754) [num this value from the](https://youtu.be/fWuFeMMZid4?t=756) [array and i call](https://youtu.be/fWuFeMMZid4?t=759) [my xcoli draw](https://youtu.be/fWuFeMMZid4?t=761) [api to get all the elements in the scene](https://youtu.be/fWuFeMMZid4?t=764) [i use this filter](https://youtu.be/fWuFeMMZid4?t=768) [filtering on](https://youtu.be/fWuFeMMZid4?t=770) [the group ids of each item so i'm](https://youtu.be/fWuFeMMZid4?t=772) [looking at each element and checking if](https://youtu.be/fWuFeMMZid4?t=776) [the group id](https://youtu.be/fWuFeMMZid4?t=778) [includes the slide number this is an](https://youtu.be/fWuFeMMZid4?t=781) [includes because index call it draw](https://youtu.be/fWuFeMMZid4?t=783) [group ids](https://youtu.be/fWuFeMMZid4?t=785) [are](https://youtu.be/fWuFeMMZid4?t=787) [an array](https://youtu.be/fWuFeMMZid4?t=788) [and](https://youtu.be/fWuFeMMZid4?t=790) [finally i call xcoli draw api and i call](https://youtu.be/fWuFeMMZid4?t=792) [zoom to fit i supply the filtered](https://youtu.be/fWuFeMMZid4?t=796) [element so i'm telling excoli draw that](https://youtu.be/fWuFeMMZid4?t=799) [it should focus](https://youtu.be/fWuFeMMZid4?t=801) [on the elements](https://youtu.be/fWuFeMMZid4?t=803) [that are members of that group and 10](https://youtu.be/fWuFeMMZid4?t=805) [means](https://youtu.be/fWuFeMMZid4?t=808) [the maximum zoom level can be 1000 so](https://youtu.be/fWuFeMMZid4?t=809) [even](https://youtu.be/fWuFeMMZid4?t=813) [if i have as you could see here](https://youtu.be/fWuFeMMZid4?t=814) [even if i uh zoom in on](https://youtu.be/fWuFeMMZid4?t=817) [getting started which is a pretty](https://youtu.be/fWuFeMMZid4?t=821) [large zoom 230 percent it will zoom in](https://youtu.be/fWuFeMMZid4?t=825) [or it can even zoom in](https://youtu.be/fWuFeMMZid4?t=829) [to this nice rocket](https://youtu.be/fWuFeMMZid4?t=831) [if i want to](https://youtu.be/fWuFeMMZid4?t=833) [and that's pretty much all about the](https://youtu.be/fWuFeMMZid4?t=836) [script and now let's continue uh looking](https://youtu.be/fWuFeMMZid4?t=838) [at the quick add configuration so now](https://youtu.be/fWuFeMMZid4?t=841) [let's look at how quick add is set up](https://youtu.be/fWuFeMMZid4?t=844) [so if i come](https://youtu.be/fWuFeMMZid4?t=847) [to settings and i scroll down to quick](https://youtu.be/fWuFeMMZid4?t=848) [add you can see that i've set up four](https://youtu.be/fWuFeMMZid4?t=851) [choices and under those four choices i](https://youtu.be/fWuFeMMZid4?t=854) [have four macros and we're going to look](https://youtu.be/fWuFeMMZid4?t=858) [at those macros one by one so the first](https://youtu.be/fWuFeMMZid4?t=860) [one is](https://youtu.be/fWuFeMMZid4?t=864) [the capture group id](https://youtu.be/fWuFeMMZid4?t=865) [to navigation file macro and if i click](https://youtu.be/fWuFeMMZid4?t=867) [on](https://youtu.be/fWuFeMMZid4?t=870) [contribute configure](https://youtu.be/fWuFeMMZid4?t=871) [then you can see that this](https://youtu.be/fWuFeMMZid4?t=873) [macro has three steps first of all](https://youtu.be/fWuFeMMZid4?t=876) [i run my script capture group id then i](https://youtu.be/fWuFeMMZid4?t=879) [run my script](https://youtu.be/fWuFeMMZid4?t=883) [get navigation file path and finally i](https://youtu.be/fWuFeMMZid4?t=884) [run the capture choice capture group id](https://youtu.be/fWuFeMMZid4?t=888) [to navigation file the way you create a](https://youtu.be/fWuFeMMZid4?t=891) [capture choice](https://youtu.be/fWuFeMMZid4?t=894) [is by clicking](https://youtu.be/fWuFeMMZid4?t=896) [on this capture button the value and](https://youtu.be/fWuFeMMZid4?t=897) [script](https://youtu.be/fWuFeMMZid4?t=900) [is by selecting](https://youtu.be/fWuFeMMZid4?t=901) [a script here so for example](https://youtu.be/fWuFeMMZid4?t=903) [crazy capture group id if i wanted to](https://youtu.be/fWuFeMMZid4?t=906) [add this script i choose it here and i](https://youtu.be/fWuFeMMZid4?t=909) [click add and you can see that this was](https://youtu.be/fWuFeMMZid4?t=912) [added to the end of the list](https://youtu.be/fWuFeMMZid4?t=915) [and of course i can move it](https://youtu.be/fWuFeMMZid4?t=918) [up and down wherever i need to place it](https://youtu.be/fWuFeMMZid4?t=920) [i'm now going to](https://youtu.be/fWuFeMMZid4?t=923) [delete this because we don't need it we](https://youtu.be/fWuFeMMZid4?t=924) [already have it up there](https://youtu.be/fWuFeMMZid4?t=927) [and to look at how the capture choice](https://youtu.be/fWuFeMMZid4?t=930) [works let's click on settings and here](https://youtu.be/fWuFeMMZid4?t=932) [you can see that first of all i'm](https://youtu.be/fWuFeMMZid4?t=936) [setting](https://youtu.be/fWuFeMMZid4?t=938) [the file name to be](https://youtu.be/fWuFeMMZid4?t=939) [a based on a variable and you remember](https://youtu.be/fWuFeMMZid4?t=943) [in the get navigation file path script i](https://youtu.be/fWuFeMMZid4?t=946) [was setting up this variable with the](https://youtu.be/fWuFeMMZid4?t=950) [file path of the navigation file and](https://youtu.be/fWuFeMMZid4?t=953) [using double curly brackets value](https://youtu.be/fWuFeMMZid4?t=956) [colon](https://youtu.be/fWuFeMMZid4?t=959) [variable name is the format to get this](https://youtu.be/fWuFeMMZid4?t=960) [variable into quick add](https://youtu.be/fWuFeMMZid4?t=964) [i also turned on this switch to](https://youtu.be/fWuFeMMZid4?t=966) [create the file if it doesn't exist](https://youtu.be/fWuFeMMZid4?t=970) [as well as i turned on this switch to](https://youtu.be/fWuFeMMZid4?t=973) [write to the bottom of the file because](https://youtu.be/fWuFeMMZid4?t=977) [i want the slides one after the other](https://youtu.be/fWuFeMMZid4?t=979) [in](https://youtu.be/fWuFeMMZid4?t=983) [sequence so therefore every new group id](https://youtu.be/fWuFeMMZid4?t=984) [needs to be added to the bottom of the](https://youtu.be/fWuFeMMZid4?t=988) [stack](https://youtu.be/fWuFeMMZid4?t=991) [and finally](https://youtu.be/fWuFeMMZid4?t=992) [i turned on the capture format and this](https://youtu.be/fWuFeMMZid4?t=994) [is where i can specify what i want to](https://youtu.be/fWuFeMMZid4?t=997) [capture and again i want to](https://youtu.be/fWuFeMMZid4?t=1000) [simply capture the value of this](https://youtu.be/fWuFeMMZid4?t=1003) [variable into the file so](https://youtu.be/fWuFeMMZid4?t=1006) [i add this](https://youtu.be/fWuFeMMZid4?t=1008) [line and what this is going to](https://youtu.be/fWuFeMMZid4?t=1010) [do is this is going to be converted into](https://youtu.be/fWuFeMMZid4?t=1012) [the group id that's within this variable](https://youtu.be/fWuFeMMZid4?t=1015) [and that is going to be added as a new](https://youtu.be/fWuFeMMZid4?t=1018) [line to my navigation file](https://youtu.be/fWuFeMMZid4?t=1021) [so this is our first macro the second](https://youtu.be/fWuFeMMZid4?t=1025) [macro start](https://youtu.be/fWuFeMMZid4?t=1028) [presentation actually the next three](https://youtu.be/fWuFeMMZid4?t=1031) [macros are going to look extremely](https://youtu.be/fWuFeMMZid4?t=1034) [similar they are going to be](https://youtu.be/fWuFeMMZid4?t=1036) [slightly different mix of the scripts](https://youtu.be/fWuFeMMZid4?t=1038) [that we looked at earlier if i look at](https://youtu.be/fWuFeMMZid4?t=1041) [start presentation](https://youtu.be/fWuFeMMZid4?t=1043) [you can see that this consists of three](https://youtu.be/fWuFeMMZid4?t=1046) [steps first of all i call start](https://youtu.be/fWuFeMMZid4?t=1048) [presentation this will take me full](https://youtu.be/fWuFeMMZid4?t=1050) [screen and it's going to initialize](https://youtu.be/fWuFeMMZid4?t=1053) [to slide -1](https://youtu.be/fWuFeMMZid4?t=1055) [and then i'm going to get the navigation](https://youtu.be/fWuFeMMZid4?t=1058) [file path and then i'm going to display](https://youtu.be/fWuFeMMZid4?t=1062) [slide because navigation file path](https://youtu.be/fWuFeMMZid4?t=1065) [already contains the direction forward](https://youtu.be/fWuFeMMZid4?t=1068) [and because](https://youtu.be/fWuFeMMZid4?t=1071) [display slide will first move](https://youtu.be/fWuFeMMZid4?t=1072) [the slide or progress the slide number](https://youtu.be/fWuFeMMZid4?t=1075) [before presenting therefore setting the](https://youtu.be/fWuFeMMZid4?t=1078) [the slide number to minus one in my](https://youtu.be/fWuFeMMZid4?t=1082) [start presentation this result in](https://youtu.be/fWuFeMMZid4?t=1085) [displaying slide zero the opening slide](https://youtu.be/fWuFeMMZid4?t=1088) [as i display the slide](https://youtu.be/fWuFeMMZid4?t=1092) [and then if i look at the next script](https://youtu.be/fWuFeMMZid4?t=1095) [the](https://youtu.be/fWuFeMMZid4?t=1098) [next slide is very similar i don't have](https://youtu.be/fWuFeMMZid4?t=1099) [the full screen because i am already](https://youtu.be/fWuFeMMZid4?t=1102) [full screen i get the file path and i](https://youtu.be/fWuFeMMZid4?t=1104) [display the](https://youtu.be/fWuFeMMZid4?t=1107) [the slide](https://youtu.be/fWuFeMMZid4?t=1108) [and](https://youtu.be/fWuFeMMZid4?t=1110) [finally the difference here with the](https://youtu.be/fWuFeMMZid4?t=1111) [previous slide script](https://youtu.be/fWuFeMMZid4?t=1114) [is again i get the navigation file path](https://youtu.be/fWuFeMMZid4?t=1116) [but then](https://youtu.be/fWuFeMMZid4?t=1119) [i called the previous slide script and](https://youtu.be/fWuFeMMZid4?t=1120) [if you remember this sets the direction](https://youtu.be/fWuFeMMZid4?t=1123) [variable to back](https://youtu.be/fWuFeMMZid4?t=1126) [and based on this my display slide will](https://youtu.be/fWuFeMMZid4?t=1127) [know to move the](https://youtu.be/fWuFeMMZid4?t=1131) [slide number backwards instead of](https://youtu.be/fWuFeMMZid4?t=1133) [forwards before displaying it it's](https://youtu.be/fWuFeMMZid4?t=1135) [important that if i would call these two](https://youtu.be/fWuFeMMZid4?t=1138) [in](https://youtu.be/fWuFeMMZid4?t=1141) [this order then it would not work](https://youtu.be/fWuFeMMZid4?t=1142) [because](https://youtu.be/fWuFeMMZid4?t=1144) [by default in my get navigation file](https://youtu.be/fWuFeMMZid4?t=1146) [path i set the direction forward so in](https://youtu.be/fWuFeMMZid4?t=1149) [my previous slide script i overwrite](https://youtu.be/fWuFeMMZid4?t=1153) [that that's the logic here](https://youtu.be/fWuFeMMZid4?t=1157) [and once i've set up my macros i can go](https://youtu.be/fWuFeMMZid4?t=1160) [and set up my choices the way i set up](https://youtu.be/fWuFeMMZid4?t=1164) [the choices i type in the name of the](https://youtu.be/fWuFeMMZid4?t=1166) [choice](https://youtu.be/fWuFeMMZid4?t=1168) [and i select that this should be a macro](https://youtu.be/fWuFeMMZid4?t=1169) [choice and i add my choice](https://youtu.be/fWuFeMMZid4?t=1173) [and here if i click on configure then i](https://youtu.be/fWuFeMMZid4?t=1176) [can select which macro that choice](https://youtu.be/fWuFeMMZid4?t=1180) [should execute](https://youtu.be/fWuFeMMZid4?t=1183) [and also if i click](https://youtu.be/fWuFeMMZid4?t=1185) [this](https://youtu.be/fWuFeMMZid4?t=1189) [button here then i can create a comment](https://youtu.be/fWuFeMMZid4?t=1190) [palette](https://youtu.be/fWuFeMMZid4?t=1193) [option](https://youtu.be/fWuFeMMZid4?t=1195) [for this](https://youtu.be/fWuFeMMZid4?t=1196) [choice and that will allow me](https://youtu.be/fWuFeMMZid4?t=1198) [to](https://youtu.be/fWuFeMMZid4?t=1200) [add a hotkey to this so i'm going to](https://youtu.be/fWuFeMMZid4?t=1202) [delete this](https://youtu.be/fWuFeMMZid4?t=1204) [and if you look at](https://youtu.be/fWuFeMMZid4?t=1206) [these four choices these are](https://youtu.be/fWuFeMMZid4?t=1208) [straightforward because start](https://youtu.be/fWuFeMMZid4?t=1211) [presentation runs the start presentation](https://youtu.be/fWuFeMMZid4?t=1213) [macro](https://youtu.be/fWuFeMMZid4?t=1216) [and the capture group id runs the](https://youtu.be/fWuFeMMZid4?t=1217) [capture group by the macro](https://youtu.be/fWuFeMMZid4?t=1220) [and so on](https://youtu.be/fWuFeMMZid4?t=1222) [i think you get the point that the](https://youtu.be/fWuFeMMZid4?t=1224) [macros here](https://youtu.be/fWuFeMMZid4?t=1226) [are always](https://youtu.be/fWuFeMMZid4?t=1228) [the same as the name of the choices so](https://youtu.be/fWuFeMMZid4?t=1230) [this is](https://youtu.be/fWuFeMMZid4?t=1233) [the setup](https://youtu.be/fWuFeMMZid4?t=1234) [that we need and now i have four](https://youtu.be/fWuFeMMZid4?t=1235) [choices that i can use](https://youtu.be/fWuFeMMZid4?t=1239) [to](https://youtu.be/fWuFeMMZid4?t=1241) [do my slideshows and finally](https://youtu.be/fWuFeMMZid4?t=1242) [if i go to hotkeys and type in](https://youtu.be/fWuFeMMZid4?t=1246) [crazy then you can see i have my four](https://youtu.be/fWuFeMMZid4?t=1250) [choices here and i've set up my hotkeys](https://youtu.be/fWuFeMMZid4?t=1252) [for those four choices](https://youtu.be/fWuFeMMZid4?t=1257) [so one issue that you will come across](https://youtu.be/fWuFeMMZid4?t=1259) [is editing](https://youtu.be/fWuFeMMZid4?t=1262) [js javascript files in obsidian because](https://youtu.be/fWuFeMMZid4?t=1264) [that is what is required for quick add](https://youtu.be/fWuFeMMZid4?t=1268) [and unfortunately obsidian by default](https://youtu.be/fWuFeMMZid4?t=1271) [does not support](https://youtu.be/fWuFeMMZid4?t=1274) [the javascript file type](https://youtu.be/fWuFeMMZid4?t=1276) [quick add requires you to create a](https://youtu.be/fWuFeMMZid4?t=1280) [folder for called scripts and to place](https://youtu.be/fWuFeMMZid4?t=1282) [your js files here so you have two](https://youtu.be/fWuFeMMZid4?t=1285) [options for doing this](https://youtu.be/fWuFeMMZid4?t=1288) [option one is if you create the scripts](https://youtu.be/fWuFeMMZid4?t=1290) [folder and then](https://youtu.be/fWuFeMMZid4?t=1293) [right click on this folder you can show](https://youtu.be/fWuFeMMZid4?t=1295) [this folder in system explorer and let](https://youtu.be/fWuFeMMZid4?t=1298) [me just bring up](https://youtu.be/fWuFeMMZid4?t=1300) [uh](https://youtu.be/fWuFeMMZid4?t=1302) [obsidian in this case it will bring up](https://youtu.be/fWuFeMMZid4?t=1304) [system explorer you will see the scripts](https://youtu.be/fWuFeMMZid4?t=1308) [folder highlighted and if you double](https://youtu.be/fWuFeMMZid4?t=1310) [click you can come in here and you can](https://youtu.be/fWuFeMMZid4?t=1313) [edit this with the](https://youtu.be/fWuFeMMZid4?t=1315) [it's simply notepad or whatever editor](https://youtu.be/fWuFeMMZid4?t=1317) [you like you can for example use notepad](https://youtu.be/fWuFeMMZid4?t=1320) [plus plus](https://youtu.be/fWuFeMMZid4?t=1324) [that is a great editor and then you're](https://youtu.be/fWuFeMMZid4?t=1325) [editing your scripts outside obsidian](https://youtu.be/fWuFeMMZid4?t=1327) [the other option](https://youtu.be/fWuFeMMZid4?t=1331) [that you can do](https://youtu.be/fWuFeMMZid4?t=1333) [is i've created a simple plugin called](https://youtu.be/fWuFeMMZid4?t=1335) [code view and you can install code view](https://youtu.be/fWuFeMMZid4?t=1338) [at the moment code view is not yet](https://youtu.be/fWuFeMMZid4?t=1343) [published in the community plugins so](https://youtu.be/fWuFeMMZid4?t=1346) [you will need to go to](https://youtu.be/fWuFeMMZid4?t=1348) [the github](https://youtu.be/fWuFeMMZid4?t=1350) [page that or github link i provide](https://youtu.be/fWuFeMMZid4?t=1351) [in the video description and this will](https://youtu.be/fWuFeMMZid4?t=1355) [open up this code view or code editor](https://youtu.be/fWuFeMMZid4?t=1359) [github page and if you click here to on](https://youtu.be/fWuFeMMZid4?t=1364) [releases then you will see that](https://youtu.be/fWuFeMMZid4?t=1367) [at the top you will always see the](https://youtu.be/fWuFeMMZid4?t=1371) [latest release currently at 0.0.3](https://youtu.be/fWuFeMMZid4?t=1373) [and if you scroll to the bottom of this](https://youtu.be/fWuFeMMZid4?t=1377) [there are three files that you need to](https://youtu.be/fWuFeMMZid4?t=1379) [download you can download these files](https://youtu.be/fWuFeMMZid4?t=1382) [simply by clicking on them and then](https://youtu.be/fWuFeMMZid4?t=1384) [your browser is going to download the](https://youtu.be/fWuFeMMZid4?t=1388) [files you need to download the main js](https://youtu.be/fWuFeMMZid4?t=1390) [manifest json and styles css and once](https://youtu.be/fWuFeMMZid4?t=1393) [you've done that then you can go ahead](https://youtu.be/fWuFeMMZid4?t=1397) [and open up obsidian and similarly as we](https://youtu.be/fWuFeMMZid4?t=1401) [did before you can](https://youtu.be/fWuFeMMZid4?t=1404) [open up](https://youtu.be/fWuFeMMZid4?t=1406) [the](https://youtu.be/fWuFeMMZid4?t=1408) [folder the obsidian folder by clicking](https://youtu.be/fWuFeMMZid4?t=1409) [on one of these files](https://youtu.be/fWuFeMMZid4?t=1412) [and you will need to navigate up a level](https://youtu.be/fWuFeMMZid4?t=1414) [and](https://youtu.be/fWuFeMMZid4?t=1419) [look for the dot obsidian folder and](https://youtu.be/fWuFeMMZid4?t=1420) [within dot obsidian folder you need to](https://youtu.be/fWuFeMMZid4?t=1423) [look for plugins](https://youtu.be/fWuFeMMZid4?t=1426) [and within plugin you will need to](https://youtu.be/fWuFeMMZid4?t=1428) [create a folder so just](https://youtu.be/fWuFeMMZid4?t=1430) [you will select new folder](https://youtu.be/fWuFeMMZid4?t=1433) [and create a folder called obsidian code](https://youtu.be/fWuFeMMZid4?t=1436) [view](https://youtu.be/fWuFeMMZid4?t=1439) [and if you double click on this](https://youtu.be/fWuFeMMZid4?t=1440) [you will need to paste the three files](https://youtu.be/fWuFeMMZid4?t=1443) [the main js the manifest json and the](https://youtu.be/fWuFeMMZid4?t=1446) [styles css](https://youtu.be/fWuFeMMZid4?t=1449) [into this folder](https://youtu.be/fWuFeMMZid4?t=1451) [and once you've done that then](https://youtu.be/fWuFeMMZid4?t=1453) [that](https://youtu.be/fWuFeMMZid4?t=1457) [plugin should appear under community](https://youtu.be/fWuFeMMZid4?t=1458) [plugins and you will need to](https://youtu.be/fWuFeMMZid4?t=1461) [scroll down here and turn this switch on](https://youtu.be/fWuFeMMZid4?t=1464) [so you need to](https://youtu.be/fWuFeMMZid4?t=1468) [enable](https://youtu.be/fWuFeMMZid4?t=1469) [that plugin there are some settings to](https://youtu.be/fWuFeMMZid4?t=1470) [the plugin but you don't need to](https://youtu.be/fWuFeMMZid4?t=1473) [do those settings if all you want to do](https://youtu.be/fWuFeMMZid4?t=1476) [is to edit these javascript files](https://youtu.be/fWuFeMMZid4?t=1478) [after you've installed it and enabled it](https://youtu.be/fWuFeMMZid4?t=1482) [you will actually](https://youtu.be/fWuFeMMZid4?t=1484) [see these](https://youtu.be/fWuFeMMZid4?t=1486) [js files in the scripts menu and you can](https://youtu.be/fWuFeMMZid4?t=1487) [nicely edit inside obsidian to make it](https://youtu.be/fWuFeMMZid4?t=1491) [slightly easier for you to implement](https://youtu.be/fWuFeMMZid4?t=1495) [this script i'm going to upload](https://youtu.be/fWuFeMMZid4?t=1498) [in a zip file the five scripts](https://youtu.be/fWuFeMMZid4?t=1501) [and you will be able to download them](https://youtu.be/fWuFeMMZid4?t=1504) [and once you've downloaded them you](https://youtu.be/fWuFeMMZid4?t=1507) [extract the zip file you can simply drag](https://youtu.be/fWuFeMMZid4?t=1509) [and drop those script files into a](https://youtu.be/fWuFeMMZid4?t=1512) [folder you need to create this folder in](https://youtu.be/fWuFeMMZid4?t=1515) [obsidian scripts and you can just drop](https://youtu.be/fWuFeMMZid4?t=1518) [those scripts there note that if you](https://youtu.be/fWuFeMMZid4?t=1521) [don't have code view installed](https://youtu.be/fWuFeMMZid4?t=1524) [and if you use default obsidian settings](https://youtu.be/fWuFeMMZid4?t=1527) [then you will not see these files so you](https://youtu.be/fWuFeMMZid4?t=1530) [will need to go to settings](https://youtu.be/fWuFeMMZid4?t=1532) [and you will need to click files and](https://youtu.be/fWuFeMMZid4?t=1535) [links](https://youtu.be/fWuFeMMZid4?t=1537) [and in files and links you need to come](https://youtu.be/fWuFeMMZid4?t=1538) [down to this setting and turn this on](https://youtu.be/fWuFeMMZid4?t=1541) [detect all file extensions and what this](https://youtu.be/fWuFeMMZid4?t=1544) [is going to do](https://youtu.be/fWuFeMMZid4?t=1547) [is it is going to show in file explorer](https://youtu.be/fWuFeMMZid4?t=1549) [the files even if you don't have](https://youtu.be/fWuFeMMZid4?t=1553) [a](https://youtu.be/fWuFeMMZid4?t=1556) [native](https://youtu.be/fWuFeMMZid4?t=1557) [application or plugin to process those](https://youtu.be/fWuFeMMZid4?t=1559) [files in obsidian](https://youtu.be/fWuFeMMZid4?t=1562) [and this way](https://youtu.be/fWuFeMMZid4?t=1564) [you can](https://youtu.be/fWuFeMMZid4?t=1565) [simply shortcut the process of getting](https://youtu.be/fWuFeMMZid4?t=1566) [these scripts i'm also going to upload](https://youtu.be/fWuFeMMZid4?t=1569) [the](https://youtu.be/fWuFeMMZid4?t=1572) [data json for the files so if i open up](https://youtu.be/fWuFeMMZid4?t=1573) [again](https://youtu.be/fWuFeMMZid4?t=1578) [system explorer and they come here i'm](https://youtu.be/fWuFeMMZid4?t=1579) [going to](https://youtu.be/fWuFeMMZid4?t=1583) [upload](https://youtu.be/fWuFeMMZid4?t=1584) [so i came to the](https://youtu.be/fWuFeMMZid4?t=1587) [obsidian plugins folder](https://youtu.be/fWuFeMMZid4?t=1589) [and here i'm going to open up the quick](https://youtu.be/fWuFeMMZid4?t=1592) [add folder and i'm also going to be](https://youtu.be/fWuFeMMZid4?t=1595) [sharing the data json file](https://youtu.be/fWuFeMMZid4?t=1600) [if you have no other](https://youtu.be/fWuFeMMZid4?t=1603) [macros in quick add so if this is the](https://youtu.be/fWuFeMMZid4?t=1606) [only macro you want to do then it is an](https://youtu.be/fWuFeMMZid4?t=1609) [option that you simply](https://youtu.be/fWuFeMMZid4?t=1613) [replace your data json with the json i](https://youtu.be/fWuFeMMZid4?t=1615) [provide and then you can shortcut the](https://youtu.be/fWuFeMMZid4?t=1619) [whole process of getting up to speed](https://youtu.be/fWuFeMMZid4?t=1621) [with quick add](https://youtu.be/fWuFeMMZid4?t=1624) [i do however advise that you go through](https://youtu.be/fWuFeMMZid4?t=1627) [the pain of setting this up quick add is](https://youtu.be/fWuFeMMZid4?t=1630) [a very powerful tool and i think it's](https://youtu.be/fWuFeMMZid4?t=1633) [definitely worth investing the time to](https://youtu.be/fWuFeMMZid4?t=1636) [learn it because there are many cool](https://youtu.be/fWuFeMMZid4?t=1639) [things you can do with it and finally i](https://youtu.be/fWuFeMMZid4?t=1641) [want to show you a simple](https://youtu.be/fWuFeMMZid4?t=1645) [solution to do your presentations with](https://youtu.be/fWuFeMMZid4?t=1648) [excolidra and obsidian without needing](https://youtu.be/fWuFeMMZid4?t=1651) [to do any scripting and the way you do](https://youtu.be/fWuFeMMZid4?t=1654) [it is you go to your drawing you switch](https://youtu.be/fWuFeMMZid4?t=1657) [to view mode which](https://youtu.be/fWuFeMMZid4?t=1660) [just going to take off all the buttons](https://youtu.be/fWuFeMMZid4?t=1662) [and it also makes your drawing read only](https://youtu.be/fWuFeMMZid4?t=1665) [so you cannot modify it by accident](https://youtu.be/fWuFeMMZid4?t=1667) [you go to full screen mode](https://youtu.be/fWuFeMMZid4?t=1671) [and in full screen mode you use the](https://youtu.be/fWuFeMMZid4?t=1673) [control button and the roller to zoom in](https://youtu.be/fWuFeMMZid4?t=1675) [on the object you want to talk about you](https://youtu.be/fWuFeMMZid4?t=1678) [zoom out you zoom in you zoom out you](https://youtu.be/fWuFeMMZid4?t=1680) [zoom in](https://youtu.be/fWuFeMMZid4?t=1684) [and that is actually](https://youtu.be/fWuFeMMZid4?t=1685) [convenient you need to be careful on how](https://youtu.be/fWuFeMMZid4?t=1688) [you position your](https://youtu.be/fWuFeMMZid4?t=1690) [pointer so it zooms to the right place](https://youtu.be/fWuFeMMZid4?t=1692) [but i think with a little practice you](https://youtu.be/fWuFeMMZid4?t=1695) [can actually learn](https://youtu.be/fWuFeMMZid4?t=1697) [where you need to put](https://youtu.be/fWuFeMMZid4?t=1699) [the pointer so it will zoom on the area](https://youtu.be/fWuFeMMZid4?t=1701) [you want](https://youtu.be/fWuFeMMZid4?t=1704) [else you can do a bit of](https://youtu.be/fWuFeMMZid4?t=1705) [correction](https://youtu.be/fWuFeMMZid4?t=1707) [this is nice because it adds an](https://youtu.be/fWuFeMMZid4?t=1709) [animation it is not so convenient when](https://youtu.be/fWuFeMMZid4?t=1711) [you're presenting and](https://youtu.be/fWuFeMMZid4?t=1714) [you don't really want to deal with](https://youtu.be/fWuFeMMZid4?t=1716) [the roller button you just want to press](https://youtu.be/fWuFeMMZid4?t=1719) [a button to move forward in that case i](https://youtu.be/fWuFeMMZid4?t=1721) [think my script will serve you better](https://youtu.be/fWuFeMMZid4?t=1724) [so with that let me close here i hope](https://youtu.be/fWuFeMMZid4?t=1727) [you found this helpful and](https://youtu.be/fWuFeMMZid4?t=1730) [i encourage you to](https://youtu.be/fWuFeMMZid4?t=1733) [play with](https://youtu.be/fWuFeMMZid4?t=1735) [add as well as to play with](https://youtu.be/fWuFeMMZid4?t=1737) [xcoli draw automate i think it's very](https://youtu.be/fWuFeMMZid4?t=1739) [powerful it provides lots of](https://youtu.be/fWuFeMMZid4?t=1742) [opportunities for](https://youtu.be/fWuFeMMZid4?t=1744) [cool automations](https://youtu.be/fWuFeMMZid4?t=1746) [and i think it can be a huge addition to](https://youtu.be/fWuFeMMZid4?t=1747) [your](https://youtu.be/fWuFeMMZid4?t=1751) [personal knowledge management workflow](https://youtu.be/fWuFeMMZid4?t=1752) [thank you](https://youtu.be/fWuFeMMZid4?t=1755)