📖 wiky
Beautiful Wikipedia in your terminal — with hex colors, emoji, Markdown rendering, and full theme customisation.
✨ Features
| Feature | Detail |
|---|---|
| 🎨 Hex color theming | Full 24-bit truecolor — every UI element configurable |
| 😀 Emoji decorations | Headings, bullets, links and results all get emoji prefixes |
| 📝 Markdown rendering | Article headings, lists, bold, italic, code rendered beautifully |
| 🌍 Multi-language | Any Wikipedia language (en, id, de, ja, …) |
| ⚙️ TOML config file | Persistent per-user settings, auto-placed by OS convention |
| 📄 Pager support | Pipe long articles through less automatically |
| 🌐 Open in browser | Jump straight to the Wikipedia page |
| 📦 Library + binary | Use as a Rust library or standalone CLI tool |
| 🔄 Interactive mode | Search → pick a result → read, all in one command |
📥 Installation
From crates.io
From source
🚀 Usage
Search
Read an article
Quick summary
Interactive mode (search → pick → read)
Open in browser
Categories
Global flags
⚙️ Configuration
View / edit config
Config file (TOML)
The config file is automatically created at:
| Platform | Path |
|---|---|
| Linux | ~/.config/wiky/config.toml |
| macOS | ~/Library/Application Support/wiky/config.toml |
| Windows | %APPDATA%\wiky\config.toml |
= "en" # Wikipedia language code
= "dark" # dark | light | solarized | nord | dracula | custom
= 0 # 0 = auto-detect terminal width
= false # pipe through $PAGER / less
= 10
= false
= false
# Custom theme — used when theme = "custom"
[]
= "#61AFEF"
= "#E5C07B"
= "#98C379"
= "#ABB2BF"
= "#56B6C2"
= "#E06C75"
= "#C678DD"
= "#282C34"
= "#61AFEF"
= "#ABB2BF"
= "#5C6370"
= "#3E4451"
= "#E06C75"
= "#98C379"
= "#5C6370"
Set custom theme colors inline
🎨 Themes
| Name | Description |
|---|---|
dark |
One Dark (default) |
light |
Clean light terminal |
solarized |
Solarized Dark |
nord |
Nord |
dracula |
Dracula |
custom |
Your own hex colors from [custom_theme] |
📚 Library Usage
Add to Cargo.toml:
[]
= "0.1"
= { = "1", = ["full"] }
Basic example
use ;
async
Custom theme
use ;
let mut config = default;
config.theme = "custom".into;
config.custom_theme.title = "#FF6600".into;
config.custom_theme.heading = "#00BFFF".into;
let theme = config.active_theme;
let renderer = new;
renderer.print_message;
Hex color utilities
use ;
let = hex_to_rgb.unwrap; // (97, 175, 239)
let colored = colorize_hex; // red-ish truecolor string
println!;
🏗️ Architecture
wiky/
├── src/
│ ├── lib.rs — public API, re-exports
│ ├── main.rs — CLI binary (clap subcommands)
│ ├── client.rs — Wikipedia API client (async reqwest)
│ ├── config.rs — TOML config via confy
│ ├── render.rs — terminal renderer (colors + emoji + wrapping)
│ ├── theme.rs — hex color parsing, Theme struct, built-ins
│ └── error.rs — WikiError enum (thiserror)
└── tests/
└── integration_tests.rs
🛠️ Development
# Build
# Run
# Tests
# Lint
# Docs
# Release build
📜 License
MIT © 2024 Hadi Cahyadi — cumulus13@gmail.com
👤 Author
🔗 Links
- Homepage / Source: https://github.com/cumulus13/wiky
- Wikipedia API: https://www.mediawiki.org/wiki/API:Main_page
- confy (config crate): https://crates.io/crates/confy
- colored (terminal colors): https://crates.io/crates/colored
