xr-picker

OpenXR Runtime Picker

Downloads
4K
Stars
29

XR Runtime Picker for OpenXR

This is a cross-platform tool to allow you to easily change your active OpenXR runtime. (It also serves as a bit of a testbed for Rust GUI techniques, though I use it "in production".)

Features include:

  • Finding available runtimes
    • On Windows using the AvailableRuntimes registry key and a few hard-coded
      extras
    • On Linux by listing the files in the config directories
  • Parsing runtime manifests for the runtime name, as well as adding names to
    select exceptions via heuristics.
  • Working with additional runtimes manually added (by browsing to or
    drag-and-dropping a manifest) - useful for runtime developers.
  • Remembering these extra runtimes between sessions.
  • Identifying the active runtime (or runtimes in the case of Windows, 32 and 64
    bit).
  • Setting the active runtime(s)
    • On Windows by setting the registry value/values
    • On Linux by setting a per-user symlink to the manifest.

Maintained at https://github.com/rpavlik/xr-picker.

Installation and Use

  • People using Windows can download a prebuilt release binary from
    Releases.
  • People using Linux can also try a prebuilt release binary from Releases
    (they should be fairly compatible, being built on Ubuntu 20.04), though you
    might need to build it locally if you have issues.
  • On either platform, you can install from packaged source using Cargo, the Rust
    package manager, by running cargo install xrpicker-gui.
  • If you have cloned the source, the normal Rust build and run process will work
    (cargo build, cargo test, cargo run --bin xrpicker-gui, etc.)

Structure

The tool is split into two Rust "crates":

  • xrpicker-core, aka
    xrpicker on crates.io, contains
    utilities for finding and manipulating runtimes, as well as
    framework-independent data structures intended for use in a GUI frontend.
    • It includes a very minimal (for now) CLI tool that can only list the active
      runtime and available runtimes: this will probably be upgraded eventually to
      be able to set the active runtime, in part so that the Windows GUI build can
      invoke it as administrator instead of having to run the whole GUI as
      administrator.
  • xrpicker-gui,
    (xrpicker-gui on crates.io) is a
    cross-platform GUI frontend made using egui.

Development and Contribution

We welcome community contributions to this project. We have a Code of Conduct; by participating in this project you agree to its terms.

CI enforces REUSE, cargo-deny, and simple build tests on Linux and Windows. It is a bit hard to test even the core library because it works with registry keys and the file system, and I have not yet investigated how to mock these cleanly in Rust for automated testing.

License

Licensed under either of the Apache License, Version 2.0 or the MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

This software conforms to the REUSE specification.