Skip to main content

Security and trust

Custom widget risk is not determined by whether it uses RunCommand or updates online. It depends on:
  1. Where executable content comes from
  2. Whether executable content can change at runtime
A local shortcut widget can run a command silently; a news widget can refresh data silently. Only remote-origin or runtime-generated executable content needs confirmation.

Risk matrix

Executable fingerprint

Remote updates compare only executable content:
  • RunCommand Command and WorkingDirectory
  • PluginApi PluginId, Method, Arguments
  • Function scripts and triggers when executable actions exist
Data refreshes, text changes, and layout changes do not trigger confirmation. News, announcements, and status widgets can keep updating in real time.

Dynamic commands

The final command comes from online data. The launcher shows the final command and asks before execution. After confirmation, only the hash of that command is trusted; a different command asks again. Command templates recognize only these binding namespaces: Data, Resources, Inputs, Results, Children, Size, State. Ordinary shell braces (for example PowerShell script blocks) are not treated as bindings.

Remaining boundaries

  • A locally imported .qwidget is treated as content the user chose; literal commands in local widgets do not prompt on every click.
  • An approved remote static command does not prompt again while it stays unchanged. This is intentional.
  • Only use sources you trust. The launcher developers are not responsible for risks caused by custom widgets.