A fast TUI for journalctl — pick a unit, scroll the logs.
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.
- 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.
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 |
curl -sL https://github.com/codervijo/journalview/raw/main/install.sh | bashThis installs to ~/.local/bin/journalview. Make sure ~/.local/bin is on your $PATH.
cargo install journalviewEnsure Rust is installed (see rustup.rs), then:
cargo install --git https://github.com/codervijo/journalview.git journalview- Homebrew — TODO
- Arch (AUR) — TODO
- Standalone release binaries — see the releases page (added by the release workflow on tag push).
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.
Launch:
journalviewThe 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.
| 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 |
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.
This project is licensed under the MIT License.
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.
