<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Automation Examples</title><link>https://sourceforge.net/p/sucrose/wiki/Automation%2520Examples/</link><description>Recent changes to Automation Examples</description><atom:link href="https://sourceforge.net/p/sucrose/wiki/Automation%20Examples/feed" rel="self"/><language>en</language><lastBuildDate>Sat, 04 Jul 2026 04:15:17 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/sucrose/wiki/Automation%20Examples/feed" rel="self" type="application/rss+xml"/><item><title>Automation Examples modified by Bayram Emekli</title><link>https://sourceforge.net/p/sucrose/wiki/Automation%2520Examples/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="h-automation-examples"&gt;Automation Examples&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Stability disclaimer — read this first.&lt;/strong&gt; Everything on this page drives Sucrose's &lt;strong&gt;internal IPC command protocol&lt;/strong&gt;, not a stable, supported public command line. The Portal and Launcher build these commands for you automatically; the format, command names, and argument order are &lt;strong&gt;implementation details that can change between versions without notice&lt;/strong&gt;, and there is no compatibility guarantee. Treat these examples as advanced/experimental. If a command stops working after an update, the protocol changed — that is expected. For the formal reference, see &lt;a href="./Command-Reference"&gt;Command-Reference&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This page collects practical, copy-pasteable automation recipes built on the command bus that &lt;code&gt;Sucrose.Commandog.exe&lt;/code&gt; dispatches. Every command is a single specially-encoded string of the form &lt;code&gt;✔Command✖value✖value&lt;/code&gt;, where &lt;code&gt;✔&lt;/code&gt; is U+2714 (HEAVY CHECK MARK) and &lt;code&gt;✖&lt;/code&gt; is U+2716 (HEAVY MULTIPLICATION X). The most realistic automation use cases are configuring auto-start-on-logon, reloading the wallpaper, and triggering the cycling reload. For the complete list of commands and their arguments, read &lt;a href="./Command-Reference"&gt;Command-Reference&lt;/a&gt; first; for how the dispatcher works, see &lt;a href="./Commandog-Dispatcher"&gt;Commandog-Dispatcher&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-contents"&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#prerequisites-and-caveats"&gt;Prerequisites and caveats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#emitting-the-marker-characters-correctly"&gt;Emitting the marker characters correctly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-auto-start-sucrose-on-logon-task-scheduler"&gt;Example: auto-start Sucrose on logon (Task Scheduler)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-remove-or-toggle-the-logon-task"&gt;Example: remove or toggle the logon task&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-reload-the-wallpaper"&gt;Example: reload the wallpaper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-cycling-reload"&gt;Example: cycling reload&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-open-the-portal-on-a-specific-settings-page"&gt;Example: open the Portal on a specific settings page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-launch-a-background-service-or-helper"&gt;Example: launch a background service or helper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-diagnose-the-parser-with-the-test-command"&gt;Example: diagnose the parser with the Test command&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#see-also"&gt;See also&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-prerequisites-and-caveats"&gt;Prerequisites and caveats&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The dispatcher executable is &lt;code&gt;Sucrose.Commandog.exe&lt;/code&gt;. It lives under &lt;code&gt;%LocalAppData%\Sucrose&lt;/code&gt; in its own sibling folder (&lt;code&gt;…\Sucrose.Commandog\Sucrose.Commandog.exe&lt;/code&gt;). See &lt;a href="./Data-Locations"&gt;Data-Locations&lt;/a&gt; for the exact install layout.&lt;/li&gt;
&lt;li&gt;Commandog reads its own argument string, performs &lt;strong&gt;one&lt;/strong&gt; action, and immediately exits (&lt;code&gt;Environment.Exit(0)&lt;/code&gt;). It is not a daemon; each command is a fresh process launch.&lt;/li&gt;
&lt;li&gt;Command names are &lt;strong&gt;case-insensitive&lt;/strong&gt; (&lt;code&gt;RestartLive&lt;/code&gt; == &lt;code&gt;restartlive&lt;/code&gt;). The &lt;code&gt;✔&lt;/code&gt; start marker and at least one &lt;code&gt;✖&lt;/code&gt;-separated value are both required, or the input is ignored.&lt;/li&gt;
&lt;li&gt;The placeholders below (&lt;code&gt;&amp;lt;PortalPath&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;UpdatePath&amp;gt;&lt;/code&gt;, etc.) are full paths to the corresponding Sucrose executables. In normal operation the UI fills these in; if you script them, point them at the real &lt;code&gt;.exe&lt;/code&gt; paths under &lt;code&gt;%LocalAppData%\Sucrose&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;There is no documented stdout contract.&lt;/strong&gt; Apart from the diagnostic &lt;code&gt;Test&lt;/code&gt; command, Commandog produces no machine-readable output — do not parse its console for status.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h-emitting-the-marker-characters-correctly"&gt;Emitting the marker characters correctly&lt;/h2&gt;
&lt;p&gt;The hardest part of scripting these commands is producing the literal Unicode markers &lt;code&gt;✔&lt;/code&gt; (U+2714) and &lt;code&gt;✖&lt;/code&gt; (U+2716) as UTF-8, not their ASCII look-alikes. Commandog sets its console to UTF-8 on startup, so the bytes must arrive as UTF-8.&lt;/p&gt;
&lt;p&gt;In PowerShell, build the markers from their code points so you never have to paste the glyphs:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c"&gt;# Build the marker characters from code points (avoids copy/paste mistakes)&lt;/span&gt;
&lt;span class="nv"&gt;$check&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="no"&gt;[char]&lt;/span&gt;&lt;span class="n"&gt;0x2714&lt;/span&gt;   &lt;span class="c"&gt;# ✔  StartCommand&lt;/span&gt;
&lt;span class="nv"&gt;$x&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="no"&gt;[char]&lt;/span&gt;&lt;span class="n"&gt;0x2716&lt;/span&gt;   &lt;span class="c"&gt;# ✖  ValueSeparator&lt;/span&gt;

&lt;span class="c"&gt;# Helper: run a Commandog command from an array of parts.&lt;/span&gt;
&lt;span class="c"&gt;# parts[0] is the command name; the rest are values.&lt;/span&gt;
&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="nb"&gt;Invoke-SucroseCommand&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;param&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;Mandatory&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="no"&gt;[string]&lt;/span&gt; &lt;span class="nv"&gt;$CommandogPath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;Mandatory&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="no"&gt;[string[]]&lt;/span&gt; &lt;span class="nv"&gt;$Parts&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;$check&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="no"&gt;[char]&lt;/span&gt;&lt;span class="n"&gt;0x2714&lt;/span&gt;
    &lt;span class="nv"&gt;$x&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="no"&gt;[char]&lt;/span&gt;&lt;span class="n"&gt;0x2716&lt;/span&gt;
    &lt;span class="nv"&gt;$arg&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$check&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$Parts&lt;/span&gt; &lt;span class="n"&gt;-join&lt;/span&gt; &lt;span class="nv"&gt;$x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;Start-Process&lt;/span&gt; &lt;span class="n"&gt;-FilePath&lt;/span&gt; &lt;span class="nv"&gt;$CommandogPath&lt;/span&gt; &lt;span class="n"&gt;-ArgumentList&lt;/span&gt; &lt;span class="nv"&gt;$arg&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Make sure your console and any file you save the script to are UTF-8 encoded, or the markers can be mangled before they reach the process.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="h-example-auto-start-sucrose-on-logon-task-scheduler"&gt;Example: auto-start Sucrose on logon (Task Scheduler)&lt;/h2&gt;
&lt;p&gt;Sucrose's preferred auto-start mechanism is a Windows Task Scheduler task named &lt;strong&gt;&lt;code&gt;Autorun for Sucrose&lt;/code&gt;&lt;/strong&gt; (in the &lt;code&gt;\Sucrose\&lt;/code&gt; task folder), triggered at logon for the current user. The &lt;code&gt;Scheduler&lt;/code&gt; command with the &lt;code&gt;Create&lt;/code&gt; sub-command creates it; the second value is the application path the task should run.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;✔Scheduler✖Create✖&amp;lt;full path to the app to run&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Driven from PowerShell with the helper above:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nv"&gt;$commandog&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"$env:LocalAppData\Sucrose\Sucrose.Commandog\Sucrose.Commandog.exe"&lt;/span&gt;
&lt;span class="nv"&gt;$appToRun&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"$env:LocalAppData\Sucrose\Sucrose.Launcher\Sucrose.Launcher.exe"&lt;/span&gt;

&lt;span class="nb"&gt;Invoke-SucroseCommand&lt;/span&gt; &lt;span class="n"&gt;-CommandogPath&lt;/span&gt; &lt;span class="nv"&gt;$commandog&lt;/span&gt; &lt;span class="n"&gt;-Parts&lt;/span&gt; &lt;span class="p"&gt;@(&lt;/span&gt;&lt;span class="s1"&gt;'Scheduler'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Create'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$appToRun&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The resulting task uses a &lt;code&gt;LogonTrigger&lt;/code&gt;, has no execution time limit, and does &lt;strong&gt;not&lt;/strong&gt; stop on battery. This is the same mechanism the Portal uses when you choose the &lt;strong&gt;Scheduler&lt;/strong&gt; startup mode (see &lt;a href="./Theme-Tray-Startup"&gt;Theme-Tray-Startup&lt;/a&gt;). Because it is a scheduled task — not a registry Run entry — you manage it in Task Scheduler, not in &lt;code&gt;msconfig&lt;/code&gt;/Run; see &lt;a href="./Troubleshooting-Settings-Startup-GPU"&gt;Troubleshooting-Settings-Startup-GPU&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-example-remove-or-toggle-the-logon-task"&gt;Example: remove or toggle the logon task&lt;/h2&gt;
&lt;p&gt;To temporarily turn auto-start off without deleting the task, use &lt;code&gt;Disable&lt;/code&gt;; re-enable with &lt;code&gt;Enable&lt;/code&gt;; remove it entirely with &lt;code&gt;Delete&lt;/code&gt;:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;✔Scheduler✖Disable
✔Scheduler✖Enable
✔Scheduler✖Delete

:::powershell
$commandog = "$env:LocalAppData\Sucrose\Sucrose.Commandog\Sucrose.Commandog.exe"

# Turn auto-start off (keeps the task)
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('Scheduler','Disable')

# Turn it back on
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('Scheduler','Enable')

# Remove it completely
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('Scheduler','Delete')
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The Run-key alternatives exist too (&lt;code&gt;Startup&lt;/code&gt; per-user, &lt;code&gt;StartupM&lt;/code&gt; machine-wide, &lt;code&gt;StartupP&lt;/code&gt; priority/approved), but the Scheduler task is what the UI uses by default. See &lt;a href="./Command-Reference"&gt;Command-Reference&lt;/a&gt; for those signatures.&lt;/p&gt;
&lt;h2 id="h-example-reload-the-wallpaper"&gt;Example: reload the wallpaper&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;RestartLive&lt;/code&gt; is the wallpaper &lt;strong&gt;reload&lt;/strong&gt;: it stops the live engine and its subprocess, &lt;strong&gt;kills &lt;code&gt;Sucrose.Backgroundog.exe&lt;/code&gt;&lt;/strong&gt;, restarts the wallpaper, waits ~1500 ms, and retries if it did not come back. It takes one value, conventionally &lt;code&gt;Unknown&lt;/code&gt;.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;✔RestartLive✖Unknown

:::powershell
$commandog = "$env:LocalAppData\Sucrose\Sucrose.Commandog\Sucrose.Commandog.exe"
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('RestartLive','Unknown')
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This is exactly what the Launcher tray "Reload" action emits. Use it after editing settings or assets that the engine reads only at startup.&lt;/p&gt;
&lt;h2 id="h-example-cycling-reload"&gt;Example: cycling reload&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Cycyling&lt;/code&gt; (note the spelling in code) performs the &lt;strong&gt;cycling&lt;/strong&gt; reload used by the slideshow feature: it stops the live engine and subprocess, restarts the wallpaper, waits ~1500 ms, and retries once if needed. It does not consume a value beyond the required one, so pass a placeholder:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;✔Cycyling✖Unknown

:::powershell
$commandog = "$env:LocalAppData\Sucrose\Sucrose.Commandog\Sucrose.Commandog.exe"
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('Cycyling','Unknown')
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;For the user-facing slideshow configuration (interval, random vs. sequential, exclusion list), see &lt;a href="./Wallpaper-Cycling"&gt;Wallpaper-Cycling&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-example-open-the-portal-on-a-specific-settings-page"&gt;Example: open the Portal on a specific settings page&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;Interface&lt;/code&gt; command opens the Portal. With a second value (an &lt;code&gt;ArgumentCommandType&lt;/code&gt; member) it jumps straight to a settings page:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;✔Interface✖&amp;lt;PortalPath&amp;gt;
✔Interface✖&amp;lt;PortalPath&amp;gt;✖GeneralSetting

:::powershell
$commandog = "$env:LocalAppData\Sucrose\Sucrose.Commandog\Sucrose.Commandog.exe"
$portal    = "$env:LocalAppData\Sucrose\Sucrose.Portal\Sucrose.Portal.exe"

# Just open the Portal
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('Interface', $portal)

# Open the Portal directly on the General settings page
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('Interface', $portal, 'GeneralSetting')
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Valid page targets are &lt;code&gt;OtherSetting&lt;/code&gt;, &lt;code&gt;SystemSetting&lt;/code&gt;, &lt;code&gt;GeneralSetting&lt;/code&gt;, &lt;code&gt;PersonalSetting&lt;/code&gt;, &lt;code&gt;WallpaperSetting&lt;/code&gt;, and &lt;code&gt;PerformanceSetting&lt;/code&gt; (plus the hidden &lt;code&gt;DonateSetting&lt;/code&gt;). Each maps to a page documented under &lt;a href="./Settings-Overview"&gt;Settings-Overview&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-example-launch-a-background-service-or-helper"&gt;Example: launch a background service or helper&lt;/h2&gt;
&lt;p&gt;Several commands exist mainly to launch a service &lt;code&gt;.exe&lt;/code&gt;. These pass the target executable path as the value:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;✔Backgroundog✖&amp;lt;BackgroundogPath&amp;gt;
✔Reportdog✖&amp;lt;ReportdogPath&amp;gt;
✔Property✖&amp;lt;PropertyPath&amp;gt;

:::powershell
$commandog    = "$env:LocalAppData\Sucrose\Sucrose.Commandog\Sucrose.Commandog.exe"
$backgroundog = "$env:LocalAppData\Sucrose\Sucrose.Backgroundog\Sucrose.Backgroundog.exe"

# Start the system-status / audio service on demand
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('Backgroundog', $backgroundog)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Note that &lt;a href="./Backgroundog-Service"&gt;Backgroundog-Service&lt;/a&gt; auto-exits when there is no live wallpaper, so starting it manually only makes sense while a wallpaper is running. &lt;code&gt;Property&lt;/code&gt; opens the per-wallpaper property editor for the currently selected wallpaper (use &lt;code&gt;PropertyA&lt;/code&gt; with a second value to target a specific theme) — see &lt;a href="./Property-Service"&gt;Property-Service&lt;/a&gt; and &lt;a href="./Customizing-Wallpaper"&gt;Customizing-Wallpaper&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="h-example-diagnose-the-parser-with-the-test-command"&gt;Example: diagnose the parser with the Test command&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Test&lt;/code&gt; is a built-in diagnostic: it prints &lt;code&gt;Test Values:&lt;/code&gt; and then, for each value, detects its type (&lt;code&gt;bool&lt;/code&gt;, then &lt;code&gt;int&lt;/code&gt;, else &lt;code&gt;string&lt;/code&gt;) and echoes the parsed value. Use it to confirm your markers and encoding are reaching Commandog intact:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;✔Test✖true✖42✖hello

:::powershell
$commandog = "$env:LocalAppData\Sucrose\Sucrose.Commandog\Sucrose.Commandog.exe"
Invoke-SucroseCommand -CommandogPath $commandog -Parts @('Test','true','42','hello')
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;If &lt;code&gt;Test&lt;/code&gt; does not echo your values, the &lt;code&gt;✔&lt;/code&gt;/&lt;code&gt;✖&lt;/code&gt; markers were not delivered as UTF-8 — revisit &lt;a href="#emitting-the-marker-characters-correctly"&gt;Emitting the marker characters correctly&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;📷 &lt;strong&gt;Screenshot needed:&lt;/strong&gt; The &lt;code&gt;Sucrose.Commandog.exe&lt;/code&gt; console window output after running &lt;code&gt;✔Test✖true✖42✖hello&lt;/code&gt;, showing the &lt;code&gt;Test Values:&lt;/code&gt; line and the three parsed values.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="h-see-also"&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="./Command-Reference"&gt;Command-Reference&lt;/a&gt; — the authoritative table of all 31 commands, their arguments, and the wire format&lt;/li&gt;
&lt;li&gt;&lt;a href="./Commandog-Dispatcher"&gt;Commandog-Dispatcher&lt;/a&gt; — how the dispatcher parses, routes, and exits&lt;/li&gt;
&lt;li&gt;&lt;a href="./Wallpaper-Cycling"&gt;Wallpaper-Cycling&lt;/a&gt; — the user-facing slideshow that the &lt;code&gt;Cycyling&lt;/code&gt; command backs&lt;/li&gt;
&lt;li&gt;&lt;a href="./Theme-Tray-Startup"&gt;Theme-Tray-Startup&lt;/a&gt; — startup modes (None/Normal/Priority/Scheduler) that map to startup commands&lt;/li&gt;
&lt;li&gt;&lt;a href="./IPC"&gt;IPC&lt;/a&gt; — the separate Pipe/Signal/Transmission live-data channels&lt;/li&gt;
&lt;li&gt;&lt;a href="./Data-Locations"&gt;Data-Locations&lt;/a&gt; — where the executables and data live on disk&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bayram Emekli</dc:creator><pubDate>Sat, 04 Jul 2026 04:15:17 -0000</pubDate><guid>https://sourceforge.netb9ad675c73aded04f999a12d94235daf76ff0da5</guid></item></channel></rss>