Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Settings

Set these in config.toml (datui config init writes one with every key commented out), or for one run with -c KEY=VALUE:

printf 'a,b\n1,2\n' | datui -c display.row_numbers=true

A flag beats -c, which beats the config files, which beat the defaults. datui config keys lists every key with its value in effect and where it was set. See Configure datui for where the file lives, imports, the theme and troubleshooting.

TypeWritten as
sizeA number and a unit: 512MiB, 2GiB, 100KiB (MB, GB are powers of 1000). 0 needs none
durationA number and a unit: 250ms, 1.5s, 2m
listIn a file, a TOML array; with -c, a,b or the array
colorA name (red, bright_blue, default), #rrggbb or indexed(0-255)

Top level

KeyTypeDefaultFlagDescription
importlist[]Config files merged in before this one, in order; this file’s own values win. Paths may be relative to this file, or use ~ and $VAR.
catalogslist of path | { path, id, label }[]Catalog files elsewhere, listed on the home screen after catalog.toml and the config directory’s catalogs/*.toml, each a section; see Catalogs. Each is a path, or { path, id, label } to give it another id or label. Paths may be relative to this file. Adds up across imports.

Read

[read] How files are read. A file’s own layout (delimiter, header, rows to skip) is a flag for that file, not a setting.

KeyTypeDefaultFlagDescription
read.infer_typesbool | list of columnstrue--infer-typesRead string columns as dates, times, durations or numbers where every value parses, after trimming: true for all, false for none, or a list of columns. CSV, and dates in JSON. A column with a leading zero (02134) stays text; a later value that does not parse is null, and the Notes tab counts them.
read.parquet_schemaunion | first"union"A partitioned Parquet dataset’s schema: union is every column any file has, from their footers; first lets Polars take one file’s.
read.decompress_in_memoryboolfalseDecompress a compressed CSV, TSV or PSV into memory instead of to a temp file.
read.temp_dirpathunset--temp-dirDirectory for decompression temp files. Unset: the system’s.
read.follow_intervalduration"250ms"With –follow, how often the file is checked for new rows, or on Linux the least time between two reads, 10ms to 1m. Appends within one interval are one refresh.
read.exact_count_filesinteger50000A dataset of more files than this shows a row count estimated from a sample of its footers until c in the Info panel counts it; 0 always counts.
read.memory_warningsize"1GiB"Ask before reading more than this of a file whole into memory (JSON, Avro, ORC, Excel and the other formats read in memory); 0 never asks.
read.audio_floatboolfalseShow integer audio samples as float in [-1, 1].

CSV

[csv] CSV, TSV and PSV. A delimited format spec takes these keys too.

KeyTypeDefaultFlagDescription
csv.commentstringunset--commentLines starting with this are comments, before the header and among the data.
csv.header_joinstring" "Joins a column’s names when –header-rows names several lines.
csv.skip_initial_spaceboolfalse--skip-initial-spaceIgnore the spaces after a delimiter, so padded numbers are numbers and a cell of spaces is null.
csv.null_valueslist[]--nullValues read as null: VAL in every column, COL=VAL in column COL only. –null is repeatable and replaces this list.
csv.infer_rowsinteger1000--infer-rowsRows read to infer column types.
csv.ignore_errorsboolfalse--ignore-errorsSkip rows that do not parse instead of failing.

Display

[display]

KeyTypeDefaultFlagDescription
display.unicodeauto | always | never"auto"Box-drawing and arrow glyphs, or plain ASCII. auto uses them when the locale is UTF-8.
display.row_numbers“auto” | bool"auto"--row-numbersNumber rows on the left by their place in the source, kept through a sort or filter (# toggles). auto: for text and logs; true or false: for all of them.
display.row_numbers_startinteger1The number of the source’s first row.
display.cell_padding“comfortable” | “compact” | integer"comfortable"Space between columns: comfortable (2 cells), compact (1) or a number of cells.
display.column_colorsbooltrueColor cells by column type.
display.type_rowbooltrueA second header row naming each column’s type (D toggles).
display.notes_accentbooltrueAccent the i key when datui has noticed something about the data.
display.mousebooltrue--mouseTake the mouse: the wheel scrolls, a click selects. false leaves it to the terminal.
display.sidebar_widthintegerunsetWidth of every sidebar, in cells. Unset: each sidebar’s own.
display.right_align_numbersbooltrueRight-align numeric columns and their headers.
display.number_formatpreset | table"none"--number-formatDigit grouping: none, thousands, european, si, swiss, indian, underscore or system, or a [display.number_format] table (, toggles).

Performance

[performance] The rows the table buffers between reads, and the engine.

KeyTypeDefaultFlagDescription
performance.pages_aheadinteger3Pages of rows buffered ahead of the screen.
performance.pages_behindinteger3Pages of rows buffered behind the screen.
performance.max_buffered_rowsinteger100000Most rows the table buffers between reads; 0 for no limit.
performance.max_bufferedsize"512MiB"Most memory the buffered rows may take, estimated from the schema; 0 for no limit. Rounded up to whole MiB.
performance.streamingbooltrueUse the Polars streaming engine where it applies.

Analysis

[analysis] Analysis, Data Quality and charts.

KeyTypeDefaultFlagDescription
analysis.sample_rowsinteger100000--sample-rowsRows an analysis samples from a larger table, spread across all of it; 0 reads every row.
analysis.chart_rowsinteger10000Rows a chart reads; a larger table is sampled across all of it.
analysis.chart_gridboolfalseStart charts with a grid at the major ticks (g toggles).
analysis.quality_local_copysize"2GiB"Most a Data Quality full scan of a remote dataset copies into the cache to read once; 0 never copies.
analysis.sample_memory_limitsizeunsetMost memory a view’s sample may take. Unset: the memory available now decides; 0 never warns or stops.

Chart

[chart] Charts exported to a file (e in the chart view).

KeyTypeDefaultFlagDescription
chart.export_recipebooltrueEmbed how an exported chart was made (source path, query, chart, sample) in its PNG, SVG or PDF. The export dialog’s Recipe row starts from it.

Home

[home] The home screen.

KeyTypeDefaultFlagDescription
home.desktop_recentsbooltrueAlso list directories from the desktop’s recently-used files; never the file names.
home.show_unreadableboolfalseList files datui cannot read, dimmed (Ctrl+A toggles).
home.hidelist[]Catalogs not shown, by id: mine (catalog.toml), examples, or a listed file’s name; one entry as catalog/id, such as examples/nyc-taxis. Adds up across imports.
home.preview_maxsize"64MiB"Largest local file whose first rows the home screen previews; 0 turns the preview off.

[home.search] Searching below the working directory as you type on the home screen.

KeyTypeDefaultFlagDescription
home.search.enabledbooltrueSearch below the working directory as you type.
home.search.max_depthinteger8How many directories deep the search goes.
home.search.max_resultsinteger1000Matches listed; the rest are counted.
home.search.time_budgetduration"1500ms"How long the search walks before keeping what it found.
home.search.cross_filesystemsboolfalseDescend into other filesystems, network mounts included.
home.search.follow_gitignoreboolfalseSkip what .gitignore ignores.
home.search.skiplist["node_modules", "target", "build", "dist", "vendor", "site-packages", "__pycache__", "venv", "env"]Directory names never searched. Replaces the defaults; skip_extra adds to them.
home.search.skip_extralist[]Directory names never searched, besides skip.
home.search.extensionslist[]Extensions searched for; empty means those of the formats datui reads.

Cloud

[cloud] See Cloud sources for [[cloud.connections]].

KeyTypeDefaultFlagDescription
cloud.connectionstablesunsetCloud stores to list on the home screen; see Cloud sources.
cloud.hidelist[]Cloud source IDs not shown on the home screen. Adds up across imports.
cloud.use_azure_account_keysbooltrueRead an Azure account with its access keys when a sign-in has no data role, as the Portal does.
cloud.env_fileslist[]Files to read cloud variables from, relative to the working directory, such as .env. Adds up across imports.
cloud.instance_identityboolfalseUse the identity of the cloud VM datui runs on (EC2, GCE, Azure).
cloud.discoverbool | “all” | “none” | listunsetLogins found on this machine that become home-screen sources: all (unset), none, or kinds from s3, gcs, azure.
cloud.list_on_startboolfalseList every source’s buckets when the home screen opens, not when one is entered.

HTTP

[http] Every request datui makes: HTTP(S) files, cloud stores and their sign-ins.

KeyTypeDefaultFlagDescription
http.user_agentstring""The User-Agent header on every request. Empty sends datui/VERSION (+https://github.com/derekwisong/datui), which names datui and its version and nothing about you.

Query

[query]

KeyTypeDefaultFlagDescription
query.history_limitinteger1000Queries remembered.
query.historybooltrueRemember queries.
query.default_modesql | q"sql"The language : starts in, until Ctrl+T picks another.

Views

[views]

KeyTypeDefaultFlagDescription
views.auto_applyboolfalseApply the best-matching view when a file opens.

Clipboard

[clipboard] How the copy dialog (y) reaches the system clipboard.

KeyTypeDefaultFlagDescription
clipboard.backendauto | native | osc52"auto"auto: the display server where one answers, osc52 elsewhere (SSH). osc52 is an escape sequence the terminal applies.
clipboard.osc52_limitsize"100KiB"Longest osc52 copy to attempt, as base64. Terminals cap what they accept.

Formats

[formats] Where format specs and dictionaries are found.

KeyTypeDefaultFlagDescription
formats.pathlist[]Directories of format specs and dictionaries, searched after ~/.config/datui/formats and $DATUI_FORMATS_PATH. Adds up across imports.

Log

[log]

KeyTypeDefaultFlagDescription
log.filepathunset--log-fileWhere the log goes. Unset: datui.log in the cache directory.
log.levelerror | warn | info | debug | trace | offunset--log-levelHow much the log says (default warn). DATUI_LOG beats a config file’s; -c and –log-level beat DATUI_LOG.

Theme

[theme]

KeyTypeDefaultFlagDescription
theme.modeauto | dark | lightunsetWhich mode’s theme to use: theme.dark or theme.light. auto follows the terminal’s answer about its background, else its last answer, then COLORFGBG, then dark; it asks again when the terminal regains focus.
theme.darkstring"night-market"The theme used when the terminal is dark: night-market, day-market, or a file’s name in the config directory’s themes/. A name that cannot be used falls back to night-market, with a warning when dark is in use.
theme.lightstring"day-market"The theme used when the terminal is light: night-market, day-market, or a file’s name in the config directory’s themes/. A name that cannot be used falls back to day-market, with a warning when light is in use.

Colors

[theme.colors] Each slot takes a name (red, bright_blue, default), #rrggbb or indexed(0-255). They lie over the theme in use, theme.dark or theme.light, in either mode; a whole theme of your own goes in a file in themes/.

KeyDarkLightDescription
theme.colors.chip_key#7dcfff#2e7de9Keys named in the footer, dialogs, the breadcrumb and the correlation matrix.
theme.colors.chip_label#a9b1d6#3760bfLabels beside keys in the footer, and the footer’s status.
theme.colors.throbber#7dcfff#2e7de9The busy spinner.
theme.colors.success#9ece6a#587539Success.
theme.colors.error#f7768e#f52a65Errors.
theme.colors.warning#e0af68#8c6c3eWarnings.
theme.colors.dimmed#565f89#848cb5Dimmed text, nulls and axes.
theme.colors.backgrounddefaultdefaultMain background.
theme.colors.surfacedefaultdefaultDialog background.
theme.colors.controls_bg#262a3f#d0d5e3Count chips and dialogs’ key chips.
theme.colors.text_primarydefaultdefaultText.
theme.colors.text_secondary#737aa2#6172b0Secondary text.
theme.colors.text_inverse#1a1b26#e1e2e7Text on a key chip.
theme.colors.table_header#c0caf5#3760bfHeader text.
theme.colors.table_header_bg#2b3047#c4c8daHeader fill.
theme.colors.table_row_numbers#565f89#848cb5The row-number column.
theme.colors.table_column_separator#3b4261#a8aecbThe rule after frozen columns and beside section titles.
theme.colors.table_selected#283457#b6bfe2Tint under the current row; reversed swaps text and background instead.
theme.colors.table_column_cursor#292e42#cbd3f2Tint under the column cursor’s cells.
theme.colors.table_cell_cursor#3b4261#a0aef0The column cursor’s header and the current cell.
theme.colors.sidebar_border#565f89#6172b0Sidebar and dialog borders.
theme.colors.modal_border_active#7dcfff#2e7de9The focused dialog’s border.
theme.colors.modal_border_error#f7768e#f52a65An error dialog’s border.
theme.colors.distribution_normal#9ece6a#587539Analysis: a normal distribution.
theme.colors.distribution_skewed#e0af68#8c6c3eAnalysis: a skewed distribution.
theme.colors.distribution_other#c0caf5#3760bfAnalysis: other distributions.
theme.colors.outlier_marker#f7768e#f52a65Analysis: outliers.
theme.colors.input_cursordefaultdefaultThe text caret; default reverses the text under it.
theme.colors.input_cursor_textdefaultdefaultText under the caret block; default picks black or white by contrast.
theme.colors.table_alternate_row#1e2030#dcdfeaEvery other row; default turns the stripe off.
theme.colors.type_str#9ece6a#587539String columns.
theme.colors.type_int#7aa2f7#2e7de9Integer columns.
theme.colors.type_float#2ac3de#007197Float columns.
theme.colors.type_bool#e0af68#8c6c3eBoolean columns.
theme.colors.type_temporal#bb9af7#9854f1Date, time and datetime columns.
theme.colors.type_binary#565f89#848cb5Binary columns’ placeholder.
theme.colors.chart_1#7dcfff#2e7de9Chart series 1; also histogram bars, bar charts and Q-Q points.
theme.colors.chart_2#bb9af7#9854f1Chart series 2.
theme.colors.chart_3#9ece6a#587539Chart series 3.
theme.colors.chart_4#e0af68#8c6c3eChart series 4.
theme.colors.chart_5#7aa2f7#007197Chart series 5.
theme.colors.chart_6#f7768e#f52a65Chart series 6.
theme.colors.chart_7#ff9e64#b15c00Chart series 7.
theme.colors.chart_8#1abc9c#118c74Chart series 8.
theme.colors.chart_9#ff5fd2#d1188cChart series 9.
theme.colors.chart_10#f4ef8a#24357aChart series 10.
theme.colors.chart_grid#3d4785#70aabfThe chart grid, a shade dimmer than dimmed.
theme.colors.accent#7dcfff#2e7de9Key chips, focused titles and the selection rail.
theme.colors.accent_bright#a4daff#1a6cd0The section the cursor is in.
theme.colors.gradient_start#7aa2f7#2e7de9The wordmark’s first stop.
theme.colors.gradient_end#bb9af7#9854f1The wordmark’s last stop.
theme.colors.find_match#e0af68#f0c35aBehind the cell a find landed on.
theme.colors.hex_null#565f89#848cb5Hex view: the byte 0x00.
theme.colors.hex_printable#7dcfff#007197Hex view: printable ASCII.
theme.colors.hex_whitespace#9ece6a#587539Hex view: whitespace bytes.
theme.colors.hex_control#bb9af7#9854f1Hex view: other control bytes.
theme.colors.hex_high#e0af68#8c6c3eHex view: 0x80 to 0xFE.
theme.colors.hex_ff#f7768e#f52a65Hex view: the byte 0xFF.

Glyphs

[glyphs]

KeyTypeDefaultFlagDescription
glyphs.*string | listunsetA glyph slot from glyphs.rs, replaced when the Unicode set is active. Keeps the width of the glyph it replaces.

The environment variables datui reads are in Environment variables.