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.
- 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
Coming soon
- Linux with systemd/journald
- Node.js 18+
- Rust toolchain (1.70+)
journalctlcommand available in PATH
# Clone the repository
git clone https://github.com/linx-systems/journalreader.git
cd journalreader
# Install dependencies
npm install
# Build the application
npm run tauri buildThe built application will be available in src-tauri/target/release/bundle/ as:
- AppImage (portable)
- DEB package (Debian/Ubuntu)
# Install dependencies
npm install
# Run in development mode with hot reload
npm run tauri devThe 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 |
- Press
?to open the in-app shortcut reference. - Use
j/kor the arrow keys to move through entries, andEnterorSpaceto expand one. - Use
/orCtrl+Ffor search,Ctrl+Rto refresh, andfto toggle live follow mode. - While a modal dialog is open, application shortcuts are suspended;
Esccloses the dialog.
- 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/Endfor the limits, or double-click to reset to 50%. - Press
Escduring a drag to restore the ratio from before the drag.
Access Settings from the toolbar to:
- Switch between light/dark themes
- Follow system theme preference
- Create and customize themes
- Import/export theme configurations
- 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 to0600.
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
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
| 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 |
Recommended: VS Code with:
MIT