id = "atuin" name = "Atuin" homepage = "https://atuin.sh" description = "Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands." # The turtle from atuin.sh's brand assets; the wordmark beside it is too wide # for an icon. icon = "https://atuin.sh/assets/brand/atuin-turtle.svg" executables = ["atuin"] [dotfiles] # https://docs.atuin.sh/configuration/config/ — "The full path to the config # file would be ~/.config/atuin/config.toml". atuin-common/src/utils.rs: # config_dir() is $XDG_CONFIG_HOME/atuin else ~/.config/atuin, data_dir() is # $XDG_DATA_HOME/atuin else ~/.local/share/atuin, on every platform. paths = ["~/.config/atuin/config.toml"] # The history itself and the stores beside it. Sync exists for the history; # copying the database files behind atuin's back would fight it. data_dir() is # the XDG data home on macOS as well, so it is [xdgData]; [dataHome] would be # ~/Library/Application Support there, which atuin never writes. exclude = [ "[xdgData]/atuin/history.db", "[xdgData]/atuin/records.db", "[xdgData]/atuin/meta.db", "~/.atuin/logs/", ] # key_path defaults to "~/.local/share/atuin/key" — the same data directory — # and is the key every synced history record is encrypted with. secret = ["[xdgData]/atuin/key"] # Carrying shell history between machines is what atuin is; its own sync is # end-to-end encrypted and already covers the database this entry excludes. self_sync = true [commands] format = 1 label = "Atuin shell history" description = "Atuin replaces shell history with a searchable database. Use the subcommand tabs for search, stats, listing, sync and shell init; account, key and server commands are left out." quality = "ai-draft" base = "fig:atuin" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/atuin.ts" license = "MIT" [[commands.group]] id = "basic" label = "Basic" fields = [] [[commands.subcommand]] path = ["search"] label = "Search history" description = "Search the history database. Deleting matches is left out." parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/atuin.ts" license = "MIT" [[commands.subcommand.field]] id = "query" label = "Query" type = "string" position = 0 multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "cwd" label = "Directory" description = "Only results from this directory." type = "string" option = ["--cwd", "-c"] sources = ["fig"] [[commands.subcommand.field]] id = "exit" label = "Exit code" description = "Only results with this exit code." type = "string" option = ["--exit", "-e"] sources = ["fig"] [[commands.subcommand.field]] id = "before" label = "Before" description = "Only results added before this date." type = "string" option = ["--before", "-b"] sources = ["fig"] [[commands.subcommand.field]] id = "after" label = "After" description = "Only results added after this date." type = "string" option = ["--after"] sources = ["fig"] [[commands.subcommand.field]] id = "limit" label = "Limit" description = "Maximum number of entries." type = "integer" option = ["--limit"] sources = ["fig"] [[commands.subcommand.field]] id = "interactive" label = "Interactive UI" type = "boolean" option = ["--interactive", "-i"] sources = ["fig"] [[commands.subcommand.field]] id = "filter_mode" label = "Filter mode" description = "Override the configured filter mode." type = "string" option = ["--filter-mode"] suggestions = [{ value = "global", label = "global" }, { value = "host", label = "host" }, { value = "session", label = "session" }, { value = "directory", label = "directory" }, { value = "workspace", label = "workspace" }] sources = ["fig"] [[commands.subcommand.field]] id = "search_mode" label = "Search mode" description = "Override the configured search mode." type = "string" option = ["--search-mode"] suggestions = [{ value = "prefix", label = "prefix" }, { value = "full-text", label = "full-text" }, { value = "fuzzy", label = "fuzzy" }, { value = "skim", label = "skim" }] sources = ["fig"] [[commands.subcommand.field]] id = "human" label = "Human-readable time" type = "boolean" option = ["--human"] sources = ["fig"] [[commands.subcommand.field]] id = "cmd_only" label = "Command text only" type = "boolean" option = ["--cmd-only"] sources = ["fig"] [[commands.subcommand.field]] id = "reverse" label = "Oldest first" type = "boolean" option = ["--reverse", "-r"] sources = ["fig"] [[commands.subcommand.task]] id = "recent-here" label = "Commands in this directory" fields = ["query", "cwd", "limit", "cmd_only"] required = [] set = { cmd_only = [true] } [[commands.subcommand.task]] id = "interactive" label = "Interactive search" fields = ["query", "interactive"] required = [] set = { interactive = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["query", "cwd", "exit", "limit", "interactive", "cmd_only"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["before", "after", "filter_mode", "search_mode", "human", "reverse"] [[commands.subcommand]] path = ["stats"] label = "History statistics" description = "Show the most used commands over a period." parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/atuin.ts" license = "MIT" [[commands.subcommand.field]] id = "period" label = "Period" description = "Leave blank for statistics since the beginning." type = "string" position = 0 multiple = true sources = ["fig"] [[commands.subcommand.field]] id = "count" label = "Top commands" description = "How many top commands to list." type = "integer" option = ["--count", "-c"] sources = ["fig"] [[commands.subcommand.task]] id = "top" label = "Top 20 commands" fields = ["period", "count"] required = [] set = { count = [20] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["period", "count"] [[commands.subcommand]] path = ["history", "list"] label = "List history" description = "List history items." parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/atuin.ts" license = "MIT" [[commands.subcommand.field]] id = "cwd" label = "This directory only" type = "boolean" option = ["--cwd", "-c"] sources = ["fig"] [[commands.subcommand.field]] id = "session" label = "This session only" type = "boolean" option = ["--session", "-s"] sources = ["fig"] [[commands.subcommand.field]] id = "human" label = "Human-readable time" type = "boolean" option = ["--human"] sources = ["fig"] [[commands.subcommand.field]] id = "cmd_only" label = "Command text only" type = "boolean" option = ["--cmd-only"] sources = ["fig"] [[commands.subcommand.task]] id = "session" label = "This session" fields = ["session", "cmd_only"] required = [] set = { session = [true] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["cwd", "session", "human", "cmd_only"] [[commands.subcommand]] path = ["sync"] label = "Sync history" description = "Sync with the configured server." parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/atuin.ts" license = "MIT" [[commands.subcommand.field]] id = "force" label = "Force re-download" description = "Force re-download everything." type = "boolean" option = ["--force", "-f"] sources = ["fig"] [[commands.subcommand.task]] id = "sync" label = "Sync" fields = ["force"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["force"] [[commands.subcommand]] path = ["init"] label = "Shell setup" description = "Print the shell setup to eval in your shell rc file." parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/atuin.ts" license = "MIT" [[commands.subcommand.field]] id = "shell" label = "Shell" type = "string" position = 0 suggestions = [{ value = "zsh", label = "zsh" }, { value = "bash", label = "bash" }, { value = "fish", label = "fish" }, { value = "nu", label = "nu" }] sources = ["fig"] [[commands.subcommand.field]] id = "disable_ctrl_r" label = "Do not bind Ctrl-R" type = "boolean" option = ["--disable-ctrl-r"] sources = ["fig"] [[commands.subcommand.field]] id = "disable_up_arrow" label = "Do not bind Up Arrow" type = "boolean" option = ["--disable-up-arrow"] sources = ["fig"] [[commands.subcommand.task]] id = "zsh" label = "Zsh setup" fields = ["shell"] required = ["shell"] set = { shell = ["zsh"] } [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["shell", "disable_ctrl_r", "disable_up_arrow"]