COMMENT
ππ¨π π π₯ππ«
β½βΌβ»βΊβΊβ»βΌβ½β½βΌβ»βΊβΊβ»βΌβ½β½βΌβ»βΊβΊβ»βΌβ½β½βΌβ»βΊβΊβ»βΌβ½
π
ππππππ: 2.0.1
ππππππππ·ππ ππππ πππ πππππππ ππ ππππ ππππππππ: https://routinehub.co/shortcut/8261/
ππππππ πππ ππππππππ/ππππ: https://www.reddit.com/user/PEKKA_SLAYER
ππππππππ·ππ: PEKKA_SLAYER
ππππππ: PEKKA_SLAYER
SCRIPTING
If
Shortcut Input
does not have any value
DICTIONARY

Dictionary
DOCUMENTS
DOCUMENTS
Create Folder
Path
/Shortcuts/Toggler/Toggles
DOCUMENTS
Create Folder
Path
/Shortcuts/Toggler/FirstCheck
DOCUMENTS
Get File
File Path
/Shortcuts/example.txt

File
TEXT
version

Text
SCRIPTING
If
Text
is not
File
SCRIPTING
Set name of
Text
to
Version

Renamed Item
DOCUMENTS
Save
Renamed Item
Destination Path
/Shortcuts/Toggler/FirstCheckOverwrite If File Exists

Saved File
SCRIPTING
If
File
does not have any value
TEXT
<html>
<head>
<title>Welcome to Toggler</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<style>
body {
background-color:#f2f2f2;
color:#333333;
font-family: system-ui;
margin-left: auto;
margin-right: auto;
padding: 5%;
max-width: 650px;
}
p{
font-size:18px;
color:black;
font-weight:400;
}
.slogan {
font-size:22px;
font-weight:600px;
color:#E7A253;
text-align:center;
}
h1{
font-size:35px;
font-weight:200;
}
.title {
font-weight:800;
font-size:55px;
margin-top:-40;
color:#E7A253;
text-align:center;
}
h2{
font-weight:600;
font-size:33px;
color:black;
}
img {
height:75px;
width:75px
margin-top:-20px;
}
strong {color:#007AFF;}
span {color:#E7A253;}
@media (prefers-color-scheme: dark) {
body {
background-color: #1C1C1E;
color: #AAAAAA;
}
p {
color: #AAAAAA;
}
h2{
color:white;
}
}
</style>
</head>
<body>
<h1>Welcome To</h1>
<h2 class="title">Toggler</h2>
<center><img src="data:image/jpeg;base64,
base img.icon
"></center>
<p class="slogan">What Shortcuts Were Originally Made To Do</p>
<h2>Create Routines</h2>
<p>A Toggle is a collection of switches that if ran, instantaneously switch to the value you preselected. With <span>Toggler</span>, you can create and edit toggles to fit your needs. Toggler is easy-to-use and each toggle contains all the following switches:</p>
<ul>
<li>Cellular Data</li>
<li>Wi-Fi</li>
<li>Bluetooth</li>
<li>Airplane Mode</li>
<li>DND</li>
<li>Low Power Mode</li>
<li>Play Music</li>
<li>Appearance</li>
<li>Volume</li>
<li>Brightness</li>
<li>Flashlight</li>
<li>AssistiveTouch</li>
<li>Audio Descriptions</li>
<li>Classic Invert</li>
<li>Close Captions+SDH</li>
<li>Smart Invert</li>
<li>Reduce Motion</li>
<li>Reduce Transparency</li>
<li>Mono Audio</li>
<li>LED Flash</li>
<li>Increase Contrast</li>
<li>Start Guided Access</li>
<li>Zoom</li>
<li>VoiceOver</li>
<li>White Point</li>
<li>Voice Control</li>
<li>Switch Control</li>
</ul>
<p>You may be thinking to yourself "just another useless control center shortcut", but no, this is not one of those. Once you have created toggles, they can speed up tasks that otherwise takes 13 clicks with as little as one click. You can even run toggles on automation or in other shortcuts easily with just 3 actions.</p>
<p>Read the βDocumentationβ in the main menu to find out more, or explore the shortcut by yourself (make sure you're careful because some switches like voice control can be hard to disable).</p>
<p>Tap <strong>Done</strong> to continue. And I hope you enjoy <span>Toggler</span>!</p>
</body>
</html>

Text
DOCUMENTS
Make rich text from
Text

Rich Text from HTML
DOCUMENTS
Show
Rich Text from HTML
in Quick Look
SCRIPTING
End If

If Result
TEXT
<html>
<head>
<title>Toggler Version
version
</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<style>
body {
background-color:#f2f2f2;
color:#333333;
font-family: system-ui;
margin-left: auto;
margin-right: auto;
padding: 5%;
max-width: 650px;
}
p{
font-size:18px;
color:black;
font-weight:400;
}
h1{
font-size:35px;
font-weight:200;
}
.title {
font-weight:800;
font-size:55px;
margin-top:-40;
color:#E7A253;
text-align:center;
}
h2{
font-weight:600;
font-size:33px;
color:black;
}
img {
height:75px;
width:75px;
margin-top:-20px;
}
a {color:#E7A253;}
strong {color:#007AFF;}
span {color:#E7A253;}
ul {
margin-left:-15px;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #1C1C1E;
color: #AAAAAA;
}
p {
color: #AAAAAA;
}
h2{
color:white;
}
}
</style>
</head>
<body>
<h1>Version
version
</h1>
<h2 class="title">Toggler</h2>
<center><img src="data:image/jpeg;base64,
base img.icon
"></center>
<h2>Version Notes</h2>
<p>There is nothing big thatβs been added or changed. Although, I did make Wi-Fi toggleable and fixed other Wi-Fi bugs.</p>
<h2>Version Changes</h2>
<ul>
<li>Wi-Fi can now be toggled.</li>
<li>Added a "Wi-Fi is Weird" rule in the Documentation</li>
<li>Wi-Fi can now turn on if it is βNot Connectedβ (in the Control Center).</li>
<li>Connected the main dictionary to a text to make it easier when changing values (this does nothing to help the user).</li>
</ul>
<p>Tap <strong>Done</strong> to continue.</p>
</body>
</html>

Text
DOCUMENTS
Make rich text from
Text

Rich Text from HTML
DOCUMENTS
Show
Rich Text from HTML
in Quick Look
SCRIPTING
End If

If Result
DOCUMENTS
Get File
File Path
/Shortcuts/example.txt

File
VARIABLES
Set variable
Files
to
File
SCRIPTING
Repeat with each item in
Files

Repeat Results
TEXT
BEGIN:VCARD
N;CHARSET=utf-8:
Repeat Item
;;;;
PHOTO;ENCODING=b:
icons.project
END:VCARD

Text
SCRIPTING
End Repeat

Repeat Results
TEXT
BEGIN:VCARD
N;CHARSET=utf-8:Create;;;;
EMAIL:Create
PHOTO;ENCODING=b:
icons.create
END:VCARD
Repeat Results
BEGIN:VCARD
N;CHARSET=utf-8:Download;;;;
EMAIL:Download
PHOTO;ENCODING=b:
icons.help
END:VCARD
BEGIN:VCARD
N;CHARSET=utf-8:Documentation;;;;
EMAIL:Documentation
PHOTO;ENCODING=b:
icons.exit
END:VCARD
BEGIN:VCARD
N;CHARSET=utf-8:Exit;;;;
EMAIL:Exit
PHOTO;ENCODING=b:
icons.download
END:VCARD

Text
SCRIPTING
Set name of
Text
to
Menu.vcf

Renamed Item
SCRIPTING
Choose from
Renamed Item

Chosen Item
SCRIPTING
If
Chosen Item
is
Exit
SCRIPTING
Exit shortcut with
Result
SCRIPTING
Otherwise
SCRIPTING
If
Chosen Item
is
Download
SCRIPTING
TEXT
Clipboard

Text
TEXT
<meta charset="utf-8">
<script>
file =
Text
var list = ["Appearance","Orientation Lock","Reduce Motion","Bluetooth","Brightness","Audio Descriptions","Classic Invert","LED Flash","Voice Control","Airplane Mode","Mono Audio","VoiceOver","Close Captions+SDH","Flashlight","Low Power Mode","Switch Control","Play Music","Increase Contrast","Start Guided Access","Zoom","Cellular Data","Wi-Fi","AssistiveTouch","Smart Invert","Volume","DND","Reduce Transparency","White Point"]
var valid = true
for(var item of list) {
if(file[item] === undefined) {
var valid = false
}
}
if(valid) {
document.write("true")
}
</script>

Text
URL
data:text/html;text,
Text

URL
SCRIPTING
Get file of type
com.apple.webarchive
from
URL

File of Type
SCRIPTING
If
Get File of Type
is
true
TEXT
Combine
Files
with
Custom
.

Combined Text
SCRIPTING
Repeat
100 times

Repeat Results
SCRIPTING
If
Name
does not have any value
SCRIPTING
Ask
Name Of Toggle
β’ You will not be able to change it
β’ You must have a different name than all other toggles
β’ You must input at least one none-whitespace character
β’ periods and double quotes will be removed: Β«.Β» and Β«"Β»

Provided Input
DOCUMENTS
Replace
\.|"
with
World
in
Provided Input

Updated Text
TEXT
<meta charset="utf-8">
<script>
var input = "
Updated Text
"
var inputText = input
input = input.match(/\S/)
var names = "
Combined Text
"
names = names.split(".")
if(input === null) {
document.write("false")
}
else {
for(var name of names) {
if(name === inputText) {
document.write("false")
}
}
}
</script>

Text
URL
data:text/html;text,
Text

URL
SCRIPTING
Get file of type
com.apple.webarchive
from
URL

File of Type
SCRIPTING
If
Get File of Type
is
false
SCRIPTING
SCRIPTING
Otherwise
VARIABLES
Set variable
Name
to
Updated Text
SCRIPTING
Get dictionary from
Text

Dictionary
SCRIPTING
Set name of
Dictionary
to
Name

Renamed Item
DOCUMENTS
Save
Renamed Item
Destination Path
/Shortcuts/Toggler/TogglesOverwrite If File Exists

Saved File
VARIABLES
Set variable
File
to
Saved File
SCRIPTING
End If

If Result
SCRIPTING
End If

If Result
SCRIPTING
End Repeat

Repeat Results
SCRIPTING
Otherwise
SCRIPTING
SCRIPTING
End If

If Result
SCRIPTING
Otherwise
SCRIPTING
If
Chosen Item
is
Documentation
TEXT
<html>
<head>
<title>Documentation</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<style>
body {
background-color:#f2f2f2;
color:#333333;
font-family: system-ui;
margin-left: auto;
margin-right: auto;
padding: 5%;
max-width: 650px;
}
p{
font-size:18px;
color:black;
font-weight:400;
}
h1{
font-size:35px;
font-weight:200;
}
.title {
font-weight:800;
font-size:55px;
margin-top:-40;
color:#E7A253;
text-align:center;
}
h2{
font-weight:600;
font-size:33px;
color:black;
}
h3 {
font-weight:600;
font-size:25px;
color:black;
}
h4 {
font-weight:600;
font-size:20px;
color:black;
}
img{width:80%;border-radius:10px;}
.icon {
height:75px;
width:75px;
margin-top:-20px;
border-radius:0px;
}
a {color:#E7A253;}
span {color:#E7A253;}
.b {color:#007AFF;}
ul {
margin-left:-15px;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #1C1C1E;
color: #AAAAAA;
}
p {
color: #AAAAAA;
}
h2,h3,h4{
color:white;
}
}
</style>
</head>
<body>
<h1>Documentation</h1>
<h2 class="title">Toggler</h2>
<center><img class="icon" src="data:image/jpeg;base64,
base img.toggle
"></center>
<h2>Editing/Creating Toggles</h2>
<h3>What Is A Toggle</h3>
<p>A Toggle is a collection of <strong>switches</strong> that if ran, instantaneously switch to the value you preselected. With <span>Toggler</span>, you can create and edit toggles to fit your needs.</p>
<h3>Parts Of A Toggle</h3>
<p>The image below is what the main editing menu will look like. At the top is the toggleβs name in double quotes. The menu options are either <strong>switches</strong> or <strong>non-switches</strong>.</p>
<center><img src="data:image/jpeg;base64,
base img.icon
"></center>
<h4>Non-Switch</h4>
<p>You can tell what a <strong>non-switches</strong> is by the images. They have icons in their image and are all the same style. <strong>non-switches</strong> each have different functions. The "Save & Exit" option exits the shortcut and the toggle will be saved. "Home" returns to the main menu. "Settings Switches" brings up another menu with more settings-based <strong>switches</strong>. It also has a "Back" <strong>non-switches</strong> that returns to the main editing menu.</p>
<h4>Switch</h4>
<p>These menu options have images that are one or two coloured. They <em>are</em> the toggle. Each <strong>switch</strong> has 3 parts, the name, image and <strong>value</strong>. The name (such as Bluetooth or Airplane Mode), is the thing that can change (like to on or off) when the toggle is run. The image and <strong>value</strong> go hand-in-hand and are explained below.</p>
<h4>Value</h4>
<p>The <strong>value</strong> is the subtitle shown beneath the <strong>switch</strong> name (such as "Unchanged"). The <strong>value</strong> is what the <strong>switch</strong> name will change to when the toggle is run (such as "Wi-Fi to Off"). Different switches have different possible <strong>values</strong>. You can tap on a switch to edit the value. The images in the switch also correspond to the <strong>value</strong>, each different <strong>value</strong> has different images.</p>
<h2>Running Toggles</h2>
<p>When you run a toggle, all the switches instantaneously change to the values you choose them to be.</p>
<p>Hereβs an example. Letβs say you have a toggle with the following switches that are <strong>not</strong> "Unchanged" (switches with an "Unchanged" value do not change when the toggle is run).</p>
<ul>
<li>Appearance - Dark</li>
<li>Wi-Fi - Off</li>
<li>Cellular Data - On</li>
<li>Volume - 30</li>
<li>Smart Invert - Toggle</li>
<li>Flashlight - On to 50</li>
</ul>
<p>When you run this toggle, the following things happen:</p>
<ul>
<li>Appearance will turn to dark mode</li>
<li>Wi-Fi will be turned off</li>
<li>Cellular Data will be turned on</li>
<li>Volume will be turned to 30%</li>
<li>Smart Invert will be toggled (if on, it will be turned off. If off, it will be turned on)</li>
<li>Flashlight will turn on to 50%</li>
</ul>
<p><strong>Wi-Fi is Weird</strong> - When toggling Wi-Fi, it will turn off only if you're <strong>connected</strong> to Wi-Fi, not if you are <strong>searching</strong> for a connection. If Wi-Fi is not connected, it will be toggled on and try to connect.</p>
<h2>Running In Automations And Shortcuts</h2>
<p>You are not limited to only this shortcut to run your toggles with, you can run a toggle in any shortcut or automation using the following code:</p>
<center><img src="data:image/jpeg;base64,
base img.code
"></center>
<ol>
<li>Add a "Get File" action</li>
<li>Toggle off "Show Document Picker"</li>
<li>Enter "Toggler/Toggles" as the file path (<em>/Shortcuts/Toggler/Toggles</em> is the full file path)</li>
<li>Toggle off "Error If Not Found" if you would like to</li>
<li>Add a "Filter Files" action below the "Get File"</li>
<li>Add a filter to the "Filter Files". Filter where "Name" "Is" "<em>Toggle name case sensitive</em>"</li>
<li>Add a "Run Shortcut" action below the "Filter Files"</li>
<li>Select to run <span>Toggler</span></li>
<li>Make sure that the "Run Shortcut" has an Input of the "Filter Files", now your done</li>
</ol>
<p>Here is a shortcut that provides an example of how you can run a toggle from automation or in a shortcut. It also allows you to quickly run your toggles: <a href="https://www.icloud.com/shortcuts/98614e6cd33a4d299c70f62ccd64fad1">Toggler Quick Run</a></p>
<h2>Sharing And Downloading</h2>
<p><span>Toggler</span> gives you the ability to share your toggles to other people and receive/download them as well. To share and download, you will need to follow these steps:</p>
<ol>
<li>Make sure that both the Sender and Receiver are on the same version of <span>Toggler</span>, or, even better, check for an update on <a href="https://routinehub.co/shortcut/8261/">RoutineHub</a> to each be on the newest version.</li>
<li>Then the Sender will send (using iMessages) one of their toggles to the Receiver using the "Share" menu option (after you click a toggle in the main menu, it's below "Edit").</li>
<li>The toggle will send as a json file. The Receiver will now be able to copy the full file: Click on the file. Next, tap on the share icon in the bottom left corner. Then tap "Copy".</li>
<li>The Receiver will run <span>Toggler</span> (after making sure they have the json copied). They will click "Download" in the main menu, choose their toggleβs name and then they will have the toggle to use.</li>
</ol>
<h2>Feedback</h2>
<p>If you have any feedback regarding bugs or other errors, suggestions, or if you need some help understanding the shortcut, you can reach me on <a href="https://www.reddit.com/user/PEKKA_SLAYER">reddit</a> or post to <a href="https://routinehub.co/shortcut/8261/">this shortcutβs RoutineHub page</a>.</p>
<h2>Updates</h2>
<p>All updates will take place on <a href="https://routinehub.co/">RoutineHub</a>. You can check for an update by going to <a href="https://routinehub.co/shortcut/8261/">this shortcutβs RoutineHub page</a>.</p>
<p>Tap <strong class="b">Done</strong> to continue.</p>
</body>
</html>

Text
DOCUMENTS
Make rich text from
Text

Rich Text from HTML
DOCUMENTS
Show
Rich Text from HTML
in Quick Look
SHORTCUTS

Shortcut Result
SCRIPTING
Exit shortcut with
Result
SCRIPTING
Otherwise
SCRIPTING
If
Chosen Item
is
Create
TEXT
Combine
Files
with
Custom
.

Combined Text
SCRIPTING
Repeat
100 times

Repeat Results
SCRIPTING
If
Name
does not have any value
SCRIPTING
Ask
Name Of Toggle
β’ You will not be able to change it
β’ You must have a different name than all other toggles
β’ You must input at least one none-whitespace character
β’ periods and double quotes will be removed: Β«.Β» and Β«"Β»

Provided Input
DOCUMENTS
Replace
\.|"
with
World
in
Provided Input

Updated Text
TEXT
<meta charset="utf-8">
<script>
var input = "
Updated Text
"
var inputText = input
input = input.match(/\S/)
var names = "
Combined Text
"
names = names.split(".")
if(input === null) {
document.write("false")
}
else {
for(var name of names) {
if(name === inputText) {
document.write("false")
}
}
}
</script>

Text
URL
data:text/html;text,
Text

URL
SCRIPTING
Get file of type
com.apple.webarchive
from
URL

File of Type
SCRIPTING
If
Get File of Type
is
false
SCRIPTING
SCRIPTING
Otherwise
VARIABLES
Set variable
Name
to
Updated Text
SCRIPTING
Set name of
starting toggle
to
Name

Renamed Item
DOCUMENTS
Save
Renamed Item
Destination Path
/Shortcuts/Toggler/TogglesOverwrite If File Exists

Saved File
VARIABLES
Set variable
File
to
starting toggle
SCRIPTING
End If

If Result
SCRIPTING
End If

If Result
SCRIPTING
End Repeat

Repeat Results
SCRIPTING
Otherwise
VARIABLES
Set variable
Name
to
Chosen Item
FILES
Filter
Files
where
[{'class': 'filter-property', 'value': 'Name'}, {'class': 'filter-operator', 'value': 'is'}, {'class': 'filter-benchmark inline', 'value': [{'class': 'magic', 'value': 'Name', 'glyph': 'assets/cat/Variable.svg', 'UUID': ''}]}]

Files
VARIABLES
Set variable
File
to
Files
SCRIPTING
End If

If Result
SCRIPTING
End If

If Result
SCRIPTING
End If

If Result
SCRIPTING
End If

If Result
SCRIPTING
If
Name
has any value
TEXT
BEGIN:VCARD
N;CHARSET=utf-8:Run Toggle;;;;
PHOTO;ENCODING=b:
icons.delete
END:VCARD
BEGIN:VCARD
N;CHARSET=utf-8:Edit;;;;
PHOTO;ENCODING=b:
icons.run
END:VCARD
BEGIN:VCARD
N;CHARSET=utf-8:Share;;;;
PHOTO;ENCODING=b:
icons.back
END:VCARD
BEGIN:VCARD
N;CHARSET=utf-8:Delete;;;;
PHOTO;ENCODING=b:
icons.exit
END:VCARD
BEGIN:VCARD
N;CHARSET=utf-8:Main Menu;;;;
PHOTO;ENCODING=b:
icons.share
END:VCARD
BEGIN:VCARD
N;CHARSET=utf-8:Exit;;;;
PHOTO;ENCODING=b:
icons.edit
END:VCARD

Text
SCRIPTING
Set name of
Text
to
Menu.vcf

Renamed Item
SCRIPTING
Choose from
Renamed Item
Prompt
[{'value': 'Toggle "', 'class': 'text'}, {'class': 'magic', 'value': 'Name', 'glyph': 'assets/cat/Variable.svg', 'UUID': ''}, {'value': '"', 'class': 'text'}]

Chosen Item
SCRIPTING
If
Chosen Item
is
Share