chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 12:28:17 +08:00
commit f7546d43cc
322 changed files with 158599 additions and 0 deletions
+202
View File
@@ -0,0 +1,202 @@
<h4>Syntax Rules for Configuration Files</h4>
<br>
<p>This chapter describes the syntax rules for the configuration files.</p>
<p>The main configuration file <a href="#shell.nss"><code>shell.nss</code></a> is located in the installation directory of
<strong>Shell</strong>, depending on your <a href="/docs/installation">installation method</a>.
</p>
<h5 id="syntax-general">General rules</h5>
<ul>
<li>Syntax is case-insensitive.</li>
<li>Spaces around the equal (<code>=</code>) sign are optional and are ignored.</li>
<li>The properties of <a href="/docs/configuration/modify-items">modify-items</a> and <a href="/docs/configuration/new-items">new-items</a> items are separated
by blank spaces or on a <a href="#breaking-long-lines">separate line</a> and must be placed in
parentheses <code>( )</code>.
</li>
<li>Other configuration files can be imported using the <a href="#import">import tag</a>.
</li>
</ul>
<div class="notification is-info">
<i>Tip:</i> When there is an error, it is recorded in the log file (<code>shell.log</code>, which is also located in
your <a href="/docs/installation">installation directory</a>.).
</div>
<h5 id="shell.nss">shell.nss structure</h5>
<p>The global section <code>shell{}</code> may have the following subsections:</p>
<ul>
<li>Section <a href="/docs/configuration/settings">settings{}</a>. Optional.</li>
<li>Section <a href="/docs/configuration/modify-items">modify-items</a> with
instructions on how to <strong>change existing menuitems</strong>. Optional.
<ul>
<li>modify-items are only of 2 type: modify and remove.</li>
</ul>
</li>
<li>Section <a href="/docs/configuration/new-items">modify-items</a> with
definitions for <strong>new <a href="/docs/configuration/new-items#menuitem">menuitems</a></strong>.
Optional.
<ul>
<li>Dynamic <a href="/docs/configuration/new-items#menuitem">menuitems</a>
may have one of three types: <a href="/docs/configuration/new-items#menu">menu</a>, <a href="/docs/configuration/new-items#item">item</a>, or <a href="/docs/configuration/new-items#separator">separator (sep)</a>.
</li>
</ul>
</li>
</ul>
<h5 id="syntax-example">Example</h5>
<pre><code class="lang-shell">// variable declaration
$variable-name = variable-value
//image declaration
@image-id = image-value
settings
{
key-name = key-value
key-name = [key-value, key-value, ...]
...
}
theme
{
key-name = key-value
...
}
// modify items
modify ( property-name = property-value ... )
remove ( property-name = property-value ... )
// new items
item ( property-name = property-value ... )
separator [( property-name = property-value ... )]
menu ( property-name = property-value ... )
{
$variable-name = variable-value
item ( property-name = property-value ... )
...
}</code></pre>
<br>
<h4 id="breaking-long-lines">Breaking Long Lines</h4>
<p>For best readability, users often like to avoid lines longer than 80 characters. single
quotes also allow break up a line.</p>
<pre><code class="lang-shell">item(title='Command prompt'
cmd='cmd.exe')
</code></pre>
<br>
<h4 id="import">Import tag</h4>
<p>To better organise the configuration file, parts of the configuration can be saved in separate files. These are then
imported using the import tag. With this method, it is also possible to import the same file as a sort of "module"
into different parts of the configuration. A convenient way to include the same sub-menu in different
locations..</p>
<h5 id="import-syntax">Syntax</h5>
<p>The general syntax is as follows:</p>
<pre><code class="lang-shell">import %path%</code></pre>
<p>Where</p>
<ul>
<li id="import-syntax-section"><code>%section%</code> is the name of a section. Optional. If given, it must be one
of
<ul>
<li>settings</li>
<li>themes</li>
<li>modify-items</li>
<li>new-items</li>
</ul>
The section name is written literally, without any quotes (or the percent signs).
</li>
<li id="import-syntax-path"><code>%path%</code> is a <a href="/docs/expressions/string">string</a> literal, that returns the path to the
config file that shall be imported. This can be a relative path to the location of the file where the import tag is used, or it can be an absolute path. Expressions are
supported when using <a href="/docs/expressions/string#single-quotes">single quotes</a>.
</li>
</ul>
<p>There are effectively two different ways this tag is applied, depending on whether the optional
<code>%section%</code> is given:</p>
<ul>
<li>Import an entire section</li>
<li>Import as a partial:</li>
</ul>
<h5 id="import-section">Import an entire section</h5>
<pre><code class="lang-shell">// import an entire section
import %path%
</code></pre>
In this case, the content of the file found at <code>%path%</code> will be imported into<strong> a newly
created</strong> <code>section{}</code>.
The result would then look like so:
<pre><code class="lang-shell">// import an entire section
section {
/* content of the imported file goes here! Do not include
*
* section {
* }
*
* in your imported file!
*/
}</code></pre>
<p>This syntax may be used only in the following places: </p>
<ul>
<li><s>root section shell{}: <code>shell import %path%</code></s>
</li>
<li>the global sections
<ul>
<li><s>settings{}: <code>import %path%</code></s></li>
</ul>
</li>
<li>
sub-sections of the settings{} section:
<ul>
<li><s>theme.background{}: <code>background import
%path%</code></s></li>
<li><s>theme.item{}: <code>item import
%path%</code></s></li>
<li><s>theme.border{}: <code>border import
%path%</code></s></li>
<li><s>...</s></li>
<li><s>settings.tip{}: <code>tip import %path%</code></s></li>
<li><s>settings.exclude{}: <code>exclude import
%path%</code></s></li>
<li><s>settings.modify{}: <code>static import %path%</code></s>
</li>
<li><s>settings.new{}: <code>dynamic import
%path%</code></s></li>
</ul>
</li>
</ul>
<h5 id="import-partial">Import as a partial</h5>
<pre><code class="lang-shell">section {
// some code might go here. Optional.
// import of a partial section
import %path%
// some more content might go here. Optional.
}</code></pre>
In this case, the content of the file found at <code>%path%</code> will be imported into the <strong>already
existing</strong> <code>section{}</code>.
The result would then look like so:
<pre><code class="lang-shell">section {
// some code might go here. Optional.
// import of a partial section
/* content of the imported file goes here! Do not include
*
* section {
* }
*
* in your imported file!
*/
// some more content might go here. Optional.
}</code></pre>
<p>This syntax may be used nearly anywhere: </p>
<ul>
<li>in any section</li>
<li>in the body of <a href="/docs/configuration/new-items#menu">menu tags</a>
</li>
</ul>
+62
View File
@@ -0,0 +1,62 @@
<h4 id="_top">Modify Items</h4>
<br>
<p>The optional <code>modify</code> section contains entries to <strong>modify existing context menu items</strong>,
added by the system or by a third party.</p>
<h5 id="sub-items">Sub-items</h5>
<p>The section can have the following entry types, all of which are <strong>optional</strong>:</p>
<ul>
<li>One or more <a href="#item"><code>item</code> entries</a>.
These contain the instructions on which and how to change existing <a href="/docs/configuration/new-items#menuitem">menuitems</a>.
</li>
<li>One or more <a href="/docs/configuration#import"><code><code>imports</code></code></a>. The content of the
given file will be placed in the position of the import.
</li>
</ul>
<h5 id="example">Example</h5>
<p>In the following example, two instructions are defined:</p>
<pre><code class="lang-shell">modify(find = 'copy' image = #00ff00)
modify(find = 'paste' image = #0000ff)
remove(find = '"format"')</code></pre>
<br>
<h4 id="item">Item Entries</h4>
<p><code>item</code> entries contain the instructions on how to identify existing <a href="/docs/configuration/new-items#menuitem">menuitems</a> (also referred to as <a href="#target">Target</a>), and when and what changes should be applied
to them.</p><p>This is done by matching an existing <a href="/docs/configuration/new-items#menuitem">menuitem</a>'s <a href="/docs/configuration/properties#title"><code>title</code></a> property against the modify item's mandatory <a href="/docs/configuration/properties#find"><code>find</code></a> property. If a match is found, the other properties of the modify
<code>item</code> are applied to the appropriate <a href="/docs/configuration/new-items#menuitem">menuitem</a>, such as changing their properties (e.g. <a href="/docs/configuration/properties#title"><code>title</code></a>, <a href="/docs/configuration/properties#image"><code>icon</code></a>, <a href="/docs/configuration/properties#visibility"><code>visibility</code></a>), or moving them to another location.</p>
<h5 id="item-syntax">Syntax</h5>
<pre><code class="lang-shell">modify( find = value [property = value [...] ])</code></pre>
<br/>
<h5 id="item-properties">Properties</h5>
<p><code>item</code> entries can define three different sets of properties:</p>
<dl>
<dt><a href="/docs/configuration/properties#_validation-properties">Validation Properties</a></dt>
<dd>Determine if a given <code>item</code> entry should be processed when a context menu is displayed. Optional.
</dd>
<dt><a href="/docs/configuration/properties#_filter-properties">Filter Properties:</a></dt>
<dd>Determine if a given menuitem is a valid <a href="#target">target</a>
for the <a href="#process-instructions">process instructions</a>
<ul>
<li><a href="/docs/configuration/properties#find"><code>find</code></a> <strong>(mandatory)</strong><br/>
Pattern used to identify <a href="#target">targets</a> by matching against their <a href="/docs/configuration/properties#title"><code>title</code></a> property.
</li>
<li><a href="/docs/configuration/properties#in"><code>in</code></a><br/>
Used to identify <a href="#target">targets</a> by specifying the submenu in which they are located.
</li>
</ul>
</dd>
<dt><a href="#process-instructions">Process Instructions</a></dt>
<dd>Define what to do with the target. Optional. However, if there are no <a href="#process-instructions">process instruction</a> specified, the entry is of no practical use. For
further details refer to its separate section
<a href="#process-instructions">below</a>.
</dd>
</dl>
<p>For a complete overview and further details regarding applicable properties, please refer to the <a href="/docs/configuration/properties">properties page</a>.</p>
<h4 id="target">Item Target</h4>
<p>Item targets are <a href="/docs/configuration/new-items#menuitem">menuitems</a> of an existing context menu. Their properties or location can
be changed by applying the <a href="#process-instructions">process instructions</a> defined in a <a href=#item">modify <code>item</code></a>.</p>
<h5 id="process-instructions">Process instructions</h5>
<p>Instructions that should be applied to the <a href="#target">Target</a>. Basically they consist of properties from the two property
classes <a href="/docs/configuration/properties#_menuitem-properties">menuitem properties</a> and <a href="/docs/configuration/properties#_command-properties">command properties</a>.</p>
<p>Once a <code>item</code> is validated and a target identified, then these values are applied to the targeted
<a href="/docs/configuration/new-items#menuitem">menuitem</a>.</p>
+105
View File
@@ -0,0 +1,105 @@
<h4 id="_top">New Items</h4>
<br/>
<p>Add <strong>new items</strong> to the context menu.</p>
<h5 id="sub-items">Sub-items</h5>
<p>The section can have the following entry types, all of which are <strong>optional</strong>:</p>
<ul>
<li>Menuitems, i.e. one or more of the following:
<ul>
<li>One or more <a href="#item"><code>item</code> entries</a>.
These appear as top-level items in a context menu.
</li>
<li>One or more <a href="#menu"><code>menu</code> entries</a>.
These appear as top-level sub-menus in a context menu.
</li>
<li>One or more <a href="#separator"><code>separator</code> entries</a>. These create a
horizontal line between the given entries.
</li>
</ul>
</li>
<li>One or more <a href="/docs/configuration#import"><code><code>imports</code></code></a>. The content of the given file will be placed in the
position of the import.
</li>
</ul>
<h5 id="example">Example</h5>
<p>In the following example, one top-level <a href="#item"><code>item</code></a> is created, that is
separated with a <a href="#separator">horizontal line</a> from an adjacent sub-<a href="#menu">menu</a>, which in turn has one sub-<a href="#item">item</a>
on its own:</p>
<pre><code class="lang-shell">item(title = 'Hello, World!')
separator
menu(title = 'sub menu' image = #0000ff)
{
item(title = 'test sub-item')
}</code></pre>
<br/>
<h4 id="menuitem">Menuitems</h4>
<p>menuitem is an umbrella term for those entry types, that may appear in a
menu. These simply include the following:</p>
<ul>
<li><a href="#item"><code>item</code></a></li>
<li><a href="#menu"><code>menu</code></a></li>
<li><a href="#separator"><code>separator</code></a></li>
</ul>
<br/>
<h4 id="item">Items</h4>
<p>items create a single menu entry.</p>
<h5 id="item-properties">Properties</h5>
<p>Either a <a href="/docs/configuration/properties#title"><code>title</code></a> or a <a href="/docs/configuration/properties#image"><code>image</code></a> property is mandatory (set to a non-null value). For further details,
please refer to the <a href="/docs/configuration/properties">properties page</a>.</p>
<h5 id="item-syntax">Syntax</h5>
<pre><code class="lang-shell">item( title = value [property = value [...] ])</code></pre>
<br/>
<h4 id="menu">Menus</h4>
<p>menu entries create a new <strong>sub-menu</strong>. They have properties
and sub-entries.</p>
<h5 id="menu-properties">Properties</h5>
<p>Either a <a href="/docs/configuration/properties#title"><code>title</code></a> or a <a href="/docs/configuration/properties#image"><code>image</code></a> property is mandatory (set to a non-null value). For further details,
please refer to the <a href="/docs/configuration/properties">properties page</a>.</p>
<h5 id="menu-sub-items">Sub-items</h5>
<p>menus can have the following entry types, all of which are
<strong>optional</strong>:</p>
<ul>
<li>Menuitems, i.e. one or more of the following:
<ul>
<li>One or more <a href="#item"><code>item</code> entries</a>.</li>
<li>One or more sub-<a href="#menu"><code>menu</code> entries</a>.</li>
<li>One or more <a href="#separator"><code>separator</code> entries</a>. These create a
horizontal line between the given entries.
</li>
</ul>
</li>
<li>One or more <a href="/docs/configuration#import"><code><code>imports</code></code></a>. The content of the
given file will be placed in the position of the import.
</li>
</ul>
<h5 id="menu-syntax">Syntax</h5>
<pre><code class="lang-shell">menu( title = value [property = value [...] ])
{
[ item() [...] ]
[ menu(){} [...] ]
[ separator [...] ]
[ import 'path/to/import.nss' [...] ]
}</code></pre>
<br/>
<h4 id="separator">Separators</h4>
<p>separators create a horizontal line.</p>
<h5 id="separator-properties">Properties</h5>
<p>separators do not have any mandatory properties. Please refer to the <a href="/docs/configuration/properties">properties page</a> for further details.</p>
<h5 id="separator-syntax">Syntax</h5>
<pre><code class="lang-shell">separator
separator( property = value [property = value [...] ])</code></pre>
+967
View File
@@ -0,0 +1,967 @@
<h4 id="_top">Properties</h4>
<style>
dt {
font-weight: 700;
}
dd dt {
font-weight: 400;
}
dd {
margin-bottom: 2em;
}
ul.fold, #_index-list {
padding-left: 0;
}
ul.fold, #_index-list li {
display: inline;
list-style: none;
}
ul.fold > li, #_index-list li {
display: inline;
}
ul.fold > li:after, #_index-list li li:after {
content: ", ";
}
ul.fold > li:last-child:after, #_index-list li li:last-child:after {
content: "";
}
</style>
Shell supports the following properties classes:
<ul>
<li><a href="#_validation-properties">Validation Properties</a></li>
<li><a href="#_filter-properties">Filter Properties</a></li>
<li><a href="#_menuitem-properties">Menuitem Properties</a></li>
<li><a href="#_command-properties">Command Properties</a></li>
</ul>
<p>Please also see the full index of available properties <a href="#_index">below</a>.</p>
<h5 id="_index">Index</h5>
<ul id="_index-list" class="m-0 p-0 mb-4">
<li>
<ul>
<li><a href="#admin">Admin</a></li>
<li><a href="#arguments">arg</a></li>
<li><a href="#arguments">args</a></li>
<li><a href="#arguments">Arguments</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#checked">Checked</a></li>
<li><a href="#command">cmd</a></li>
<li><a href="#column">col</a></li>
<li><a href="#column">Column</a></li>
<li><a href="#command">Command</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#default">Default</a></li>
<li><a href="#directory">dir</a></li>
<li><a href="#directory">Directory</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#expanded">Expanded</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#find">Find</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#image">Icon</a></li>
<li><a href="#image">Image</a></li>
<li><a href="#invoke">Invoke</a></li>
<li><a href="#in">In</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#keys">Keys</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#mode">Mode</a></li>
<li><a href="#parent">Menu</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#parent">Parent</a></li>
<li><a href="#position">pos</a></li>
<li><a href="#position">Position</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#separator">sep</a></li>
<li><a href="#separator">Separator</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#tip">Tip</a></li>
<li><a href="#title">Title</a></li>
<li><a href="#type">Type</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#verb">Verb</a></li>
<li><a href="#visibility">vis</a></li>
<li><a href="#visibility">Visibility</a></li>
</ul>
</li>
<li>
<ul>
<li><a href="#wait">Wait</a></li>
<li><a href="#where">Where</a></li>
<li><a href="#window">Window</a></li>
</ul>
</li>
</ul>
<h4 id="_syntax">Syntax</h4>
<h5 id="_entry-types">Entry types</h5>
<p>In the following tables, the Types column shows to which entry types the
property applies to.</p>
<p>The following abbreviations are used (if set in bold, then the property is mandatory for the given type):
</p>
<dl>
<dt>mi</dt>
<dd><a href="/docs/configuration/modify-items#item">modify item</a>, i.e. the
item
entry itself. Is basically required to evaluate if the process instructions are applied to any given target.
</dd>
<dt>mt</dt>
<dd><a href="/docs/configuration/modify-items#target">modify target</a>, i.e.
the menuitem of the existing menu to which the process instructions are applied
</dd>
<dt>nm</dt>
<dd><a href="/docs/configuration/new-items#menu">new menu type</a></dd>
<dt>ni</dt>
<dd><a href="/docs/configuration/new-items#item">new item type</a></dd>
<dt>ns</dt>
<dd><a href="/docs/configuration/new-items#separator">new separator type</a>.
</dd>
</dl>
<!--<h5 id="_property-classes">Property Classes</h5>-->
<h5 id="_validation-properties">Validation Properties</h5>
<p>Determine if a given <a href="/docs/configuration/modify-items">Modify items</a>
or <a href="/docs/configuration/new-items">New items</a> entry should be
processed when a context menu is displayed.</p>
<br/>
<ul class="fold">
<li><a href="#mode">Mode</a></li>
<li><a href="#type">Type</a></li>
<li><a href="#where">Where</a></li>
</ul>
<br/>
<br/>
<div id="_validation-syntax" class="table-responsive">
<h6>Syntax</h6>
<table class="table">
<thead>
<tr>
<th scope="col">Property</th>
<th scope="col">Types<sup><a href="#_entry-types">(*)</a></sup></th>
<th scope="col">Summary</th>
</tr>
</thead>
<tbody>
<tr id="where">
<td>Where</td>
<td>mi, nm, ni, ns</td>
<td>Process given menuitem if <code>true</code> is returned. Allows the <strong>evaluation of arbitrary
<a href="/docs/expressions">expressions</a></strong>, e.g. <a href="/docs/functions#if"><code>if()</code></a>.<br/>
Default = <span class="syntax-keyword">true</span>
</td>
</tr>
<tr id="mode">
<td>Mode</td>
<td>mi, nm, ni, ns</td>
<td>Display menuitem by <strong>type of selection</strong>. The value has one of the following
parameters
(of type <a href="/docs/configuration/modify-items">string</a>):
<table class="table">
<tr>
<td class="syntax-keyword">none</td>
<td>Display menuitem when there is no selection.</td>
</tr>
<tr>
<td class="syntax-keyword">single</td>
<td>Display menuitem when there is a single object selected.</td>
</tr>
<tr>
<td class="syntax-keyword">multi_unique</td>
<td>Display menuitem when multiple objects of the same <a href="#type">type</a> are selected.
</td>
</tr>
<tr>
<td class="syntax-keyword">multi_single</td>
<td>Display menuitem when multiple files with a single file extension are selected.</td>
</tr>
<tr>
<td class="syntax-keyword">multiple</td>
<td>Display any type of selection, unless there is none.</td>
</tr>
</table>
Default = <span class="syntax-keyword">single</span>
</td>
</tr>
<tr id="type">
<td>Type</td>
<td>mi, nm, ni, ns</td>
<td>Specifies the <strong>types of objects</strong> for which the menuitem will be displayed.<br/>
Possible values are shown below. Separate multiple types with the pipe character (<code>|</code>),
in
which case the menuitem is displayed if any of the given types is matched.<br/>
To exclude a given type, prefix its value with the tilde character (<code>~</code>).
<p class="has-text-danger">Expressions are not supported with this property.</p>
<table class="table">
<tr id="type-asterisks">
<td class="syntax-keyword">*</td>
<td>Display menuitem when any type is selected.</td>
</tr>
<tr id="type-file">
<td class="syntax-keyword">File</td>
<td>Display menuitem when files are selected.</td>
</tr>
<tr id="type-directory">
<td class="syntax-keyword">Directory(Dir)</td>
<td>Display menuitem when directories are selected.</td>
</tr>
<tr id="type-drive">
<td class="syntax-keyword">Drive</td>
<td>Display menuitem when drives are selected.</td>
</tr>
<tr id="type-usb">
<td class="syntax-keyword">USB</td>
<td>Display menuitem when USB flash-drives are selected.</td>
</tr>
<tr id="type-dvd">
<td class="syntax-keyword">DVD</td>
<td>Display menuitem when DVD-ROM drives are selected.</td>
</tr>
<tr id="type-fixed">
<td class="syntax-keyword">Fixed</td>
<td>Display menuitem when fixed drives are selected. Such drives have a fixed media; for
example, a hard disk drive or flash drive.
</td>
</tr>
<tr id="type-vhd">
<td class="syntax-keyword">VHD</td>
<td>Display menuitem when Virtual Hard Disks are selected.</td>
</tr>
<tr id="type-removable">
<td class="syntax-keyword">Removable</td>
<td>Display menuitem when the selected drives have removable media; for example, a floppy drive,
thumb drive, or flash card
reader.
</td>
</tr>
<tr id="type-remote">
<td class="syntax-keyword">Remote</td>
<td>Display menuitem when the selected remote (network) drives are selected.</td>
</tr>
<tr id="type-back">
<td class="syntax-keyword">Back</td>
<td>Display menuitem when the background of all types are selected (<code>back</code>). Or
specify one of
the following more granular types for the background:
<ul>
<li>
<code>back.directory</code>
</li>
<li>
<code>back.drive</code>, including
<ul>
<li><code>back.fixed</code></li>
<li><code>back.usb</code></li>
<li><code>back.dvd</code></li>
<li><code>back.vhd</code></li>
<li><code>back.Removable</code></li>
</ul>
</li>
<li>
<code>back.namespace</code>, including
<ul>
<li><code>back.computer</code></li>
<li><code>back.recyclebin</code></li>
</ul>
</li>
</ul>
</td>
</tr>
<tr id="type-desktop">
<td class="syntax-keyword">Desktop</td>
<td>Display menuitem when the Desktop is selected.</td>
</tr>
<tr id="type-namespace">
<td class="syntax-keyword">Namespace</td>
<td>Display menuitem when Namespaces are selected. Can be virtual objects such as My Network Places and Recycle Bin.
</td>
</tr>
<tr id="type-computer">
<td class="syntax-keyword">Computer</td>
<td>Display menuitem when My Computer is selected.</td>
</tr>
<tr id="type-recyclebin">
<td class="syntax-keyword">Recyclebin</td>
<td>Display menuitem when the Recycle bin is selected.
</td>
</tr>
<tr id="type-taskbar">
<td class="syntax-keyword">Taskbar</td>
<td>Display menuitem when the Taskbar is selected.
</td>
</tr>
</table>
Default = <span class="syntax-keyword">Accepts all types, except for the Taskbar.</span>
</td>
</tr>
<tbody>
</tbody>
</table>
</div>
<h5 id="_filter-properties">Filter Properties</h5>
<p>For <a href="/docs/configuration/modify-items">Modify items</a> entries only,
filter properties determine if a given menuitem is a valid <a href="/docs/configuration/modify-items#target">target</a> for the <a href="/docs/configuration/modify-items#process-instructions">process instructions</a></p>
<ul class="fold">
<li><a href="#find">Find</a></li>
<li><a href="#in">In</a></li>
</ul>
<div id="_filter-syntax" class="table-responsive">
<h6>Syntax</h6>
<table class="table">
<thead>
<tr>
<th scope="col">Property</th>
<th scope="col">Types<sup><a href="#_entry-types">(*)</a></sup></th>
<th scope="col">Summary</th>
</tr>
</thead>
<tbody>
<tr id="find">
<td>Find</td>
<td>nm, ni, ns</td>
<td>
<dl>
<dt>For modify items (required)</dt>
<dd>Apply the current item's process instructions to any existing menuitem if their <a href="#title"><code>title</code></a> property matches the
pattern of the current item's <code>find</code> property.
</dd>
<dt>For dynamic items (optional)</dt>
<dd><p>Display the current menuitem if the pattern of its <code>find</code> property matches the
path name or path extension
of the <strong>selected files</strong>.</p>
<p>Default = <span class="syntax-keyword">null</span>, which means any string is "matched".
</p>
</dd>
<dt>Syntax</dt>
<dd>
<pre><code>find = '%pattern%'
find = '%pattern%|%pattern%[...]'</code></pre>
<p>where <strong>%pattern%</strong> can be one or
more
matching instructions (see Examples below). The
following characters do have special meaning:</p>
<ul>
<li><code>|</code> <strong>Use to separate patterns.</strong> If any one pattern
matches,
the property yields
<span class="syntax-keyword">true</span>.
</li>
<li><code>*</code> <strong>Matches any number of characters.</strong> Is used as a
wildcard
to
match only the beginning or the end of the entire string (or word, if used in
combination with the exclamation mark <code>!</code>).
</li>
<li><code>!</code> <strong>Negates the match</strong> of the current pattern, or
<strong>limits
the wildcard (<code>*</code>)</strong> to one word only.
</li>
<li><code>""</code> the enclosed string is treated as a <strong>word</strong>.
</li>
</ul>
<p>A <strong>word</strong> is a sequence of
alphanumerical characters that is confined to the left and to the right by either a
space
<code> </code>, a non-word character (e.g. <code>/</code> or <code>-</code>), or the
beginning or the end of the entire string, respectively.</p></dd>
<dt>Examples</dt>
<dd>
<div class="table-container">
<table class="table">
<thead>
<tr>
<th>Pattern</th>
<th class="is-two-thirds">Matches any string that ...</th>
<th>Would match</th>
<th>Would not match</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>'foo'</code></td>
<td>contains the literal string <code>foo</code> anywhere.</td>
<td><code>foo</code>, <code>foobar</code>, <code>afoobar</code></td>
<td><code>fo</code>, <code>f oo</code>, <code>bar</code></td>
</tr>
<tr>
<td><code>'"foo"'</code></td>
<td>contains the literal string <code>foo</code> as a whole word
only.
</td>
<td><code>foo</code>, <code>foo/bar</code>, <code>some foo bar</code></td>
<td><code>foobar</code>, <code>foofoo</code>, <code>bar</code></td>
</tr>
</tbody>
<tbody>
<tr>
<td><code>'*foo'</code></td>
<td>ends with the literal string <code>foo</code>.</td>
<td><code>foo</code>, <code>barfoo</code>, <code>bar/foo</code></td>
<td><code>foobar</code>, <code>fooo</code>, <code>foo </code></td>
</tr>
<tr>
<td><code>'foo*'</code></td>
<td>starts with the literal string <code>foo</code>.
</td>
<td><code>foo</code>, <code>foobar</code>, <code>foo/bar</code></td>
<td><code> foobar</code>, <code>fo</code>, <code>yeti</code></td>
</tr>
</tbody>
<tbody>
<tr>
<td><code>'!foo'</code></td>
<td>does not contain the literal string <code>foo</code> anywhere.
</td>
<td><code>fobar</code>, <code>fo</code>, <code>kung-fu</code></td>
<td><code>foo</code>, <code>foobar</code>, <code>barfoo/bar</code></td>
</tr>
<tr>
<td><code>'!"foo"'</code></td>
<td>does not contain the word
<code>foo</code></td>
<td><code>fobar</code>, <code>kung fu bar</code>, <code>foobar</code></td>
<td><code>foo</code>, <code>kung foo bar</code>, <code>bar/foo/bar</code></td>
</tr>
<tr>
<td><code>'!*foo'</code></td>
<td>does not contain a word ending on
<code>foo</code></td>
<td><code>foobar</code>, <code>fooo-fo</code></td>
<td><code>foo</code>, <code>foo bar</code>, <code>bar/foo</code></td>
</tr>
<tr>
<td><code>'foo*!'</code></td>
<td>does not contain a word starting with
<code>foo</code></td>
<td><code>myFooBar</code>, <code>barFoo</code></td>
<td><code>foo</code>, <code>foobar</code>, <code>fo-fooo</code></td>
</tr>
</tbody>
<tbody>
<tr>
<td colspan="4">
<p><br/>For dynamic items the following syntax allows to match against file
extensions:<br/><br/></p>
</td>
</tr>
</tbody>
<thead>
<tr>
<th>Pattern</th>
<th>Matches any file extension ...</th>
<th>Would match</th>
<th>Would not match</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>'.exe'</code></td>
<td>equal to <code>.exe</code></td>
<td><code>setup.exe</code>, <code>notepad.exe</code></td>
<td><code>install.bat</code>, <code>shell.nss</code>, <code>shell.ex_</code>,
file
without an extension.
</td>
</tr>
<tr>
<td><code>'!.exe'</code></td>
<td>not equal to <code>.exe</code></td>
<td><code>setup.exe.zip</code>, <code>video.mp4</code>, <code>shell.ex_</code>,
file
without an extension.
</td>
<td><code>setup.exe</code>, <code>shell.exe</code></td>
</tr>
</tbody>
<tbody>
<tr>
<td><code>'.exe|.dll'</code></td>
<td>equal to either <code>.exe</code> or <code>.dll</code></td>
<td><code>shell.exe</code>, <code>shell.dll</code>
</td>
<td><code>shell.zip</code>, <code>shell.nss</code>, file
without an extension.
</td>
</tr>
</tbody>
</table>
</div>
</dd>
</dl>
</td>
</tr>
<tr id="in">
<td>In</td>
<td>mi</td>
<td> Specifies the <strong>existing submenu</strong> where the <strong>modify target</strong> is located.</br>
<strong>Syntax</strong><br/>
<pre><code class="lang-shell">in = "New"
in = "Sort By"</code></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h5 id="_menuitem-properties">Menuitem Properties</h5>
<p>This set of properties describe the appearance and location of a given menuitem. For modify-items, this is the target menuitem. For dynamic entries, this is the newly created menuitem.</p>
<dl>
<dt>Appearance</dt>
<dd>
<ul class="fold">
<li><a href="#checked">Checked</a></li>
<li><a href="#default">Default</a></li>
<li><a href="#image">Image</a></li>
<li><a href="#separator">Separator</a></li>
<li><a href="#tip">Tip</a></li>
<li><a href="#title">Title</a></li>
<li><a href="#visibility">Visibility</a></li>
</ul>
</dd>
<dt>Location</dt>
<dd>
<ul class="fold">
<li><a href="#column">Column</a></li>
<li><a href="#expanded">Expanded</a></li>
<li><a href="#keys">Keys</a></li>
<li><a href="#parent">Menu</a></li>
<li><a href="#parent">Parent</a></li>
<li><a href="#position">Position</a></li>
</ul>
</dd>
</dl>
<div id="_menuitem-syntax" class="table-responsive">
<h6>Syntax</h6>
<table class="table">
<thead>
<tr>
<th scope="col">Property</th>
<th scope="col">Types<sup><a href="#_entry-types">(*)</a></sup></th>
<th scope="col">Summary</th>
</tr>
</thead>
<tbody>
<tr id="title">
<td>Title</td>
<td>st, <strong>nm</strong>, <strong>ni</strong>
</td>
<td><p>Sets the <strong>caption</strong> of the menuitem.</p>
<dl>
<dt>For modify-items (optional)</dt>
<dd><p>Default = <span class="syntax-keyword">null</span>, which means the title of the target
is
not changed.</p></dd>
<dt>For dynamic items (required)</dt>
<dd><p class="text-danger">It is mandatory for <a href="/docs/configuration/dynamic#menu">menu</a> and <a href="/docs/configuration/dynamic#menu">item</a> entries, unless a <a href=#image"><code>image</code></a> property is defined.</p>
</dd>
</dl>
</td>
</tr>
<tr id="visibility">
<td>Visibility (vis)</td>
<td>st, nm, ni, ns</td>
<td>Sets the <strong>visibility</strong> of a menuitem. Can have one of the following parameters:
<table class="table">
<tr id="visibility-hidden">
<td class="syntax-keyword">Hidden</td>
<td>Hide the menuitem.</td>
</tr>
<tr id="visibility-normal">
<td class="syntax-keyword">Normal</td>
<td>Enable the menuitem.</td>
</tr>
<tr id="visibility-disable">
<td class="syntax-keyword">Disable</td>
<td>Disable the menuitem.</td>
</tr>
<tr id="visibility-static">
<td class="syntax-keyword">Static</td>
<td>Display menuitem as label, with or without an <a href=#image"><code>image</code></a></td>
</tr>
<tr id="visibility-label">
<td class="syntax-keyword">Label</td>
<td>Display menuitem as label without an image</td>
</tr>
</table>
<div class="notification is-info mt-5">
<i class="mr-4">Note:</i> The values Static and Label are not available for modify-items.
</div>
Default = <span class="syntax-keyword">Normal</span>
</td>
</tr>
<tr id="separator">
<td>Separator (sep)</td>
<td>st, nm, ni</td>
<td>Add a <strong>separator</strong> to the menuitem:
<table class="table">
<tr id="separator-none">
<td class="syntax-keyword">None</td>
<td>Not adding a separator with the menuitem.</td>
</tr>
<tr id="separator-before">
<td class="syntax-keyword">Before, Top</td>
<td>Add a separator before the menuitem.</td>
</tr>
<tr id="separator-after">
<td class="syntax-keyword">After, Bottom</td>
<td>Add a separator after the menuitem.</td>
</tr>
<tr id="separator-both">
<td class="syntax-keyword">Both</td>
<td>Add a separator before and after the menuitem.</td>
</tr>
</table>
Default = <span class="syntax-keyword">none</span>
</td>
</tr>
<tr id="position">
<td>Position (pos)</td>
<td>st, nm, ni, ns</td>
<td>The <strong>position</strong> at which a menuitem should be inserted into the <a href="/docs/configuration/dynamic#menu">menu</a>.<br/>
Position can have one of the following parameters:
<table class="table">
<tr id="position-auto">
<td class="syntax-keyword">Auto</td>
<td>Insert the menuitem to the current position.</td>
</tr>
<tr id="position-middle">
<td class="syntax-keyword">Middle</td>
<td>Insert the menuitem to the middle of the <a href="/docs/configuration/dynamic#menu">menu</a>.
</td>
</tr>
<tr id="position-top">
<td class="syntax-keyword">Top</td>
<td>Insert the menuitem to the top of the <a href="/docs/configuration/dynamic#menu">menu</a>.
</td>
</tr>
<tr id="position-bottom">
<td class="syntax-keyword">Bottom</td>
<td>Insert the menuitem to the bottom of the <a href="/docs/configuration/dynamic#menu">menu</a>.
</td>
</tr>
<tr id="position-integer">
<td><code>Integer</code></td>
<td>Insert the menuitem to a specified position.</td>
</tr>
</table>
Default = <span class="syntax-keyword">auto</span>
</td>
</tr>
<tr id="image">
<td>Image, Icon</td>
<td>st, nm, ni</td>
<td>The <strong>icon</strong> that appears in a menuitem. This property can be assigned as image files,
resource icons, glyph
or color. With one of the following parameters
<table class="table">
<tr id="image-null">
<td class="syntax-keyword">null</td>
<td>Show menuitem without icon.</td>
</tr>
<tr id="image-inherit">
<td class="syntax-keyword">Inherit</td>
<td>@*Inheriting the image from the parent.*@
Inherits this property from its parent item.
</td>
</tr>
<tr id="image-cmd">
<td class="syntax-keyword">Cmd</td>
<td>Assign image from the command property.</td>
</tr>
<tr id="image-glyph">
<td class="syntax-keyword">Glyph</td>
<td>Assign image as Glyph.</td>
</tr>
<tr id="image-color">
<td class="syntax-keyword">Color</td>
<td>Assign image as color.</td>
</tr>
<tr id="image-path">
<td class="syntax-keyword">Path</td>
<td>Assign image from location path or resource icon.</td>
</tr>
</table>
<div class="notification is-info mt-5">
<i class="mr-4">Note:</i>The value Cmd is not available for modify-items
targets.
</div>
Default = <span class="syntax-keyword">null</span>
</td>
</tr>
<tr id="parent">
<td>Parent, Menu</td>
<td>st, nm, ni, ns</td>
<td><p><strong>Move current menuitem</strong> to another <a href="/docs/configuration/dynamic#menu">menu</a>.</p>
Default = <span class="syntax-keyword">null</span></td>
</tr>
<tr id="checked">
<td>Checked</td>
<td>st, ni</td>
<td><strong>Type of select option</strong>:
<table class="table">
<tr id="checked-0">
<td class="syntax-keyword">0</td>
<td>Not checked</td>
</tr>
<tr id="checked-1">
<td class="syntax-keyword">1</td>
<td>Display as check mark.</td>
</tr>
<tr id="checked-2">
<td class="syntax-keyword">2</td>
<td>Display as radio bullet.</td>
</tr>
</table>
Default = <span class="syntax-keyword">0</span>
</td>
</tr>
<tr id="default">
<td>Default</td>
<td>st, ni</td>
<td>
<p>Specifies that the <a href="/docs/configuration/dynamic#item">item</a> is the default. A <a href="/docs/configuration/dynamic#menu">menu</a> can contain only one default
menuitem, which is <strong>displayed in bold</strong>.</p>
Default = <span class="syntax-keyword">false</span>
</td>
</tr>
<tr id="expanded">
<td>Expanded</td>
<td>nm</td>
<td>
<p>Move all immediate menuitems to the parent <a href="/docs/configuration/dynamic#menu">menu</a>.</p>
Default = <span class="syntax-keyword">false</span>
</td>
</tr>
<tr id="column">
<td>Column(col)</td>
<td>nm, ni</td>
<td><p>Create a new <strong>column</strong>.</p>
Default = <span class="syntax-keyword">true</span>
</tr>
<tr id="keys">
<td>Keys</td>
<td>st, nm, ni</td>
<td><p>Show <strong>keyboard shortcuts</strong>.</p>
Default = <span class="syntax-keyword">null</span></td>
</tr>
<tr id="tip">
<td>Tip</td>
<td>st, nm, ni</td>
<td>
<p>Show a <strong>tooltip</strong> for the current <a href="/docs/configuration/dynamic#menu">menu</a> or <a href="/docs/configuration/dynamic#item">item</a>.</p>
Default = <span class="syntax-keyword">null</span><br/>
<strong>Syntax</strong><br/>
<pre><code class="lang-shell">tip = "Lorem Ipsum is simply dummy text."
tip = ["Lorem Ipsum is simply dummy text.", tip.info]
tip = ["Lorem Ipsum is simply dummy text.", tip.info, 1.2]</code></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h5 id="_command-properties">Command Properties</h5>
<p>This set of properties describe how a command is executed. Only available for dynamic items.</p>
<ul class="fold">
<li><a href="#admin">Admin</a></li>
<li><a href="#arguments">Arguments</a></li>
<li><a href="#command">Command</a></li>
<li><a href="#directory">Directory</a></li>
<li><a href="#invoke">Invoke</a></li>
<li><a href="#verb">Verb</a></li>
<li><a href="#wait">Wait</a></li>
<li><a href="#window">Window</a></li>
</ul>
<div id="_command-syntax" class="table-responsive">
<h6>Syntax</h6>
<table class="table">
<thead>
<tr>
<th scope="col">Property</th>
<th scope="col">Types<sup><a href="#_entry-types">(*)</a></sup></th>
<th scope="col">Summary</th>
</tr>
</thead>
<tbody>
<tr id="command">
<td>Command (cmd)</td>
<td>ni</td>
<td><p>The <strong>command</strong> associated with the menuitem. Occurs when the menuitem is clicked or
selected using a shortcut key or access key defined for the menuitem.</p>
Default = <span class="syntax-keyword">null</span>
</td>
</tr>
<tr id="arguments">
<td>Arguments (arg, args)</td>
<td>ni</td>
<td><p>The <strong>command line parameters</strong> to pass to the <a href=#command">command</a> property of a menuitem.</p>
Default = <span class="syntax-keyword">null</span>
</td>
</tr>
<tr id="invoke">
<td>Invoke</td>
<td>ni</td>
<td>Set <strong>execution type</strong>
<table class="table">
<tr id="invoke-single">
<td class="syntax-keyword">0, single</td>
<td>execute the <a href="#command">command</a> only once in total. The list of selected
items can be accessed with <a href="/docs/functions/sel#sel"><code>@sel</code></a>
</td>
</tr>
<tr id="invoke-multiple">
<td class="syntax-keyword">1, multiple</td>
<td>execute the <a href="#command"><code>command</code></a> once for every single item in the current
selection. The currently processed item can be accessed with e.g <a href="/docs/functions/sel#sel.path.quote"><code>@sel.path.quote</code></a>
</td>
</tr>
</table>
Default = <span class="syntax-keyword">0</span>
</td>
</tr>
<tr id="window">
<td>Window</td>
<td>ni</td>
<td>Controls how the <strong>window</strong> of the executed <a href="#command">command</a> is to be shown. Can be one of the following
parameters:
<p class="syntax-keyword"><code>Hidden</code>, <code>Show</code>, <code>Visible</code>,
<code>Minimized</code>, <code>Maximized</code></p>
Default = <span class="syntax-keyword">show</span>
</td>
</tr>
<tr id="directory">
<td>Directory (dir)</td>
<td>ni</td>
<td><p>Specifies the <strong>working directory</strong> to
execute
the <a href="#command">command</a> in.</p>
Default = <span class="syntax-keyword">null</span>
</td>
</tr>
<tr id="admin">
<td>Admin</td>
<td>ni</td>
<td><p>Execute the <a href="#command">command</a>
with <strong>administrative permissions</strong>.</p>
Default = <span class="syntax-keyword">false</span>
</td>
</tr>
<tr id="verb">
<td>Verb</td>
<td>ni</td>
<td>Specifies the <strong>default operation</strong> for the selected file. Value type <a href="/docs/configuration/modify-items">string</a>
and can have one of the following parameters:<br/>
<table class="table">
<tr id="verb-null">
<td>null</td>
<td>Specifies that the operation is the default for the selected file type.</td>
</tr>
<tr id="verb-open">
<td>Open</td>
<td>Opens a file or an application.</td>
</tr>
<tr id="verb-openas">
<td>OpenAs</td>
<td>Opener dialog when no program is associated to the extension.</td>
</tr>
<tr id="verb-runas">
<td>RunAs</td>
<td>In Windows 7 and Vista, opens the UAC dialog andin others, open the Run as... Dialog.</td>
</tr>
<tr id="verb-edit">
<td>Edit</td>
<td>Opens the default text editor for the file.</td>
</tr>
<tr id="verb-explore">
<td>Explore</td>
<td>Opens the Windows Explorer in the folder specified in Directory.</td>
</tr>
<tr id="verb-properties">
<td>Properties</td>
<td>Opens the properties window of the file.</td>
</tr>
<tr id="verb-print">
<td>Print</td>
<td>Start printing the file with the default application.</td>
</tr>
<tr id="verb-find">
<td>Find</td>
<td>Start a search.</td>
</tr>
</table>
Default = <span class="syntax-keyword">open</span>
</td>
</tr>
<tr id="wait">
<td>Wait</td>
<td>ni</td>
<td>
<p><strong>Wait</strong> for the <a href="#command">command</a>
to complete.</p>
Default = <span class="syntax-keyword">false</span>
</td>
</tr>
</tbody>
</table>
</div>
+87
View File
@@ -0,0 +1,87 @@
<h4>Settings</h4>
<br><br>
<p>Settings are containers for storing default values.</p>
<pre><code class="lang-shell">settings
{
// show menu delay value from 0 to 4000
showdelay = 200
// Prevent interaction with these windows or processes
exclude
{
where = boolean value
window = window name
process = process name
}
tip = true
// or
tip
{
enabled = true
// normal = [background, text]
normal = [default, default]
// normal = [background, text]
primary = [#000, #fff]
// info = [background, text]
info = [#88f, #fff]
// success = [background, text]
success = [#8f8, #fff]
// warning = [background, text]
warning = [#ff8, #fff]
// danger = [background, text]
danger = [#f88, #fff]
// max width value from 200 to 2000
width = 400
// opacity value from 0 to 100
opacity = 100
// radius size value from 0 to 3
radius = 1
time = 1.5
padding = [8, 4]
}
// Disable/Enable modify items processing
modify
{
enabled = boolean value
image = [0 = disable, 1 = enable, 2 = auto reimage]
// Allow/disallow modification of title
title = boolean value
// Allow/disallow modification of visibility
visibility = boolean value
// Allow/disallow modification of parent
parent = boolean value
// Allow/disallow modification of position
position = boolean value
// Allow/disallow to add separator
separator = boolean value
// auto set image and group
auto = boolean value
}
// Disable/Enable new items processing
new
{
enabled = boolean value
// disable/enable image
image = boolean value
}
}</code></pre>
+218
View File
@@ -0,0 +1,218 @@
<h4>Themes</h4>
<br><br>
<p>Theme section to customize the layout and colors of the context menu.</p>
<pre><code class="lang-shell">theme
{
// theme.name = auto, classic, white, black, or modern
name = "modern"
// view = auto, compact, small, medium, large, wide
view = view.compact
// dark = true, false, default
dark = default
background
{
color = color value
opacity = value from 0 to 100
// effect value 0 = disable, 1 = transparent, 2 = blur, 3 = acrylic
effect = auto
// for acrylic
effect = [3, tint color, opacity]
gradient
{
enabled = boolean value
// linear = [x1, x2, y1, y2]
linear = [0, 100, 0, 0]
// or radial = [cx, cy, r, fx, fy]
radial =[ 100, 100, 150, 100, 100]
// stop = [offset, stop-color]
stop = [0.5, color.accent, 20]
// or add more stop
stop = [
[offset, stop-color],
[offset, stop-color],
[offset, stop-color]
]
}
}
item
{
opacity = value from 0 to 100
radius = value from 0 to 3
// prefix value [auto, 0 = dont display, 1 = display, 2 = ignore]
prefix = 1
text
{
normal = color
normal.disabled = color
select = color
select.disabled = color
}
back
{
normal = color
normal.disabled = color
select = color
select.disabled = color
}
border
{
normal = color
normal.disabled = color
select = color
select.disabled = color
}
padding
{
left = value
top = value
right = value
bottom = value
}
margin
{
left = value
top = value
right = value
bottom = value
}
}
border
{
enabled = boolean value
size = value from 0 to 10
color = = value
opacity = value
radius = value
padding
{
left = value
top = value
right = value
bottom = value
}
}
shadow
{
enabled = boolean value
size = value from 0 to 30
color = value
opacity = value from 0 to 100
offset = value from 0 to 30
}
font
{
size = value start from 6
name = "tahoma"
weight = value from 1 to 9
italic = 0
}
separator
{
size = value form 0 to 40
color = value
opacity = value
margin
{
left = value
top = value
right = value
bottom = value
}
}
symbol
{
normal = color
normal.disabled = color
select = color
select.disabled = color
// or
chevron
{
normal = color
normal.disabled = color
select = color
select.disabled = color
}
checkmark
{
normal = color
normal.disabled = color
select = color
select.disabled = color
}
bullet
{
normal = color
normal.disabled = color
select = color
select.disabled = color
}
}
image
{
enabled = boolean value
color = [color1, color2, color3]
gap = value
glyph = "font name" // font name for default glyph
scale = boolean value
align = value
[0= Display only the check mark,1 = Display only the image,2 = Display image & checkheck mark together]
}
layout
{
// Right-to-left layout display for Middle Eastern languages
rtl = boolean value
// Align submenus
popup = value from -20 to 20
}
}</code></pre>
<h3>Padding and Margin value syntax</h3>
<p>Use the padding shorthand property with four values:</p>
<code>padding = [1, 2, 3, 4]</code>
<pre class="mt-2"><code>left = 1
right = 2
top = 3
bottom = 4</code></pre>
<p>Use the padding shorthand property with two values:</p>
<code>padding = [4, 2]</code>
<pre class="mt-2"><code>left = 4
right = 4
top = 2
bottom = 2</code></pre>
<p>Use the padding shorthand property with one value:</p>
<code>padding = 4</code>
<pre class="mt-2"><code>left = 4
right = 4
top = 4
bottom = 4</code></pre>