Skip to main content

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 use
  1. 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. 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. 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)
View version details

Global (All Windows)

F1
Open the help window listing the hotkeys and their current default values. Close it with Esc.
F2
Open the manager window for switching SSH connections, Docker contexts, Kubernetes contexts, and Kubernetes namespaces.
Esc
Close the overlay window that is currently open (help or manager) and restore the standard keybindings.
Tab
Switch to the next window.
ShiftTab
Return to the previous window.
/
Go to the filter window from the current list window (list filter) or from the log output window (log filter).
End/CtrlE
Go to the end of the log, resetting the scroll position to the bottom.
Home/CtrlA
Go to the top of the log.
]
Increase the number of log lines to output (range: 200-200000, default: 10K).
[
Decrease the number of log lines to output (range: 200-200000, default: 10K).
}
Increase the background update interval of the log output (range: 2-10 seconds, default: 5).
{
Decrease the background update interval of the log output (range: 2-10 seconds, default: 5).
CtrlU
Disable streaming of new events, so the log is loaded once without automatic updates. Pressing it again turns auto-update back on.
CtrlR
Update the current log output manually. This is what you use while streaming is disabled.
CtrlQ
Update all log lists, reloading the units, files, and containers.
CtrlW
Switch the log highlighting mode, cycling through disable, default, tailspin, and bat.
CtrlP
Switch the journald log priority, cycling through debug, info, notice, warning, err, crit, alert, and emerg. The current priority is shown in the status bar.
CtrlD
Change the read mode for Docker logs between stream only and json-file read from the file system.
CtrlS
Change the stream display mode for Docker logs, cycling through stream (all), stdout only, and stderr only.
CtrlT
Enable or disable the built-in timestamp for Docker and Kubernetes logs.
CtrlC
Exit the application. Pressed in a list window or in the log output window it quits immediately.
Mouse left click
Select a window and pick a log entry from a list with the mouse.
Mouse wheel up/Mouse wheel down
Scroll lists and the log output by 1 item or line per wheel step.
AltShift
Hold Alt+Shift while selecting with the mouse to copy text. This hands the selection back to the terminal while mouse control is enabled.

List Windows

Up/PgUp/k
Move up by 1 item through the journal list.
Down/PgDown/j
Move down by 1 item through the journal list.
ShiftUp/ShiftPgUp/ShiftK
Quickly move up through the journal list by 10 items.
ShiftDown/ShiftPgDown/ShiftJ
Quickly move down through the journal list by 10 items.
AltUp/AltPgUp/CtrlK
Very quickly move up through the journal list by 100 items. Ctrl+K is the Vim-style alternative from the config, useful on macOS where Alt combinations are awkward.
AltDown/AltPgDown/CtrlJ
Very quickly move down through the journal list by 100 items. Ctrl+J is the Vim-style alternative from the config.
Left/h
Switch to the previous journal list inside the selected window: systemUnits / userUnits / systemJournals / kernelBoot / auditd in the systemd panel, varlog / customPath / home / descriptor in the file panel, and docker / compose / podman / kubernetes in the container panel.
Right/l
Switch to the next journal list inside the selected window.
Enter
Load the log of the entry selected in the list window.

Log Output

Up/PgUp/k
Scroll the log output up by 1 line.
Down/PgDown/j
Scroll the log output down by 1 line.
ShiftUp/ShiftPgUp/ShiftK
Scroll the log output up by 10 lines.
ShiftDown/ShiftPgDown/ShiftJ
Scroll the log output down by 10 lines.
AltUp/AltPgUp/CtrlUp/CtrlPgUp/CtrlK
Scroll the log output up by 500 lines.
AltDown/AltPgDown/CtrlDown/CtrlPgDown/CtrlJ
Scroll the log output down by 500 lines.
AltMouse wheel/CtrlMouse wheel
Scroll the log output by 100 lines per wheel step while holding Alt or Ctrl.

Filter & Date Filter

Up/PgUp/CtrlK
Switch the filtering mode forward through default, fuzzy, regex, and date.
Down/PgDown/CtrlJ
Switch the filtering mode backward through default, fuzzy, regex, and date.
Enter
Return to the previous window, the one that was active before you entered the filter with the slash key.
Enter
Apply the selected date filter and reload the log output. Used in the since and until date filter windows.
Left/h
Decrease the since or until date used for filtering by date.
Right/l
Increase the since or until date used for filtering by date.
Del/Backspace
Disable filtering by date. The field is reset and the frame turns to the error color.
AltLeft/CtrlLeft
Quickly move the cursor left by one word, to the previous space, in the filter text input. Added in 0.8.5.
AltRight/CtrlRight
Quickly move the cursor right by one word, to the next space, in the filter text input. Added in 0.8.5.
Left/Right
Move the text cursor one character left or right in the filter text input.
Backspace
Delete the character to the left of the cursor in the filter text input.
Del
Delete the character to the right of the cursor in the filter text input.
CtrlC
Clear the input text in the filter window. If the filter is already empty, the application exits.

Manager (F2)

Tab
Switch between the manager panels in order: ssh manager, Docker context manager, Kubernetes context manager, Kubernetes namespace manager.
ShiftTab
Cycle the manager panels in reverse order: Kubernetes namespace manager, Kubernetes context manager, Docker context manager, ssh manager.
Up/Down
Move the cursor up or down in the manager list.
Enter
Select the highlighted line to apply the SSH host, Docker context, Kubernetes context, or namespace.

CLI Flags

-h, --help

Show help.

Notes

  • Boolean flag (default: false)

Examples

lazyjournal --help
Show usage and the list of flags

-v, --version

Show the version.

Notes

  • Boolean flag (default: false)

Examples

lazyjournal --version
Show version information

-g, --config

Show the configuration of hotkeys and settings, so you can check the values currently in effect.

Notes

  • Boolean flag (default: false)
  • Handy for verifying which config.yml lazyjournal actually picked up

Examples

lazyjournal --config
Print the active hotkeys and settings

-a, --audit

Show audit information.

Notes

  • Boolean flag (default: false)
  • The official docs do not describe the output in detail

Examples

lazyjournal --audit
Print audit information

-l, --logging

Enable logging of executed commands for debugging.

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 --logging
Write the executed commands to a log file

-d, --tail-mode-disable

Disable streaming of new events, so the log is loaded once without updates.

Notes

  • Boolean flag (default: false)
  • You can still refresh manually with Ctrl+R

Examples

lazyjournal --tail-mode-disable
Load logs once without background updates

-t, --tail-lines

Change the number of log lines to output (range: 200-200000, default: 10000).

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 50000
Load the last 50000 lines

-u, --update-interval

Change the update interval of the log output in seconds (range: 2-10, default: 5).

Notes

  • Out-of-range values exit with a valid range message

Examples

lazyjournal --update-interval 2
Refresh the log output every 2 seconds

-F, --min-symbols-filter

Minimum number of symbols required before the output is filtered (range: 1-10, default: 3).

Notes

  • Out-of-range values exit with a valid range message

Examples

lazyjournal --min-symbols-filter 1
Start filtering from the first character

-T, --timezone-filter

UTC offset used when filtering Docker, Compose, Podman, and Kubernetes container logs by date (default: +00:00).

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:00
Filter container logs using a JST offset

-m, --mouse-disable

Disable mouse control support.

Notes

  • Boolean flag (default: false)
  • Useful when you want the terminal's own text selection back

Examples

lazyjournal --mouse-disable
Launch without mouse control

-w, --wrap-disable

Disable wrap mode in the log content.

Notes

  • Boolean flag (default: false)

Examples

lazyjournal --wrap-disable
Show long log lines without wrapping

-C, --color-mode

Highlighting mode for logs (default: default).

Notes

  • Available values: default, tailspin, bat, disable
  • Can be switched at runtime with Ctrl+W

Examples

lazyjournal --color-mode tailspin
Highlight the log output with tailspin

-U, --unit-types

Filter the list of system and user units by type (default: service).

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,socket
Show services, timers, and sockets in the unit list

-j, --journal-field

Filter the list of system journals by journald field (default: SYSLOG_IDENTIFIER).

Notes

  • Examples: _UID, _PID, _COMM, _EXE, _CMDLINE
  • Values are validated against the journald fields available on the system

Examples

lazyjournal --journal-field _COMM
Build the journal list from process names

-J, --journal-priority

Filter the log output by priority (default: debug).

Notes

  • Available values: debug, info, notice, warning, err, crit, alert, emerg
  • Can be changed at runtime with Ctrl+P

Examples

lazyjournal --journal-priority err
Start with the log output limited to err and above

-b, --journal-boot

Filter the log output by system boot period (default: all).

Notes

  • 0 is the current boot, -1 the previous one

Examples

lazyjournal --journal-boot 0
Show journals from the current boot only

-p, --custom-path

Custom file system path to search for logs.

Notes

  • Defaults to /opt on Linux and $HOME/Documents on Windows

Examples

lazyjournal --custom-path /srv
Search a different directory for log files

-o, --docker-stream-only

Force reading of Docker container logs in stream mode, instead of reading them from the file system.

Notes

  • Boolean flag (default: false)
  • Can be switched at runtime with Ctrl+D

Examples

lazyjournal --docker-stream-only
Read Docker logs through the stream API only

-D, --docker-context

Use the specified Docker context (default: default).

Notes

  • Contexts can also be switched at runtime from the F2 manager

Examples

lazyjournal --docker-context my-context
Launch against a specific Docker context

-P, --podman-context

Use the specified Podman context. Not used by default.

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-context
Launch against a specific Podman context

-K, --kubernetes-context

Use the specified Kubernetes context (default: default).

Notes

  • Contexts can also be switched at runtime from the F2 manager

Examples

lazyjournal --kubernetes-context my-cluster
Launch against a specific Kubernetes context

-n, --kubernetes-namespace

Use the specified Kubernetes namespace (default: all).

Notes

  • Namespaces can also be switched at runtime from the F2 manager

Examples

lazyjournal --kubernetes-namespace kube-system
Limit the pod list to one namespace

-c, --command-color

Apply ANSI coloring in command-line mode, so lazyjournal can be used as a pipe filter instead of a full TUI.

Notes

  • Boolean flag (default: false)
  • lj is the alias suggested in the official docs: alias lj=lazyjournal

Examples

cat /var/log/syslog | lj -c
Colorize piped log output

-f, --command-fuzzy

Filter piped input using fuzzy search in command-line mode.

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

Filter piped input using a regular expression in command-line mode.

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

Connect to a remote host using standard ssh options and read its logs.

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 SSH
lazyjournal --ssh "lifailon@192.168.3.101 sudo"
Read privileged logs with passwordless sudo

Install

curl -sSL https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.sh | bash

Quickly install or update the stable version on Linux, macOS, or a BSD-based system. The script detects your OS and architecture, downloads the latest binary to ~/.local/bin/lazyjournal, writes the configuration to ~/.config/lazyjournal/config.yml, and grants execute permission.

Notes

  • Make sure ~/.local/bin is on your PATH

Examples

curl -sSL https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.sh | bash
Install or update the binary with the official script

sudo add-apt-repository -y ppa:lifailon/lazyjournal && sudo apt update && sudo apt install -y lazyjournal

Install on Ubuntu with apt from the Launchpad PPA repository (ppa:lifailon/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 lazyjournal
Add the PPA and install with apt

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.deb

Download the deb package from the GitHub releases page and install it on any Debian-based system.

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.deb
Install the 0.8.6 deb package

brew install lazyjournal

Install lazyjournal with Homebrew on macOS or Linux.

Examples

brew install lazyjournal
Install with Homebrew

conda install -c conda-forge lazyjournal

Install lazyjournal from conda-forge with conda (Linux, macOS, Windows).

Examples

conda install -c conda-forge lazyjournal
Install from conda-forge

mamba install -c conda-forge lazyjournal

Install lazyjournal from conda-forge with mamba (Linux, macOS, Windows).

Examples

mamba install -c conda-forge lazyjournal
Install from conda-forge with mamba

pixi global install lazyjournal

Install lazyjournal user-globally with pixi.

Examples

pixi global install lazyjournal
Install globally with pixi

paru -S lazyjournal

Install lazyjournal from the AUR on Arch Linux.

Notes

  • Any AUR helper works; the official docs use paru

Examples

paru -S lazyjournal
Install from the AUR

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 lazyjournal

Download the official docker-compose file and run lazyjournal in a container using the lifailon/lazyjournal image from Docker Hub. The image ships with the packages required to run, and the compose file pre-configures read-only access rights so every log source on the host system stays reachable.

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 lazyjournal
Run lazyjournal with Docker Compose

irm https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.ps1 | iex

Quickly install lazyjournal from a PowerShell console on Windows.

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 | iex
Install on Windows with PowerShell

go install github.com/Lifailon/lazyjournal@latest

Install lazyjournal as a Go package.

Notes

  • This installs the version from the latest commit, which may be unstable

Examples

go install github.com/Lifailon/lazyjournal@latest
Install with the Go toolchain

git clone https://github.com/Lifailon/lazyjournal && cd lazyjournal && make build

Clone the repository and build the binary with Make.

Examples

git clone https://github.com/Lifailon/lazyjournal && cd lazyjournal && make build
Build lazyjournal from source

Config & Customization

settings.loggingEnable

Enable logging of executed commands for debugging. Config equivalent of -l / --logging. Default: false.

Examples

settings:
  loggingEnable: true
Record the commands lazyjournal runs

settings.loggingPath

Path of the log file used when logging is enabled. Falls back to lazyjournal.log when empty. Default: lazyjournal.log.

Notes

  • No CLI flag equivalent

Examples

settings:
  loggingPath: /tmp/lazyjournal.log
Write the debug log to a specific path

settings.loggingType

Format of the written log file. Accepts text or json; any other value falls back to text. Default: text.

Notes

  • No CLI flag equivalent

Examples

settings:
  loggingType: json
Write the debug log as JSON

settings.tailModeDisable

Disable streaming of new events, so the log is loaded once without updates. Config equivalent of -d / --tail-mode-disable. Default: false.

Examples

settings:
  tailModeDisable: true
Start with background streaming turned off

settings.tailModeLines

Number of log lines to output. Config equivalent of -t / --tail-lines. Default: 10000.

Notes

  • Valid values: 200, 500, 1000, 5000, 10000, 20000, 30000, 40000, 50000, 100000, 150000, 200000

Examples

settings:
  tailModeLines: 20000
Load 20000 lines by default

settings.updateInterval

Update interval of the log output in seconds. Config equivalent of -u / --update-interval. Range: 2-10, default: 5.

Examples

settings:
  updateInterval: 3
Refresh the log output every 3 seconds

settings.minSymbolFilter

Minimum number of symbols required before the output is filtered. Config equivalent of -F / --min-symbols-filter. Range: 1-10, default: 3.

Examples

settings:
  minSymbolFilter: 1
Start filtering from the first character

settings.timezoneFilter

UTC offset used when filtering container logs by date. Config equivalent of -T / --timezone-filter. Default: +00:00.

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 filtering

settings.mouseDisable

Disable mouse control support. Config equivalent of -m / --mouse-disable. Default: false.

Examples

settings:
  mouseDisable: true
Turn off mouse control permanently

settings.wrapModeDisable

Disable wrap mode in the log content. Config equivalent of -w / --wrap-disable. Default: false.

Notes

  • Added in 0.8.4, replacing the older disableTimestamp flag

Examples

settings:
  wrapModeDisable: true
Show long log lines without wrapping

settings.colorMode

Highlighting mode for logs. Config equivalent of -C / --color-mode. Available values: default, tailspin, bat, disable. Default: default.

Notes

  • Can be switched at runtime with Ctrl+W

Examples

settings:
  colorMode: tailspin
Highlight logs with tailspin by default

settings.colorActionsDisable

Disable coloring for action keywords such as restart and update, to reduce visual noise. Default: false.

Notes

  • No CLI flag equivalent

Examples

settings:
  colorActionsDisable: true
Stop highlighting action keywords

settings.unitType

Filter the list of system and user units by type. Config equivalent of -U / --unit-types. Default: service.

Notes

  • Example value: service,timer,scope,socket,mount

Examples

settings:
  unitType: service,timer
Show services and timers in the unit list

settings.journalField

Filter the list of system journals by journald field. Config equivalent of -j / --journal-field. Default: SYSLOG_IDENTIFIER.

Notes

  • Examples: _UID, _PID, _COMM, _EXE, _CMDLINE

Examples

settings:
  journalField: _COMM
Build the journal list from process names

settings.journalPriority

Filter the log output by priority. Config equivalent of -J / --journal-priority. Available values: debug, info, notice, warning, err, crit, alert, emerg. Default: debug.

Notes

  • Can be changed at runtime with Ctrl+P

Examples

settings:
  journalPriority: warning
Start with warning level and above

settings.journalBoot

Filter the log output by system boot period. Config equivalent of -b / --journal-boot. Default: all.

Notes

  • 0 is the current boot, -1 the previous one

Examples

settings:
  journalBoot: "0"
Show journals from the current boot only

settings.customPath

Custom file system path to search for logs. Config equivalent of -p / --custom-path. Defaults to /opt on Linux and $HOME/Documents on Windows when empty.

Examples

settings:
  customPath: /srv
Search a different directory for log files

settings.dockerStreamOnly

Force reading of Docker container logs in stream mode instead of from the file system. Config equivalent of -o / --docker-stream-only. Default: false.

Examples

settings:
  dockerStreamOnly: true
Always read Docker logs through the stream API

settings.dockerContext

Docker context to use. Config equivalent of -D / --docker-context. Default: default.

Examples

settings:
  dockerContext: my-context
Start with a specific Docker context

settings.podmanContext

Podman context to use. Config equivalent of -P / --podman-context. Not used by default.

Notes

  • When it is unset, the context parameter is omitted from the Podman calls entirely

Examples

settings:
  podmanContext: my-context
Start with a specific Podman context

settings.kubernetesContext

Kubernetes context to use. Config equivalent of -K / --kubernetes-context. Default: default.

Examples

settings:
  kubernetesContext: my-cluster
Start with a specific Kubernetes context

settings.kubernetesNamespace

Kubernetes namespace to use. Config equivalent of -n / --kubernetes-namespace. Default: all.

Examples

settings:
  kubernetesNamespace: kube-system
Limit the pod list to one namespace

settings.disableFastMode

Disable fast mode, which loads journals in a goroutine and is marked as beta in the source. Fast mode is enabled by default. Default: false.

Notes

  • No CLI flag equivalent

Examples

settings:
  disableFastMode: true
Fall back to sequential journal loading

interface.systemLogList

System log list shown in the panel when the interface starts. Available values: systemUnits, userUnits, systemJournals, kernelBoot, auditd. Default: systemUnits.

Notes

  • Added in 0.8.5

Examples

interface:
  systemLogList: auditd
Open the systemd panel on the auditd list

interface.fileLogList

File log list shown in the panel when the interface starts. Available values: varlog, customPath, home, descriptor. Default: varlog.

Examples

interface:
  fileLogList: customPath
Open the file panel on your custom path

interface.containerLogList

Container log list shown in the panel when the interface starts. Available values: docker, compose, podman, kubernetes. Default: docker.

Examples

interface:
  containerLogList: kubernetes
Open the container panel on Kubernetes pods

interface.sinceDateFilterMode

Enable the since date filter when the interface starts, defaulting to today. Default: false.

Examples

interface:
  sinceDateFilterMode: true
Start with the since date filter active

interface.untilDateFilterMode

Enable the until date filter when the interface starts, defaulting to today. Default: false.

Examples

interface:
  untilDateFilterMode: true
Start with the until date filter active

interface.foregroundColor

Foreground (text) color of the interface. Default: default.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  foregroundColor: white
Use white text

interface.backgroundColor

Background color of the interface. Default: default.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  backgroundColor: black
Use a black background

interface.selectedForegroundColor

Foreground color of the selected list item. Default: black.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  selectedForegroundColor: black
Set the selected item text color

interface.selectedBackgroundColor

Background color of the selected list item. Default: green.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  selectedBackgroundColor: blue
Highlight the selected item in blue

interface.frameColor

Color of the window frames. Default: default.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  frameColor: cyan
Draw window frames in cyan

interface.titleColor

Color of the window titles. Default: default.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  titleColor: cyan
Draw window titles in cyan

interface.selectedFrameColor

Frame color of the currently selected (focused) window. Default: green.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  selectedFrameColor: yellow
Mark the focused window with a yellow frame

interface.selectedTitleColor

Title color of the currently selected (focused) window. Default: green.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  selectedTitleColor: yellow
Mark the focused window title in yellow

interface.errorColor

Color used for error output, for example an invalid regular expression in the filter input. Default: red.

Notes

  • Available colors: default, green, black, yellow, red, blue, cyan, magenta, white

Examples

interface:
  errorColor: magenta
Show errors in magenta

ssh.hosts

List of ssh hosts with their connection flags, switchable from the F2 ssh manager. Each entry uses standard ssh arguments. Commented out in the shipped config.yml, so no hosts are defined by default.

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 manager

hotkeys.<action>

Every hotkey can be remapped in the hotkeys section of config.yml. The section holds 32 actions: showHelp, showManager, switchWindow, backSwitchWindows, up, quickUp, veryQuickUp, switchFilterMode, down, quickDown, veryQuickDown, backSwitchFilterMode, left, right, disableFilterByDate, loadJournal, goToFilter, goToEnd, goToTop, tailModeMore, tailModeLess, updateIntervalMore, updateIntervalLess, autoUpdateJournal, updateJournal, updateLists, switchColorMode, switchPriority, switchDockerMode, switchStreamMode, timestampShow, and exit.

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+c
Remap movement, filter, and exit keys

Version Info

Compiled from the official lazyjournal GitHub releases.

0.8.6 (March 2026)

View official release

  • 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
0.8.5 (February 2026)

View official release

  • 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
0.8.4 (January 2026)

View official release

  • 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.