System
Sleep, lock, restart, dark mode, volume, keep awake
palupdated 2026-10-27SystemComes with palMenu bar: Keep Awake2 deep links
Comes with pal, so a new install already has it; the button finds it in pal again if you removed it. This page can't see what your pal has installed.




What it does
System commands from the keyboard: sleep, lock, restart, shut down, empty the trash, dark mode, volume, brightness, eject, quit every app, clear notifications. Keep the computer awake for a while, until a time or while an app runs, with a countdown on the bar.
- Type
mute,sleeporpower offat the root to find the command - Only what this machine can do is listed; Empty Trash shows how much is in it, Dark Mode the current look
- Keep Awake for
45m,2h, until14:30or while an app runs; the bar counts down, and it ends on time even if pal quits - Quit All Apps asks each app the usual way, so unsaved work still prompts; Unhide All Apps and Dismiss Notifications too
- Log Out, Restart, Shut Down and Empty Trash ask first (a setting)
- Quick Look on what is selected in Finder (macOS)
Palettes 1
-
System
systemliveWhat this machine can do from here; Keep Awake takes how long in the bar.
- ↵Run the command; on Keep Awake, for what the bar says (the default when blank); Allow Sleep while a run is on
- ⌘↵On Keep Awake: until turned off
- ⌘UOn Keep Awake: a form for a time, an app to follow and the display
- ⌘DOn Allow Sleep: keep the display awake too, or let it sleep
Actions
- RunThe command; Log Out, Restart, Shut Down, Empty Trash and Quit All Apps ask first.↵
- Keep awakeOn Keep Awake: for what the bar's field says, else the default; cmd+enter until turned off; cmd+u the form (a time, an app to follow, the display).↵
- Allow sleepOn the row while a run is on; cmd+d flips whether the display is kept awake too.↵
Links 2
System answers these pal:// routes from a web page, a script or a keybind; pal call is the same route from a terminal. A link from a page asks first unless you trust the extension. How links work.
-
Run a system command
runasks firstpal call system/run id=<id>id*sleep, lock, logout, restart, shutdown, empty-trash, dark-mode, volume-up, volume-down, volume-mute, brightness-up, brightness-down, dnd, eject-all, show-desktop, keep-awake (the toggle: the default duration, or off), quit-all, unhide-all, dismiss-notifications, quick-look-selection (macOS)
-
Keep the machine awake, or let it sleep
awakepal call system/awakeforHow long: 45m, 2h, 1h30m, or a clock time like 14:30, or forever; blank with nothing else toggles (the default duration, or off while on)untilThe same as for; a clock time reads best here (tomorrow's when today's has passed)displayKeep the display awake too (the setting otherwise)appAn app with a window open: the run ends when it quits (caffeinate -w)offAllow sleep now
Settings
Extension, [extensions.system]
confirm_destructiveLog Out, Restart, Shut Down, Empty Trash and Quit All Apps show a confirmation first; off runs them at once.
awake_defaultWhat a bare Keep Awake runs for: 45m, 2h, 1h30m, a clock time like 14:30, or forever.
awake_displayOn: neither the machine nor the display sleeps (caffeinate -d -i). Off: the display may sleep while the machine stays up, for a download or a build. The row's Display field and the popover's switch override it per run.
Defaults shown. Change them in pal's settings window or in the config file.
The README
Everything System does, key by key, from the extension's own README.md
System
Sleep, lock, log out, restart, shut down, empty the trash, dark mode,
volume, brightness, do not disturb, eject, show desktop, keep awake (for a
while, until a time, or while an app runs, with a countdown on the bar),
quit or unhide every app, dismiss notifications. The rows are indexed, so
mute or sleep at the root finds them (each carries keywords:
suspend, power off, bin); live because the Keep Awake row reads
Allow Sleep with the time left while a run is on, and a live palette lists
again on every show. pal hides the panel before running a command, so it
lands on the desktop, not on pal.
Only commands this machine can run are listed:
| command | macOS | Linux |
|---|---|---|
| Sleep | pmset sleepnow |
systemctl suspend |
| Sleep Displays | pmset displaysleepnow |
Hyprland (hyprctl dispatch dpms off) or Sway (swaymsg output * dpms off) only |
| Lock Screen | the login framework's immediate lock, falling back to the Cmd+Ctrl+Q keystroke (which needs Accessibility) | loginctl lock-session |
| Log Out | System Events | hyprctl dispatch exit, swaymsg exit, else loginctl terminate-session |
| Restart, Shut Down | System Events | systemctl reboot, systemctl poweroff |
| Empty Trash | Finder | gio trash --empty |
| Toggle Dark Mode | System Events appearance | gsettings color-scheme between default and prefer-dark |
| Volume Up, Down, Toggle Mute | 10% steps, System Events | wpctl, else pactl, 10% steps |
| Brightness Up, Down | needs the brightness CLI on PATH; hidden otherwise |
brightnessctl, 10% steps |
| Toggle Do Not Disturb | runs a Shortcut named "Toggle Do Not Disturb"; hidden until you create one (Focus has no CLI) | swaync-client, makoctl or dunstctl; hidden with none |
| Eject All Disks | Finder | not available |
| Show Desktop | Mission Control | not available |
| Keep Awake / Allow Sleep | caffeinate -i (-di with the display), -t for the deadline, -w to follow an app; below |
systemd-inhibit --what=sleep (idle:sleep with the display) around sleep <secs>, tail --pid, or timeout; hidden with no systemd-inhibit, a hint row says so |
| Quit All Apps | System Events: every regular app but Finder and pal asked to quit, one by one, so an app with unsaved work still shows its sheet | not available |
| Unhide All Apps | System Events: every hidden app made visible | not available |
| Dismiss Notifications | Notification Center over Accessibility: the Clear All (else Close) action of every notification group; nothing on screen is nothing to do | swaync-client --close-all, makoctl dismiss --all or dunstctl close-all; hidden with none |
| Quick Look Finder Selection | qlmanage -p over what is marked in Finder (the core's selection.files(), read once per show), the names as the subtitle and the count on the right; inert with the reason while nothing is marked or Finder is not in front. pal://system/run?id=quick-look-selection for a hotkey |
not available |
Two rows carry state on the right: Empty Trash shows what is in the Trash
(3 items, empty), and Toggle Dark Mode carries the current appearance
as a tag (dark violet, light amber, from defaults read -g AppleInterfaceStyle on macOS and GNOME's color-scheme on Linux).
Keep Awake
The row takes how long in the bar: 45m, 2h, 1h30m, a bare number of
minutes, a clock time (14:30, 2pm, until 14:30; tomorrow's when
today's has passed), or forever. Blank runs the awake_default setting
(an hour). A second field says whether the display stays up too (the
awake_display setting preselected). Enter starts it and the HUD says
what it did (Awake for 45 min, Awake until 14:30, Awake until turned off); cmd+enter keeps awake until turned off; cmd+u opens a form with
the same spelling, the display switch and an app to follow (an app with a
window open: the run ends when it quits, caffeinate -w). While a run is
on the row reads Allow Sleep with the time left as a tag: Enter ends
it, Keep awake for… (with the bar's fields) restarts it for a new span,
cmd+d flips the display. The row is in the empty root's Now section
while a run is on.
caffeinate does the timing itself (-t <secs>), so a run ends on time
whether or not pal is up. pal keeps one record of the run (pid, until,
display, app) in its storage and checks it against the live process on
every read (the pid alive, its command line caffeinate's, the deadline
not passed); the child is spawned unref'd and is not killed with the host,
so a restarted pal finds the same run back rather than starting over, and
a record whose process is gone (or is something else after a reboot) is
dropped silently. A run that ends while pal watches says so in the HUD.
Bar item system/awake: a coffee glyph and the countdown (2h 40m,
12m, 45s; ∞ without an end), a monitor mark after it when the
display is kept awake too, amber in the last five minutes (the ending
rule); hidden while off, and [bar.items."system/awake"] show = "always"
keeps a muted coffee whose click still opens the popover. The popover: the
run on a card (what it is, since when, the time left large, a bar), the
presets as tiles on the digits 1..5 (a new end from now, on or off),
the display switch on d (a run is restarted with the other flag; off, it
is the next run's), u a field for a spelling, Enter allows sleep while
on and starts the default while off, backspace allows sleep, o the
System palette. The ticks are pal's own: a push when the countdown's text
next changes (every minute; every second under one, or while the popover
is up). The item publishes system/awake (on), system/awake_until
(unix ms, null without an end), system/awake_left (minutes, rounded up)
and system/awake_display, for rules and show_when expressions.
Link: pal://system/awake?for=1h&display=1 (until=14:30,
app=Xcode, off=1; bare toggles: the default duration, or off while
on), pal call system/awake for=2h from a shell; pal://system/run?id=keep-awake
is the same toggle. The bar item's actions have their pal bar action system/awake preset:0 twins and a hotkey under [bar.items."system/awake"].
Keyboard
| keys | action |
|---|---|
enter |
Run the command; Log Out, Restart, Shut Down, Empty Trash and Quit All Apps ask first; on Keep Awake, for what the bar says (the default when blank); Allow Sleep while a run is on |
cmd+enter |
On Keep Awake: until turned off |
cmd+u |
On Keep Awake: a form for a time, an app to follow and the display |
cmd+d |
On Allow Sleep: keep the display awake too, or let it sleep |
One action per command row. A command that fails keeps the panel open with a toast carrying the tool's message.
Setup
Nothing to install for the common commands. On macOS: Brightness needs the
brightness CLI on PATH (brew install brightness), Do Not Disturb a
Shortcut named exactly "Toggle Do Not Disturb" in the Shortcuts app. The
System Events commands (log out, restart, volume, dark mode, quit all,
unhide all) ask for Automation once; Dismiss Notifications scripts
Notification Center's window, which needs Accessibility as well. ~/.Trash is readable only with Full Disk Access, and
without it the Empty Trash row simply has no count. On Linux the volume
rows want wpctl (PipeWire) or pactl, brightness brightnessctl, Do
Not Disturb one of swaync-client, makoctl, dunstctl, and Keep Awake
systemd-inhibit (logind).
Settings, [extensions.system]:
| key | type | default | what |
|---|---|---|---|
confirm_destructive |
bool | true |
Confirm before logging out, restarting, shutting down, emptying the trash or quitting every app. |
awake_default |
string | "1h" |
What a bare Keep Awake runs for: a duration, a clock time, or forever. |
awake_display |
bool | true |
Keep the display awake too (caffeinate -d); off, the display may sleep while the machine stays up. The row's field and the popover's switch override it per run. |
awake item settings, [bar.items."system/awake".settings]:
| key | type | default | what |
|---|---|---|---|
presets |
list of strings | ["30m", "1h", "2h", "forever"] |
The popover's tiles and digit keys, five at most. |
What it does not do
- No "Restart pal" row: the tray has it.
- No volume or brightness slider: the rows step by 10%; press Enter again for the next step.
- Keep Awake follows one app by its windows (
windows.list), not a background process; a run with no end and no popover open is checked once a minute by the core's render, so an app that quit shows for up to a minute. - Eject All Disks, Show Desktop, Quit All Apps and Unhide All Apps are macOS only (no desktop-neutral way on Linux); Sleep Displays on Linux is Hyprland or Sway only.
- Quit All Apps quits every regular app, the one in front included; Finder and pal stay. There is no exclude list beyond those two.
- Do Not Disturb on macOS is hidden until the Shortcut exists: macOS has no command line for Focus.
Platforms
macOS and Linux, with the per-command differences in the table above.









