| Crates.io | linsplit |
| lib.rs | linsplit |
| version | 1.1.1 |
| created_at | 2026-01-10 23:08:05.213484+00 |
| updated_at | 2026-01-11 21:50:05.443716+00 |
| description | An autosplitter for the game Celeste, working on Linux! |
| homepage | https://github.com/Paloys/linsplit |
| repository | https://github.com/Paloys/linsplit |
| max_upload_size | |
| id | 2034883 |
| size | 94,560 |
A Rust reimplementation of the Celeste AutoSplitter, for Linux.
You can just install it using cargo, if you've got it installed :
cargo install linsplit
If you don't have cargo installed, you can download binaries from the Releases tab. If/when the projet gets big enough, I might try to upload it to various package managers.
To use it, just run it using linsplit if it's in your path, or with ./linsplit wherever you put the executable if not.
LinSplit will then start listening on a port for a LiveSplit One connection. Once it has connected to LiveSplit One, it'll start searching for either Celeste or Everest (the modded version of Celeste) in the memory.
The way LinSplit detects Vanilla Celeste in by finding a specific object in the memory of the program by parsing your save files for your file timers (if you're not using the game from Steam, you might want to change the location with the -f argument).
You can pass arguments to LinSplit to change its behaviour. All arguments can be detailed by running linsplit --help.
The only required argument is your splits file (with the -s argument), which is the same file you're using on LiveSplit One, or on LiveSplit if you came from Windows.
Open an issue ! I'll try to read it as soon as possible. If you're reporting an issue, please provide instructions to recreate it.
My Rust isn't very good, I'm almost no longer a beginner but I don't feel really confident. If you have Rust experience and want to help with the structure or anything else, feel free to open an issue or a pull request ! I just have one go-to rule : no AI-generated code.
Credits are due to the developers of LiveSplit.Celeste from which I took most of the logic used in this program. I also want to thank the developers of LiveSplit (and livesplit-core), as I took a bit of code (the API part) from livesplit-core and because LiveSplit is an amazing software.