A snippet is text you reuse. A variable is a piece written between braces, for example {date}. When you insert the snippet, CMDglows replaces it with its value. The saved snippet keeps the variable: it is only computed at insertion.
The variables
| Variable | What it inserts |
|---|---|
{date} | Today’s date, as dd/MM/yyyy |
{date:yyyy-MM-dd} | Today’s date in the format you choose, for example 2026-10-29 |
{time} | The time, as HH:mm |
{time:HH:mm:ss} | The time with seconds |
{clipboard} | The last copied text |
{selection} | The text selected when you open the palette |
{uuid} | A unique identifier, different at each insertion |
{argument:Name} | A value you type at each insertion |
{cursor} | Where the cursor lands after insertion |
For dates and times, the format letters are: yyyy (4-digit year), yy (2-digit year), MM and M (month), dd and d (day), HH and H (24-hour hour), mm (minutes), ss (seconds). Other characters are copied as they are.
Variable names are not case-sensitive: {DATE} works too.
Asking for a value with {argument}
{argument:Client} asks you for a value at each insertion. If you write {argument:Client} twice, both places receive the same value.
What happens depends on where you insert:
- Chrome extension palette: one field appears for each argument name. The text updates as you type.
- Android keyboard, Windows bar, automatic expansion: no field. The argument stays empty and the cursor lands where it was. You type the value there.
Changing the result
Add | and a modifier inside the braces:
{clipboard | uppercase}
q={selection | trim | percent-encode}
{uuid | uppercase}
Available modifiers:
uppercase: all capitals.lowercase: all lowercase.trim: removes spaces at the start and end.percent-encode: encodes text for a web address (key wordbecomeskey%20word).json-stringify: writes the text as a JSON string, in quotes, with special characters escaped.
You can chain several, from left to right. If a modifier name is unknown, the variable stays as written in the text, without an error.
Writing braces without a variable
If you want text that looks like a variable, double the opening brace: {{date} inserts as {date}. Braces that are not a recognised variable also stay as written: a JSON fragment such as {"a": 1} is unchanged.
Where each variable works
| Variable | Chrome extension | Windows bar (Ctrl+Alt+Space) | Android keyboard |
|---|---|---|---|
{date}, {time}, {uuid}, {cursor} | Yes | Yes | Yes |
{clipboard} | Yes, after you grant the clipboard permission from the popup | Yes | Yes |
{selection} | Yes, in the palette | No, empty | No, empty |
{argument:Name} | Yes, with a field | No, empty: the cursor lands on it | No, empty: the cursor lands on it |
Examples
- A follow-up note:
On {date} at {time}, {argument:Client} replied. {cursor} - A search link:
https://www.example.com/search?q={selection | trim | percent-encode} - A ticket reference:
TICKET-{uuid | uppercase}
Good to know
- Variables are computed at each insertion. A
{date}snippet gives the day’s date on the day you use it. - If a variable cannot be read (empty or inaccessible clipboard), it becomes empty instead of blocking the insertion.
- Only the first
{cursor}counts: later ones are removed.