3 stable releases

1.19.0 Aug 5, 2024
1.3.2 Dec 13, 2020
1.2.8 Dec 12, 2020

#15 in Games

Download history 21/week @ 2024-07-24 120/week @ 2024-07-31 28/week @ 2024-08-07 13/week @ 2024-09-11 10/week @ 2024-09-18 5/week @ 2024-09-25 5/week @ 2024-10-02

197 downloads per month

MIT/Apache

210KB
4K SLoC

mist

Donate using Liberapay ko-fi

a minimal, improved speedrun timer

Changelog

Latest Release

features

mist does most of what you would expect your speedrun timer to do as far as timing and operation, but beyond that:

  • Cross platform
    • Linux
    • Windows
    • MacOS (builds, at least)
  • Human-readable split file (using ron)
  • customizability
    • fonts/font sizes
    • colors
    • keybinds
    • background images
    • panels (sum of best etc)
    • time rounding (any framerate)
    • inline splits or use two rows
  • splits editor
    • convert lss to msf (mostly effective)
  • hot reloading
    • split file reloading
    • config reloading
  • save and restore current timer state from a file
  • plugins

simple installation

Get the latest release from the releases page. Linux users will need to install SDL2, SDL2_Image, SDL2_GFX, SDL2_TTF on their system to run it. You can also install from crates.io, i.e. cargo install mist.

compiling from source

To build this, you will need SDL2, and SDL2_TTF as well as potentially SDL2_Image and SDL2_GFX depending on your configuration. On Linux, get them from your system package manager. On macOS, you could use homebrew to install them.

cargo features

  • bg: enables timer background images. Requires SDL2_GFX and SDL2_Image.
  • icon: enables app icon. Requires SDL2_Image.
  • plugins: enables plugin loading and running.
  • portable: changes config and plugin directories to be adjacent to the executable rather than platform-specific
  • instant: enables custom implementation of std::time::Instant from mist-core.

windows

Setting up your build on windows kinda sucks. What I did is use vcpkg to build all of the necessary DLLs and LIBs and then copied them to the path specified here in step 3.

Compile with cargo build --release then move the exe as well as the sdl related dlls into the same folder to run.

usage

The default keybinds are:

  • F1: Open new split file
  • F2: Open a new config file
  • F3: Dump timer state to a file
  • F4: Load timer state from a file
  • Space: Start/split/stop
  • Enter: Pause/unpause
  • Backspace: Unsplit
  • R: Reset
  • RightShift: Skip split
  • : Previous comparison
  • : Next comparison
  • Mousewheel: Scroll splits up/down (if there are more than fit in the window)

configuration

mist reads its configuration from the user configuration directory, specific to each operating system:

  • Linux: $XDG_CONFIG_HOME/mist/mist.cfg or $HOME/.config/mist/mist.cfg
  • Windows: C:\Users\YourUser\AppData\Roaming\mist\mist.cfg
  • MacOS: $HOME/Library/Application Support/mist/mist.cfg

Alternatively, if you have a portable build, mist will look for mist.cfg in the directory where the executable is stored.

about plugins

Plugins are dynamic libraries that mist loads at runtime. You can find information on how to develop plugins here.

If plugins are enabled, they will be loaded from the directory plugins in either the platform-specific configuration location above, or in the executable's directory on a portable build.

This will be eventually a list of interesting plugins but for now there is one:

Licensing

Like Rust itself, mist is licensed under MIT or Apache 2.0, at your option. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~21MB
~364K SLoC