Journalview
JournalView is a lightweight, terminal-based application written in Rust that allows users to efficiently view, filter, and navigate system logs from journalctl.
**journalview** is a JournalView is a lightweight, terminal-based application written in Rust that allows users to efficiently view, filter, and navigate system logs from journalctl. The project is written primarily in Rust, distributed under the MIT License license, first published in 2024. Key topics include: journalctl, journald, log-viewer, log-visualization, ratatui.
JournalView
A fast TUI for journalctl — pick a unit, scroll the logs.
<!-- TODO: replace with demo.gif or asciinema cast -->Why JournalView?
journalctl is powerful but pages of text are awkward to navigate, and remembering -u <unit> for every service gets old fast. JournalView is a lightweight terminal UI written in Rust on top of Ratatui: it lists your systemd service units in a side panel, lets you pick one with the keyboard, and shows that unit's journal in a scrollable pane next to it. If no unit is selected it falls back to journalctl --since=yesterday. No daemon, no config — just a binary that shells out to journalctl and systemctl.
Features
- Three-pane layout — left: systemd service units; top right: search box; bottom right: log view; bottom: help line.
- Unit-scoped log view — pick a
.serviceunit withEnterand the log pane refreshes withjournalctl -u <unit>. - Pure keyboard navigation —
Tabcycles panes, arrow keys scroll vertically and horizontally inside each pane. - No config to write — works out of the box on any host where
journalctlandsystemctlare on$PATH. - Search box —
TODO/WIP: typing in the search pane is captured but does not yet filter the log view. Tracked in ROADMAP.md.
Comparison
Cells marked
TODOneed confirmation against current upstream behavior — see issue tracker.
| Capability | JournalView | journalctl | lnav | lazyjournal |
|---|---|---|---|---|
| Interactive TUI | Yes | No (pager only) | Yes | Yes |
| Reads systemd journal | Yes (shells out) | Yes (native) | TODO | TODO |
| Built-in unit picker | Yes | No | TODO | TODO |
| Live tail / follow | No | Yes (-f) | TODO | TODO |
| Regex search inside the TUI | No (WIP) | Yes (-g) | TODO | TODO |
| Reads arbitrary log files | No | No | TODO | TODO |
| Single static binary | Yes (Rust) | n/a (ships with systemd) | TODO | TODO |
Installation
Prebuilt binary (Linux)
bashcurl -sL https://github.com/codervijo/journalview/raw/main/install.sh | bash
This installs to ~/.local/bin/journalview. Make sure ~/.local/bin is on your $PATH.
From crates.io
bashcargo install journalview
From source
Ensure Rust is installed (see rustup.rs), then:
bashcargo install --git https://github.com/codervijo/journalview.git journalview
Other package managers
- Homebrew — TODO
- Arch (AUR) — TODO
- Standalone release binaries — see the releases page (added by the release workflow on tag push).
Requirements
JournalView shells out to journalctl and systemctl, so it expects a Linux host with systemd. It does not need root, but it can only show journal entries the current user is allowed to read.
Usage
Launch:
bashjournalview
The UI opens with the Logs pane focused, showing journalctl --since=yesterday. Tab cycles between Logs → Selector → Search → Logs. In the Selector pane, move the cursor with Up/Down and press Enter to filter the log pane by that service unit.
Hotkeys
| Key | Pane | Action |
|---|---|---|
Tab | any | Cycle to the next pane |
q / Q | any | Quit |
Up / Down | Logs, Selector | Scroll vertically |
Left / Right | Logs, Selector | Scroll horizontally |
Enter | Selector | Filter the log pane by the highlighted service unit |
Up / Down | Selector | Also clears the active unit filter |
| any character | Search | Append to search buffer (filtering not yet wired up — see ROADMAP) |
Backspace | Search | Delete last character from the buffer |
Enter / Esc | Search | Leave the Search pane |
Contributing
Contributions are very welcome. See CONTRIBUTING.md for dev setup, the test loop, and the PR process, and have a look at issues tagged good first issue for a starting point.
License
This project is licensed under the MIT License.
Acknowledgements
Thanks to the following projects for inspiration:
Inspired by the functionality of journalctl and enhanced by the capabilities of Rust for high-performance, terminal-based tools.
Contributors
Showing top 2 contributors by commit count.