SketchyBar/config/events.html

34 lines
28 KiB
HTML
Raw Normal View History

2022-05-12 13:21:03 +00:00
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-config/events">
<head>
<meta charset="UTF-8">
2023-01-07 20:38:05 +00:00
<meta name="generator" content="Docusaurus v2.2.0">
<title data-rh="true">Events &amp; Scripting | SketchyBar</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://felixkratz.github.io/SketchyBar/config/events"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Events &amp; Scripting | SketchyBar"><meta data-rh="true" name="description" content="Events and Scripting"><meta data-rh="true" property="og:description" content="Events and Scripting"><link data-rh="true" rel="icon" href="/SketchyBar/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://felixkratz.github.io/SketchyBar/config/events"><link data-rh="true" rel="alternate" href="https://felixkratz.github.io/SketchyBar/config/events" hreflang="en"><link data-rh="true" rel="alternate" href="https://felixkratz.github.io/SketchyBar/config/events" hreflang="x-default"><link rel="stylesheet" href="/SketchyBar/assets/css/styles.21661fb5.css">
2023-03-10 12:45:56 +00:00
<link rel="preload" href="/SketchyBar/assets/js/runtime~main.8fd92015.js" as="script">
<link rel="preload" href="/SketchyBar/assets/js/main.a0fc8637.js" as="script">
2022-05-12 13:21:03 +00:00
</head>
<body class="navigation-with-keyboard">
<script>!function(){function e(e){document.documentElement.setAttribute("data-theme",e)}var t=function(){var e=null;try{e=localStorage.getItem("theme")}catch(e){}return e}();null!==t?e(t):window.matchMedia("(prefers-color-scheme: dark)").matches?e("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,e("light"))}()</script><div id="__docusaurus">
2023-01-07 20:38:05 +00:00
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/SketchyBar/"><div class="navbar__logo"><img src="/SketchyBar/img/logo.svg" alt="SketchyBar Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/SketchyBar/img/logo.svg" alt="SketchyBar Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">SketchyBar</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/SketchyBar/features">Features</a><a class="navbar__item navbar__link" href="/SketchyBar/setup">Setup &amp; Installation</a><a class="navbar__item navbar__link" href="/SketchyBar/config/bar">Configuration</a><a href="https://github.com/FelixKratz/SketchyBar" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="navbar__search searchBarContainer_NW3z"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebar_njMd"><nav class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sideba
2022-06-15 20:54:43 +00:00
all items subscribed to the <em>event</em> will execute their <em>script</em>.
This can be used to create more reactive and performant items which react to
2023-01-31 21:38:36 +00:00
events rather than polling for a change.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">sketchybar --subscribe </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">name</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">event</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">. </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">event</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>where the events are:</p><table><thead><tr><th align="center">&lt;event<!-- -->&gt;</th><th align="center">description</th><th align="center"><code>$INFO</code></th></tr></thead><tbody><tr><td align="center"><code>front_app_switched</code></td><td align="center">When the front application changes (not triggered if a different window of the same app is focused)</td><td align="center">front application name</td></tr><tr><td align="center"><code>space_change</code></td><td align="center">When the active mission control space changes</td><td align="center">JSON for active spaces on all displays</td></tr><tr><td align="center"><code>display_change</code></td><td align="center">When the active display is changed</td><td align="center">new active display id</td></tr><tr><td align="center"><code>volume_change</code></td><td align="center">When the system audio volume is changed</td><td align="center">new volume in percent</td></tr><tr><td align="center"><code>brightness_change</code></td><td align="center">When a displays brightness is changed</td><td align="center">new brightness in percent</td></tr><tr><td align="center"><code>power_source_change</code></td><td align="center">When the devices power source is changed</td><td align="center">new power source (<code>AC</code> or <code>BATTERY</code>)</td></tr><tr><td align="center"><code>wifi_change</code></td><td align="center">When the device connects of disconnects from wifi</td><td align="center">new WiFi SSID or empty on disconnect</td></tr><tr><td align="center"><code>system_will_sleep</code></td><td align="center">When the system prepares to sleep</td><td align="center"></td></tr><tr><td align="center"><code>system_woke</code></td><td align="center">When the system has awaken from sleep</td><td align="center"></td></tr><tr><td align="center"><code>mouse.entered</code></td><td align="center">When the mouse enters over an item</td><td align="center"></td></tr><tr><td align="center"><code>mouse.exited</code></td><td align="center">When the mouse leaves an item</td><td align="center"></td></tr><tr><td align="center"><code>mouse.entered.global</code></td><td align="center">When the mouse enters over <em>any</em> part of the bar</td><td align="center"></td></tr><tr><td align="center"><code>mouse.exited.global</code></td><td align="center">When the mouse leaves <em>all</em> parts of th
2022-06-27 17:49:42 +00:00
When an item is subscribed to these events the <em>script</em> is run and it gets passed the <code>$SENDER</code> variable, which holds exactly the above names to distinguish between the different events.
2023-01-07 20:38:05 +00:00
It is thus possible to have a script that reacts to each event differently e.g. via a switch for the <code>$SENDER</code> variable in the <em>script</em>.</p><p>Alternatively a fixed <em>update_freq</em> can be <em>--set</em>, such that the event is routinely run to poll for change, the <code>$SENDER</code> variable will in this case hold the value <code>routine</code>.</p><p>When an item invokes a script, the script has access to some environment variables, such as:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token variable" style="color:rgb(191, 199, 213)">$NAME</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token variable" style="color:rgb(191, 199, 213)">$SENDER</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Where <code>$NAME</code> is the name of the item that has invoked the script and <code>$SENDER</code> is the reason why the script is executed.</p><p>If an item is <em>clicked</em> the script has access to the additional variables:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token variable" style="color:rgb(191, 199, 213)">$BUTTON</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token variable" style="color:rgb(191, 199, 213)">$MODIFIER</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>where the <code>$BUTTON</code> can be <em>left</em>, <em>right</em> or <em>other</em> and specifies the mouse button that was used to click the item, while the <code>$MODIFIER</code> is either <em>shift</em>, <em>ctrl</em>, <em>alt</em> or <em>cmd</em> and
specifies the modifier key held down while clicking the item.</p><p>All scripts are forced to terminate after 60 seconds and do not run while the system is sleeping. </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="creating-custom-events">Creating custom events<a class="hash-link" href="#creating-custom-events" title="Direct link to heading"></a></h3><p>This allows to define events which are triggered by arbitrary applications or manually (see Trigger custom events).
Items can also subscribe to these events for their script execution.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">sketchybar --add event </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">name</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain">optional: </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">NSDistributedNotificationName</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Optional: You can subscribe to the notifications sent to the NSDistributedNotificationCenter e.g.
the notification Spotify sends on track change:
<code>com.spotify.client.PlaybackStateChanged</code> (<a href="https://github.com/FelixKratz/SketchyBar/discussions/12#discussioncomment-1455842" target="_blank" rel="noopener noreferrer">example</a>), or the
notification sent by the system when the screen is unlocked:
<code>com.apple.screenIsUnlocked</code> (<a href="https://github.com/FelixKratz/SketchyBar/discussions/12?sort=new#discussioncomment-2979651" target="_blank" rel="noopener noreferrer">example</a>)
to create more responsive items.
Custom events that subscribe to NSDistributedNotificationCenter notifications
will receive additional notification information in the <code>$INFO</code> variable if available.
2023-01-31 21:38:36 +00:00
For more NSDistributedNotifications see <a href="https://github.com/FelixKratz/SketchyBar/discussions/151" target="_blank" rel="noopener noreferrer">this discussion</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="triggering-custom-events">Triggering custom events<a class="hash-link" href="#triggering-custom-events" title="Direct link to heading"></a></h3><p>This triggers a custom event that has been added before</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">sketchybar --trigger </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">event</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">[</span><span class="token plain">Optional: </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">envvar</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;=</span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">value</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">..</span><span class="token plain">. </span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">envvar</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;=</span><span class="token operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token plain">value</span><span class="token operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token punctuation" style="color:rgb(199, 146, 234)">]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Optionally you can add environment variables to the trigger command witch are passed to the script, e.g.:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">sketchybar --trigger demo </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">VAR</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">Test</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>will trigger the demo event and <code>$VAR</code> will be available as an environment variable in the scripts that this event invokes.</p><h3 class="anchor anc
<em>never</em> be used in an item script, as this would lead to infinite loops. It
is prominently needed after the initial configuration to properly initialize
all items by forcing all their scripts to run</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">sketchybar --update</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/SketchyBar/config/popups"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Popup Menus</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/SketchyBar/config/querying"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Querying Information</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#events-and-scripting" class="table-of-contents__link toc-highlight">Events and Scripting</a><ul><li><a href="#creating-custom-events" class="table-of-contents__link toc-highlight">Creating custom events</a></li><li><a href="#triggering-custom-events" class="table-of-contents__link toc-highlight">Triggering custom events</a></li><li><a href="#forcing-all-shell-scripts-to-run-and-the-bar-to-refresh" class="table-of-contents__link toc-highlight">Forcing all shell scripts to run and the bar to refresh</a></li></ul></li></ul></div></div></div></div></main></div></div></div>
2023-03-10 12:45:56 +00:00
<script src="/SketchyBar/assets/js/runtime~main.8fd92015.js"></script>
<script src="/SketchyBar/assets/js/main.a0fc8637.js"></script>
2022-05-12 13:21:03 +00:00
</body>
</html>