Canop/bacon
{ "createdAt": "2020-10-29T12:53:20Z", "defaultBranch": "main", "description": "background code checker", "fullName": "Canop/bacon", "homepage": "https://dystroy.org/bacon", "language": "Rust", "name": "bacon", "pushedAt": "2025-12-31T08:31:30Z", "stargazersCount": 3042, "topics": [ "cargo", "check", "compilation", "rust", "terminal" ], "updatedAt": "2026-01-07T21:54:52Z", "url": "https://github.com/Canop/bacon"}![bacon][logo]
[logo] !: img/logo-text.png?raw=true “bacon”
[![Latest Version][s1]][l1] [![site][s4]][l4] [![Chat on Miaou][s2]][l2] [![License: AGPL v3][s3]][l3]
[s1] !: https://img.shields.io/crates/v/bacon.svg [l1] !: https://crates.io/crates/bacon
[s2] !: https://dystroy.org/chat-shield.svg [l2] !: https://miaou.dystroy.org/4683?bacon
[s3] !: https://img.shields.io/badge/License-AGPL_v3-blue.svg [l3] !: https://www.gnu.org/licenses/agpl-3.0
[s4] !: https://dystroy.org/dystroy-doc-pink-shield.svg [l4] !: https://dystroy.org/bacon
bacon is a background code checker.
It’s designed for minimal interaction so that you can just let it run, alongside your editor, and be notified of warnings, errors, or test failures in your Rust code.
![screenshot]!(doc/screenshot.png)
Documentation
Section titled “Documentation”The bacon website is a complete guide.
Below is only a short overview.
install
Section titled “install”cargo install --locked baconRun this command too if you want to update bacon. Configuration has always been backward compatible so you won’t lose anything.
Some features are disabled by default. You may enable them with
cargo install --features "clipboard sound"check the current project
Section titled “check the current project”baconThat’s how you’ll usually launch bacon, because other jobs like test, clippy, doc, your own ones, are just a key away: You’ll hit c to see Clippy warnings, t for the tests, d to open the documentation, etc.
check another project
Section titled “check another project”bacon --path ../brootor
bacon ../brootcheck all targets (tests, examples, benches, etc)
Section titled “check all targets (tests, examples, benches, etc)”bacon --job check-allWhen there’s no ambiguity, you may omit the --job part:
bacon check-allrun clippy instead of cargo check
Section titled “run clippy instead of cargo check”bacon clippyThis will run against all targets like check-all does.
run tests
Section titled “run tests”bacon testor bacon nextest if you’re a nextest user.
![bacon test]!(doc/test.png)
When there’s a failure, hit f to restrict the job to the failing test. Hit esc to get back to all tests.
define your own jobs
Section titled “define your own jobs”First create a bacon.toml file by running
bacon --initThis file already contains some standard jobs. Add your own, for example
[jobs.check-win]command = ["cargo", "check", "--target", "x86_64-pc-windows-gnu"]or
[jobs.check-examples]command = ["cargo", "check", "--examples"]watch = ["examples"] # src is implicitly includedand run
bacon check-winor
bacon check-examplesThe bacon.toml file may evolve with the features and settings of your project and should be added to source control.
Optional features
Section titled “Optional features”Some bacon features can be disabled or enabled at compilation:
"clipboard"- disabled by default : necessary for thecopy-unstyled-outputaction"sound"- disabled by default : necessary for theplay-soundaction
Licences
Section titled “Licences”Bacon is licenced under AGPL-3.0. You’re free to use it to compile the Rust projects of your choice, even commercial.
The logo is designed by [Peter Varo][pv] and licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License][cc-lic]. [![license][cc-img]][cc-lic]
[pv] !: https://petervaro.com [cc-lic] !: https://creativecommons.org/licenses/by-sa/4.0 [cc-img] !: https://i.creativecommons.org/l/by-sa/4.0/80x15.png