Reference · Reference
Lazyjournal Keybindings & Commands
Search lazyjournal keybindings by window with one-click copy. A complete cheat sheet covering global keys, list windows, log output, filters, the F2 manager, CLI flags, install commands, and config.yml settings.
Last updated:
Supported version: 0.8.6 (released March 2026) | Updated July 2026
How to Use
Expand how to useCollapse how to use
- 1
Filter by category or search
Use the category buttons (List Windows / Log Output / Filter, etc.) or the search box to find the keybinding you need.
- 2
Check the keybinding
Review the key and its description. Lazyjournal assigns different actions to the same key depending on the focused window, so pay attention to the category.
- 3
Copy commands to use them
Copy CLI flags, install commands, and config.yml examples to your clipboard and paste them straight into your terminal or config file.
Supported Version
This cheat sheet covers lazyjournal 0.8.6 (released March 16, 2026), including window keybindings, all 27 CLI flags, install commands, and config.yml settings.
0.8.6 (March 2026)
- Fixed errors when scrolling through logs
- Changed the user log retrieval list to a list of systemd units, and added loading of logs for user units
- Added the -U/--unit-types flag and the unitType setting for filtering unit lists (service by default)
0.8.5 (February 2026)
- Added the ability to change the default lists shown in each panel at startup through the configuration file
- Fixed the container list in Podman when no context parameter is set
- Added a custom path for file logs on Windows (default $HOME/Documents)
Global (All Windows)
List Windows
Log Output
Filter & Date Filter
Manager (F2)
CLI Flags
-h, --help
Notes
- Boolean flag (default: false)
Examples
lazyjournal --helpShow usage and the list of flags-v, --version
Notes
- Boolean flag (default: false)
Examples
lazyjournal --versionShow version information-g, --config
Notes
- Boolean flag (default: false)
- Handy for verifying which config.yml lazyjournal actually picked up
Examples
lazyjournal --configPrint the active hotkeys and settings-a, --audit
Notes
- Boolean flag (default: false)
- The official docs do not describe the output in detail
Examples
lazyjournal --auditPrint audit information-l, --logging
Notes
- Boolean flag (default: false)
- The output file is set with settings.loggingPath (default: lazyjournal.log)
- The format is set with settings.loggingType (text or json)
Examples
lazyjournal --loggingWrite the executed commands to a log file-d, --tail-mode-disable
Notes
- Boolean flag (default: false)
- You can still refresh manually with Ctrl+R
Examples
lazyjournal --tail-mode-disableLoad logs once without background updates-t, --tail-lines
Notes
- Only these values are accepted: 200, 500, 1000, 5000, 10000, 20000, 30000, 40000, 50000, 100000, 150000, 200000
- Any other value exits with an error
Examples
lazyjournal --tail-lines 50000Load the last 50000 lines-u, --update-interval
Notes
- Out-of-range values exit with a valid range message
Examples
lazyjournal --update-interval 2Refresh the log output every 2 seconds-F, --min-symbols-filter
Notes
- Out-of-range values exit with a valid range message
Examples
lazyjournal --min-symbols-filter 1Start filtering from the first character-T, --timezone-filter
Notes
- The value must be a UTC offset such as +09:00 or -05:00
- An invalid value silently falls back to +00:00
Examples
lazyjournal --timezone-filter +09:00Filter container logs using a JST offset-m, --mouse-disable
Notes
- Boolean flag (default: false)
- Useful when you want the terminal's own text selection back
Examples
lazyjournal --mouse-disableLaunch without mouse control-w, --wrap-disable
Notes
- Boolean flag (default: false)
Examples
lazyjournal --wrap-disableShow long log lines without wrapping-C, --color-mode
Notes
- Available values: default, tailspin, bat, disable
- Can be switched at runtime with Ctrl+W
Examples
lazyjournal --color-mode tailspinHighlight the log output with tailspin-U, --unit-types
Notes
- Example value: service,timer,scope,socket,mount
- Values are validated against the unit types actually present on the system, so there is no fixed list
Examples
lazyjournal --unit-types service,timer,socketShow services, timers, and sockets in the unit list-j, --journal-field
Notes
- Examples: _UID, _PID, _COMM, _EXE, _CMDLINE
- Values are validated against the journald fields available on the system
Examples
lazyjournal --journal-field _COMMBuild the journal list from process names-J, --journal-priority
Notes
- Available values: debug, info, notice, warning, err, crit, alert, emerg
- Can be changed at runtime with Ctrl+P
Examples
lazyjournal --journal-priority errStart with the log output limited to err and above-b, --journal-boot
Notes
- 0 is the current boot, -1 the previous one
Examples
lazyjournal --journal-boot 0Show journals from the current boot only-p, --custom-path
Notes
- Defaults to /opt on Linux and $HOME/Documents on Windows
Examples
lazyjournal --custom-path /srvSearch a different directory for log files-o, --docker-stream-only
Notes
- Boolean flag (default: false)
- Can be switched at runtime with Ctrl+D
Examples
lazyjournal --docker-stream-onlyRead Docker logs through the stream API only-D, --docker-context
Notes
- Contexts can also be switched at runtime from the F2 manager
Examples
lazyjournal --docker-context my-contextLaunch against a specific Docker context-P, --podman-context
Notes
- When it is unset, the context parameter is omitted from the Podman calls entirely (fixed in 0.8.5)
Examples
lazyjournal --podman-context my-contextLaunch against a specific Podman context-K, --kubernetes-context
Notes
- Contexts can also be switched at runtime from the F2 manager
Examples
lazyjournal --kubernetes-context my-clusterLaunch against a specific Kubernetes context-n, --kubernetes-namespace
Notes
- Namespaces can also be switched at runtime from the F2 manager
Examples
lazyjournal --kubernetes-namespace kube-systemLimit the pod list to one namespace-c, --command-color
Notes
- Boolean flag (default: false)
- lj is the alias suggested in the official docs: alias lj=lazyjournal
Examples
cat /var/log/syslog | lj -cColorize piped log output-f, --command-fuzzy
Notes
- lj is the alias suggested in the official docs: alias lj=lazyjournal
Examples
cat /var/log/syslog | lj -f "error"Fuzzy filter piped log output-r, --command-regex
Notes
- lj is the alias suggested in the official docs: alias lj=lazyjournal
Examples
cat /var/log/syslog | lj -r "error|fatal|fail|crash"Filter piped log output with a regular expression-s, --ssh
Notes
- Remote access requires an ssh key, or password caching via ControlMaster and ControlPersist in ~/.ssh/config
- Append sudo to the string when it is available without a password
Examples
lazyjournal --ssh "root@192.168.3.100 -p 22"Read logs on a remote host over SSHlazyjournal --ssh "lifailon@192.168.3.101 sudo"Read privileged logs with passwordless sudoInstall
curl -sSL https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.sh | bash
Notes
- Make sure ~/.local/bin is on your PATH
Examples
curl -sSL https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.sh | bashInstall or update the binary with the official scriptsudo add-apt-repository -y ppa:lifailon/lazyjournal && sudo apt update && sudo apt install -y lazyjournal
Notes
- Added in 0.8.5 together with automated GoReleaser builds
Examples
sudo add-apt-repository -y ppa:lifailon/lazyjournal && sudo apt update && sudo apt install -y lazyjournalAdd the PPA and install with aptcurl -sSL https://github.com/Lifailon/lazyjournal/releases/download/0.8.6/lazyjournal-0.8.6-$(dpkg --print-architecture).deb -o /tmp/lazyjournal.deb && sudo apt install -y /tmp/lazyjournal.deb && rm /tmp/lazyjournal.deb
Notes
- The architecture is detected with dpkg --print-architecture
- Change the version in the URL to install a different release
Examples
curl -sSL https://github.com/Lifailon/lazyjournal/releases/download/0.8.6/lazyjournal-0.8.6-$(dpkg --print-architecture).deb -o /tmp/lazyjournal.deb && sudo apt install -y /tmp/lazyjournal.deb && rm /tmp/lazyjournal.debInstall the 0.8.6 deb packagebrew install lazyjournal
Examples
brew install lazyjournalInstall with Homebrewconda install -c conda-forge lazyjournal
Examples
conda install -c conda-forge lazyjournalInstall from conda-forgemamba install -c conda-forge lazyjournal
Examples
mamba install -c conda-forge lazyjournalInstall from conda-forge with mambapixi global install lazyjournal
Examples
pixi global install lazyjournalInstall globally with pixiparu -S lazyjournal
Notes
- Any AUR helper works; the official docs use paru
Examples
paru -S lazyjournalInstall from the AURmkdir lazyjournal && cd lazyjournal && curl -sSL https://raw.githubusercontent.com/Lifailon/lazyjournal/refs/heads/main/docker/debian/docker-compose.yml -o docker-compose.yml && docker compose up -d && docker attach lazyjournal
Notes
- docker attach connects your terminal to the running TUI
Examples
mkdir lazyjournal && cd lazyjournal && curl -sSL https://raw.githubusercontent.com/Lifailon/lazyjournal/refs/heads/main/docker/debian/docker-compose.yml -o docker-compose.yml && docker compose up -d && docker attach lazyjournalRun lazyjournal with Docker Composeirm https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.ps1 | iex
Notes
- On Windows the systemd panel is unavailable and file logs default to $HOME/Documents
Examples
irm https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.ps1 | iexInstall on Windows with PowerShellgo install github.com/Lifailon/lazyjournal@latest
Notes
- This installs the version from the latest commit, which may be unstable
Examples
go install github.com/Lifailon/lazyjournal@latestInstall with the Go toolchaingit clone https://github.com/Lifailon/lazyjournal && cd lazyjournal && make build
Examples
git clone https://github.com/Lifailon/lazyjournal && cd lazyjournal && make buildBuild lazyjournal from sourceConfig & Customization
settings.loggingEnable
Examples
settings:
loggingEnable: trueRecord the commands lazyjournal runssettings.loggingPath
Notes
- No CLI flag equivalent
Examples
settings:
loggingPath: /tmp/lazyjournal.logWrite the debug log to a specific pathsettings.loggingType
Notes
- No CLI flag equivalent
Examples
settings:
loggingType: jsonWrite the debug log as JSONsettings.tailModeDisable
Examples
settings:
tailModeDisable: trueStart with background streaming turned offsettings.tailModeLines
Notes
- Valid values: 200, 500, 1000, 5000, 10000, 20000, 30000, 40000, 50000, 100000, 150000, 200000
Examples
settings:
tailModeLines: 20000Load 20000 lines by defaultsettings.updateInterval
Examples
settings:
updateInterval: 3Refresh the log output every 3 secondssettings.minSymbolFilter
Examples
settings:
minSymbolFilter: 1Start filtering from the first charactersettings.timezoneFilter
Notes
- The value must be a UTC offset such as +09:00 or -05:00
Examples
settings:
timezoneFilter: "+09:00"Use a JST offset for date filteringsettings.mouseDisable
Examples
settings:
mouseDisable: trueTurn off mouse control permanentlysettings.wrapModeDisable
Notes
- Added in 0.8.4, replacing the older disableTimestamp flag
Examples
settings:
wrapModeDisable: trueShow long log lines without wrappingsettings.colorMode
Notes
- Can be switched at runtime with Ctrl+W
Examples
settings:
colorMode: tailspinHighlight logs with tailspin by defaultsettings.colorActionsDisable
Notes
- No CLI flag equivalent
Examples
settings:
colorActionsDisable: trueStop highlighting action keywordssettings.unitType
Notes
- Example value: service,timer,scope,socket,mount
Examples
settings:
unitType: service,timerShow services and timers in the unit listsettings.journalField
Notes
- Examples: _UID, _PID, _COMM, _EXE, _CMDLINE
Examples
settings:
journalField: _COMMBuild the journal list from process namessettings.journalPriority
Notes
- Can be changed at runtime with Ctrl+P
Examples
settings:
journalPriority: warningStart with warning level and abovesettings.journalBoot
Notes
- 0 is the current boot, -1 the previous one
Examples
settings:
journalBoot: "0"Show journals from the current boot onlysettings.customPath
Examples
settings:
customPath: /srvSearch a different directory for log filessettings.dockerStreamOnly
Examples
settings:
dockerStreamOnly: trueAlways read Docker logs through the stream APIsettings.dockerContext
Examples
settings:
dockerContext: my-contextStart with a specific Docker contextsettings.podmanContext
Notes
- When it is unset, the context parameter is omitted from the Podman calls entirely
Examples
settings:
podmanContext: my-contextStart with a specific Podman contextsettings.kubernetesContext
Examples
settings:
kubernetesContext: my-clusterStart with a specific Kubernetes contextsettings.kubernetesNamespace
Examples
settings:
kubernetesNamespace: kube-systemLimit the pod list to one namespacesettings.disableFastMode
Notes
- No CLI flag equivalent
Examples
settings:
disableFastMode: trueFall back to sequential journal loadinginterface.systemLogList
Notes
- Added in 0.8.5
Examples
interface:
systemLogList: auditdOpen the systemd panel on the auditd listinterface.fileLogList
Examples
interface:
fileLogList: customPathOpen the file panel on your custom pathinterface.containerLogList
Examples
interface:
containerLogList: kubernetesOpen the container panel on Kubernetes podsinterface.sinceDateFilterMode
Examples
interface:
sinceDateFilterMode: trueStart with the since date filter activeinterface.untilDateFilterMode
Examples
interface:
untilDateFilterMode: trueStart with the until date filter activeinterface.foregroundColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
foregroundColor: whiteUse white textinterface.backgroundColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
backgroundColor: blackUse a black backgroundinterface.selectedForegroundColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
selectedForegroundColor: blackSet the selected item text colorinterface.selectedBackgroundColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
selectedBackgroundColor: blueHighlight the selected item in blueinterface.frameColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
frameColor: cyanDraw window frames in cyaninterface.titleColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
titleColor: cyanDraw window titles in cyaninterface.selectedFrameColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
selectedFrameColor: yellowMark the focused window with a yellow frameinterface.selectedTitleColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
selectedTitleColor: yellowMark the focused window title in yellowinterface.errorColor
Notes
- Available colors: default, green, black, yellow, red, blue, cyan, magenta, white
Examples
interface:
errorColor: magentaShow errors in magentassh.hosts
Notes
- Added in 0.8.4 together with the F2 manager
- Remote access requires an ssh key or password caching via ControlMaster and ControlPersist
Examples
ssh:
hosts:
- "lifailon@192.168.3.105 -p 2121 -o Compression=yes"Register a remote host for the F2 managerhotkeys.<action>
Notes
- Accepted notation: a-z, shift+a-z, ctrl+a-z, 0-9, f1-f12, tab, shift+tab, enter, space, backspace, del, esc, alt combinations, and arbitrary symbols
- Two defaults are shared on purpose: veryQuickUp and switchFilterMode are both ctrl+k, veryQuickDown and backSwitchFilterMode are both ctrl+j. The focused window decides which action fires
- Run lazyjournal --config to print the hotkeys currently in effect
Examples
hotkeys:
up: k
down: j
goToFilter: /
exit: ctrl+cRemap movement, filter, and exit keysVersion Info
Compiled from the official lazyjournal GitHub releases.
- Fixed errors when scrolling through logs
- Changed the user log retrieval list to a list of systemd units, and added loading of logs for user units
- Added the -U/--unit-types flag and the unitType setting for filtering unit lists (service by default)
- Added the -l/--logging flag and the logging settings to write executed commands to a log file
- Replaced the separate System and User journal lists with a single list filtered by the -j/--journal-field flag (SYSLOG_IDENTIFIER by default), which significantly speeds up list loading
- Added the -b/--journal-boot flag and journalBoot setting to limit journals to a specific system boot
- Added the -J/--journal-priority flag and journalPriority setting for the default log priority, changeable at runtime
- Added validation of the values passed to the new flags
- Added the ability to change the default lists shown in each panel at startup through the configuration file
- Fixed the container list in Podman when no context parameter is set
- Added a custom path for file logs on Windows (default $HOME/Documents)
- Added quick word-by-word cursor movement in the filter text input with Alt+Left and Alt+Right
- Added time filtering for Kubernetes logs
- Added the -T/--timezone-filter flag and setting for the UTC offset used when filtering container logs by date (+00:00 by default)
- Added publication in the Ubuntu PPA repository and automated release builds with GoReleaser
- Added an _all mode to read every system log from journald without filtering by unit
- Added filtering of journald logs by priority with Ctrl+P, with the priority shown in the status bar
- Added an interface for switching Docker and Kubernetes contexts and SSH connections, plus the ssh.hosts configuration structure (invoked with F2)
- Moved the subtitle from the log output window to the bottom status bar, which now shows the current Docker/Kubernetes context and the output timestamp
- Added output of logs for every container in the selected Kubernetes pod, with pod and container name prefixes
- Separated the mode that disables built-in timestamps for containers (Ctrl+T) and fixed it for Compose stacks
- Added the wrapModeDisable flag and removed the disableTimestamp flag
About Lazyjournal Keybindings & Commands
Lazyjournal is a terminal UI (TUI) log viewer written in Go by Lifailon. It browses journald system and user units, kernel boot logs, auditd records, plain log files on the file system, Docker / Docker Compose / Podman container logs, and Kubernetes pod logs from a single interface, with fuzzy, regex, and date filtering plus syntax highlighting. Despite the name it is not part of the lazygit / lazydocker family by jesseduffield — it is an independent project by a different author that borrows the same lazy TUI philosophy. Because lazyjournal binds the same key to different actions depending on the focused window (Enter, Tab, Ctrl+C, and the movement keys all behave differently in list windows, the log output, filter windows, and the F2 manager), a flat key list is hard to read. This cheat sheet splits every keybinding of lazyjournal 0.8.6 by window context, and adds all 27 CLI flags with their defaults and accepted values, 12 install commands, and the 39 config.yml keys — fully searchable with one-click copy.
Key Features
- Keybindings organized by window context (Global / List Windows / Log Output / Filter / F2 Manager)
- Full-text search across keys and descriptions, plus category filters
- All 27 CLI flags with defaults, accepted values, and validation ranges
- 12 install commands (install script / apt PPA / deb / Homebrew / Conda / Mamba / Pixi / AUR / Docker / Windows / Go / source build)
- 39 config.yml keys covering settings, interface colors, ssh hosts, and hotkey remapping
- One-click copy for every command and config snippet
- Covers lazyjournal 0.8.6 with a version history section
Use Cases
- You just installed lazyjournal and want to learn the keys
- You want to know how the same key behaves in a list window versus the log output or filter window
- You want to copy a CLI flag for a one-off launch (tail lines, journal priority, boot, unit types)
- You want to write or tune ~/.config/lazyjournal/config.yml, including remapped hotkeys
- You read logs over SSH or across Docker and Kubernetes contexts with the F2 manager
Frequently Asked Questions
What is lazyjournal?
Lazyjournal is a terminal UI (TUI) log viewer written in Go by Lifailon. It lets you browse journald units, kernel boot logs, auditd records, log files on the file system, Docker / Compose / Podman container logs, and Kubernetes pod logs from one interface, with fuzzy, regex, and date filtering and syntax highlighting.
Is lazyjournal related to lazygit and lazydocker?
No. Lazygit and lazydocker are both written by jesseduffield, while lazyjournal is an independent project by a different author, Lifailon. It shares the lazy naming and the keyboard-driven TUI philosophy, but it is not an official part of that family and its keybindings are its own.
Which log sources does lazyjournal support?
The systemd panel covers system units, user units, journald journals filtered by field, kernel boot, and auditd. The file panel covers /var/log, a custom path, your home directory, and open file descriptors. The container panel covers Docker, Docker Compose, Podman, and Kubernetes. Note that journald and auditd sources are Linux-only; on Windows the systemd panel is unavailable and the file panel defaults to $HOME/Documents.
How do I read logs on a remote host?
Launch with the -s / --ssh flag and standard ssh options, for example lazyjournal --ssh "root@192.168.3.100 -p 22", or press F2 to open the manager and pick a host from the ssh.hosts list in your config. Remote access needs an ssh key, or password caching through ControlMaster and ControlPersist in ~/.ssh/config. Append sudo to the ssh string when it is available without a password.
What filtering modes are available?
Press / to open the filter window, then switch modes with Up/PgUp/Ctrl+K and Down/PgDown/Ctrl+J. The modes are default, fuzzy, regex, and date. In the date filter windows the left and right arrows shift the since and until dates, Enter applies the filter, and Del or Backspace disables it. Filtering starts after 3 characters by default, which you can change with -F / --min-symbols-filter.
Where is the config.yml located?
Lazyjournal looks for config.yml in ~/.config/lazyjournal/config.yml, next to the executable, and in the directory you launched it from, with the current directory taking priority. Run lazyjournal --config to print the hotkeys and settings currently in effect. Flags you pass explicitly win over the values in the configuration file.
Can I remap the hotkeys?
Yes. The hotkeys section of config.yml holds 32 remappable actions such as showHelp, switchWindow, up, down, goToFilter, and exit. Accepted notation includes a-z, shift+a-z, ctrl+a-z, 0-9, f1-f12, tab, shift+tab, enter, space, backspace, del, esc, alt combinations, and arbitrary symbols. Two defaults are shared on purpose: veryQuickUp and switchFilterMode are both ctrl+k, and veryQuickDown and backSwitchFilterMode are both ctrl+j; the focused window decides which action fires.
How do I install lazyjournal?
On macOS and Linux run 'brew install lazyjournal', or use the install script (curl -sSL .../scripts/install.sh | bash), which drops the binary in ~/.local/bin. Ubuntu users can add the PPA (ppa:lifailon/lazyjournal), Arch users can run 'paru -S lazyjournal', and Windows users can run the install.ps1 script from PowerShell. Conda, Mamba, Pixi, Docker Compose, 'go install', and a source build with make are also documented. The Install category on this page lists every command with one-click copy.