Basics

Plugins

A plugin is a physical module that can be loaded/unloaded at runtime. It could be native or provided by plugin provider plugins. Nested plugins are accessible when their provider is loaded.

Users can enable/disable and load/unload plugins via the plugins tab in the settings or using the built-in plugin query handler. Enabled plugins load automatically at launch. Plugins with graphical interfaces for configuration can be accessed via the plugins tab in the settings.

Each plugin has an identifier. Plugin providers search multiple implementation- and platform-specific plugin paths. The search order proceeds from user-specific to system-wide locations. The first plugin found for an identifier is used.

Extensions

An extension is a logical unit extending the app with a particular functionality. Each plugin can provide multiple extension implementations and expose its own extension interfaces. More on this topic can be found in the Extension section

Queries

There are three built-in extension interfaces that handle user input:

If the query starts with a trigger of a trigger query handler extension, the query is handled exclusively by the corresponding handler. This allows the handler to set an inline input hint, asynchronously add match items and as such define their order.

If the query does not start with a trigger, the query is handled by all enabled global query handler extensions in parallel and eventually the match items are merged and sorted by match and usage score.

There is one special

In any case the enabled fallback handler extensions provide a separate set of fallbacks items, which are displayed when the matches are empty or when the user explicitly requests them.

Result items

Besides the obvious icon, title and description, each item provides a list of actions the user can execute. Items may also define an input action text, which is used to replace the current input on input action activation. Its semantics are loosely defined; it may be a completion, an evaluation, or something else.

User interface

Logo

Besides its primary function, the input line displays the input action text and input hint and contains the settings button. If the input starts with a trigger of a trigger query handler, it is highlighted. If available the input action text of the currently selected item will be displayed right beside your input. Hit Tab to replace the current input with it. If space permits, the input hint of the query handler will be displayed right-aligned in the input box. The settings button is appears on the right side of the input line if you hover over it or if a query a query is being processed. Left-clicking opens the settings window, while right-clicking shows a context menu.

The manually entered text of the input line is stored in the input history when the window is hidden. This input history can be used to search and browse your past input. Holding Shift enables input history navigation for and no matter which item is selected. When the results list is hidden or the first item is selected works without holding Shift.

If enabled, the (manually set) input text is used for input history search. Input history navigation then only shows input history entries matching the input text.

The results list displays result items of a query. Hold and release Super⌃ to switch between match items and fallback items.

Result items can have multiple associated actions. The default action of an item is activated by pressing Return or Enter. To display the list of alternative actions of an item Ctrl⌘+Return or hold Alt⌥ .

As a reference the following table lists the keys you can use to control Albert:

Key Action
Esc Hide the window.
Alt⌥ (Hold)
Ctrl⌘+Return
Show actions.
Super⌃ (Hold) Show fallbacks.
Shift+ Next entry in input history.
Shift+ Previous entry in input history.
Tab Activate input action of the selected item (evaluation, completion, etc).
Return,Ctrl⌘+O Activate item.
Shift+Return Insert new line.
Ctrl⌘+Shift+Return
Ctrl⌘+Shift+O
Activate item but do not hide.
Ctrl⌘+, Open settings window.
,,
PgUp,PgDn
Navigation in item lists.
Alt⌥+F4,+Q Quit Albert (Depends on settings).
Ctrl⌘+H/J/K/L Vim bindings. Synthesize to arrows.
Ctrl⌘+N/P Emacs bindings. Synthesize to arrows.