General Settings
This section covers the general configuration options that control the core behavior and appearance of IntelliShell,
such as the user interface mode and the location where application data is stored. These settings are located at the
top level of your config.toml
file.
Data Directory
The data_dir
setting specifies the directory where IntelliShell stores its data, including the command database
(storage.db3
), logs, and other state files.
If you leave this setting as an empty string (""
), IntelliShell will use the default system-specific data directory:
- Linux:
~/.local/share/intelli-shell
(or$XDG_DATA_HOME/intelli-shell
if set) - macOS:
~/Library/Application Support/org.IntelliShell.Intelli-Shell
- Windows:
%APPDATA%\IntelliShell\Intelli-Shell\data
You can specify a custom path to store your data in a different location, such as a synced cloud folder.
# The default directory for application data, such as the stored commands database.
# If this value is left empty, the application will use the system's default data directory:
# - ~/.local/share/intelli-shell (on Linux/macOS, unless overridden by XDG_DATA_HOME)
# - ~/Library/Application Support/org.IntelliShell.Intelli-Shell (on macOS)
# - %APPDATA%\IntelliShell\Intelli-Shell\data (on Windows)
data_dir = ""
Overriding with INTELLI_STORAGE
For more direct control, especially in containerized or portable environments, you can use the INTELLI_STORAGE
environment variable. If set, this variable must contain the full path to your database file, not just a
directory.
This variable takes precedence over the data_dir
setting just for the database, and IntelliShell will use the specified
file for all database operations.
# Example for Linux/macOS
export INTELLI_STORAGE="/path/to/my/custom.db3"
Update Checks
This setting controls whether IntelliShell automatically checks for new versions upon startup. When enabled, it helps ensure you are always using the latest version with the newest features and bug fixes.
check_updates = true
(Default): The application will check for updates at startup. If a new version is available, a notification will be shown in the TUI.check_updates = false
: Disables the automatic update check.
# Whether to check for updates on application startup
check_updates = true
UI Rendering Mode
The inline
setting controls how the interactive Terminal User Interface (TUI) is displayed. You can choose between
a compact, inline view or an immersive, full-screen experience.
-
inline = true
(Default): The TUI renders directly below your current shell prompt. This mode is less intrusive and allows you to see your previous commands while you search. -
inline = false
: The TUI takes over the entire terminal window, providing a more focused, full-screen experience.
# Determines the rendering mode for the Terminal User Interface (TUI).
# - If `true`, the TUI will appear directly below the shell prompt, integrating seamlessly
# - If `false`, the TUI will take over the entire terminal screen
inline = true
Gist Integration
The [gist]
section allows you to configure default settings for importing from and exporting to GitHub Gists.
This is useful if you frequently use the same Gist to back up or share your commands.
id
: The ID of your default GitHub Gist. You can find this in the Gist's URL.token
: A GitHub Personal Access Token withgist
scope. This is required for creating or updating private Gists.
# Configuration for the default gist to use when importing or exporting (if no other is explicitly set)
[gist]
# The id of the gist, you can get it from the url after the username
id = ""
# Token to authenticate the API call to GH when exporting
# GIST_TOKEN env variable will take precedence over the config value
token = ""
Search
The [search]
section lets you fine-tune the default behavior of the interactive search.
delay
: The time in milliseconds that IntelliShell waits after you stop typing before it starts searchingmode
: The default search algorithm, can beauto
,fuzzy
,regex
,exact
, orrelaxed
user_only
: If set totrue
, searches will exclude commands fromtldr
and.intellishell
file
These settings can be toggled on-the-fly within the search UI using the default keybindings ctrl+s
and ctrl+o
.
# Configuration for the search command
[search]
# The delay (in ms) to wait and accumulate type events before triggering the query
delay = 250
# Specifies the default search mode to be used when initiating a search.
# Possible values are:
# - "auto": An internal algorithm is used to best match common human search patterns
# - "fuzzy": Employs fuzzy matching to find commands that are similar to the input query
# - "regex": Treats the input query as a regular expression, allowing for complex pattern matching
# - "exact": The search will only return commands that precisely match the entire input query
# - "relaxed": Attempts to find the maximum number of potentially relevant commands using broader matching criteria
mode = "auto"
# Whether to search for user commands only by default when initiating a search (excluding tldr and workspace)
user_only = false
Logging
The [logs]
section configures the application's logging behavior, which is useful for debugging or monitoring.
Note that if the INTELLI_LOG
environment variable is set, it will override the settings in this file.
enabled
: Set totrue
to enable writing logs to a file in the application's data directoryfilter
: Controls the verbosity of the logs usingtracing-subscriber
syntax
# Configuration settings for application logging.
#
# If an `INTELLI_LOG` environment variable exists, it will override the filter and enable logging.
[logs]
# Whether application logging is enabled.
# If set to `true`, the application will write detailed logs to a file within the data directory.
enabled = false
# The log filter to apply, controlling which logs are recorded.
#
# This string supports the `tracing-subscriber`'s environment filter syntax, for example:
# - "info" enables info log level (and above: warn and error)
# - "warn,intelli_shell=debug" enables debug for `intelli_shell` and warn for the rest
filter = "info"
Now that you've configured the application's basic behavior, you can tailor how you interact with it. Let's move on to customizing the Key Bindings.