wfinfo-go is a lightweight, efficient replacement for WFInfo specifically designed for Linux users.
It automates the process of identifying Warframe relic rewards and fetching their current platinum values from warframe.market.
The tool is written entirely in Go and utilizes Tesseract for high-accuracy Optical Character Recognition (OCR).
- Automatic Detection: Monitors Warframe's
EE.login real-time to detect when a relic reward screen appears. - Smart Screen Capture: Uses X11 (via
xgb) to capture only the Warframe window, ensuring privacy and efficiency. - Robust OCR: Employs a specialized image preprocessing pipeline to isolate and binarize text before processing with Tesseract.
- Fuzzy Matching: Implements the Smith-Waterman algorithm for local alignment, providing high resilience against OCR errors in item names.
- Live Market Data: Fetches up-to-date pricing information directly from the
warframe.marketAPI. - Resource Efficient: Uses an event-driven architecture for log monitoring and optimizes OCR/API requests to minimize CPU and IO overhead.
Run the program from your terminal while Warframe is running. It will stay active in the background, monitoring your EE.log for reward screen events.
wfinfo-go [flags]-h: Shows help information.-d [PATH]: Path to your Steam Library where Warframe is installed (defaults to~/.local/share/Steam).-f [PATH]: Direct path toEE.log. This flag takes precedence over-d.
wfinfo-go -d ~/.local/share/SteamYou can run the binary directly from the bin directory or from your system path if installed.
To run the pre-built binary, you only need the Tesseract engine and its shared libraries.
- Tesseract OCR: The engine and English language data.
- Shared Libraries:
libtesseractandlibleptonica.
Ubuntu/Debian
sudo apt-get install tesseract-ocr libtesseract5Fedora
sudo dnf install tesseract tesseract-langpack-engArch
sudo pacman -S tesseract tesseract-data-engIf you are building from source, you need the following in addition to the runtime dependencies:
- Go (version 1.26 or later)
- C Compiler:
gccorclangfor CGO bindings. - Development Headers: Headers for
libtesseractandlibleptonica. - pkg-config: Required for the Go build system to locate Tesseract.
Ubuntu/Debian
sudo apt-get install golang tesseract-ocr libtesseract-dev pkg-config build-essentialFedora
sudo dnf install golang tesseract-devel gcc pkg-configArch
sudo pacman -S go tesseract gcc pkgconfYou can build the project using the provided Taskfile.yml (requires go-task) or standard Go commands.
Using Task
task buildThis will place the binary in bin/wfinfo-go.
Using Go directly
go build -o bin/wfinfo-go ./cmd/wfinfo-goTo install the binary to /usr/local/bin:
task installTo uninstall:
task uninstall- Log Watching: The application uses
fsnotifyto monitorEE.log. It listens for specific markers indicating the reward screen has initialized (e.g.,VoidProjections: OpenVoidProjectionRewardScreenRMI). - Window Capture: Upon detection, it finds the Warframe window via X11 properties and captures its contents.
- Preprocessing: The captured image is processed to identify text regions, isolate them based on color, and binarize the output to maximize OCR accuracy.
- OCR & Matching: Tesseract extracts text from the processed image. The resulting strings are compared against a local cache of Warframe items using the Smith-Waterman algorithm to find the most likely matches.
- Market Integration: For each identified item, the program queries
warframe.marketfor current sell orders and prints the results to your terminal. Item data and market versions are cached locally in~/.cache/wfm-go/to reduce API load and improve startup time.
The program is designed with a focus on performance:
- Parallel Processing: Interleaves I/O-bound market API requests with CPU-bound OCR operations.
- Event-Driven: Avoids polling the filesystem, reducing idle resource usage.
- Concurrency: Uses Go's concurrency primitives (channels and goroutines) to handle detection and processing asynchronously.
This project is licensed under the BSD 3-Clause License. See the LICENSE file for details.