Skip to content

Repository files navigation

Journal Reader

A modern, native Linux desktop application for reading and filtering system journal logs. Built with Tauri, React, and Rust, it provides an intuitive GUI alternative to the command-line journalctl tool.

License Platform

Features

  • Advanced Filtering - Filter logs by priority level, time range, systemd units, boot sessions, and syslog identifiers
  • Powerful Search - Grep-based pattern matching with regex support and case-sensitivity toggle
  • Virtual Scrolling – Efficiently browse large log sets with smooth infinite scroll
  • Expandable Entries - Click any log entry to view full metadata (PID, UID, executable, hostname, etc.)
  • Theme Support - Dark/light themes with system-aware defaults, plus custom theme creation
  • Multi-Boot Support – View and compare logs across different boot sessions
  • Accessible Controls - Hover tooltips and descriptive labels clarify every button, including icon-only actions

Screenshots

Coming soon

Requirements

  • Linux with systemd/journald
  • Node.js 18+
  • Rust toolchain (1.70+)
  • journalctl command available in PATH

Installation

From Source

# Clone the repository
git clone https://github.com/linx-systems/journalreader.git
cd journalreader

# Install dependencies
npm install

# Build the application
npm run tauri build

The built application will be available in src-tauri/target/release/bundle/ as:

  • AppImage (portable)
  • DEB package (Debian/Ubuntu)

Development

# Install dependencies
npm install

# Run in development mode with hot reload
npm run tauri dev

Usage

Filter Panel

The left sidebar provides filtering options:

Filter Description
Search Text search with regex support
Priority Filter by syslog priority (0=Emergency to 7=Debug)
Time Range Predefined presets or custom date ranges
Boot Select specific boot session or offset
Units Filter by systemd units/services

Keyboard Shortcuts

  • Press ? to open the in-app shortcut reference.
  • Use j/k or the arrow keys to move through entries, and Enter or Space to expand one.
  • Use / or Ctrl+F for search, Ctrl+R to refresh, and f to toggle live follow mode.
  • While a modal dialog is open, application shortcuts are suspended; Esc closes the dialog.

Split View

  • Drag the separator to resize panels; the new ratio is saved when the drag finishes.
  • Focus the separator and use the arrow keys for 1% adjustments, Home/End for the limits, or double-click to reset to 50%.
  • Press Esc during a drag to restore the ratio from before the drag.

Themes

Access Settings from the toolbar to:

  • Switch between light/dark themes
  • Follow system theme preference
  • Create and customize themes
  • Import/export theme configurations

Security

  • SSH host-key approval is bound to the exact public key and endpoint shown in the verification dialog; authentication stops if the server presents a different key.
  • Journal values exported to CSV are encoded as data and formula-like cells are neutralized before opening them in spreadsheet software.
  • The Linux configuration directory is restricted to the current user (0700), and the offline SQLite cache and existing sidecars are restricted to 0600.

Tech Stack

Frontend:

  • React 19 with TypeScript
  • Vite for build tooling
  • Tailwind CSS for styling
  • Zustand for state management
  • TanStack Virtual for virtualized scrolling

Backend:

  • Tauri 2 for native desktop integration
  • Rust for system-level journal access
  • Tokio async runtime

Project Structure

journalreader/
├── src/                    # React frontend
│   ├── components/         # UI components
│   │   ├── filters/        # Filter panel components
│   │   ├── logs/           # Log display components
│   │   ├── toolbar/        # Toolbar components
│   │   └── settings/       # Settings/theme components
│   ├── hooks/              # Custom React hooks
│   ├── stores/             # Zustand state stores
│   └── lib/                # Utilities and types
├── src-tauri/              # Rust backend
│   └── src/
│       ├── commands/       # Tauri command handlers
│       └── journal/        # journalctl integration
├── package.json
└── README.md

Development

Available Scripts

Command Description
npm run dev Start Vite dev server
npm run build Build frontend for production
npm run preview Preview production build
npm run tauri dev Run full Tauri app in dev mode
npm run tauri build Build distributable application

IDE Setup

Recommended: VS Code with:

License

MIT

About

For your journalctl reading needs.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages