Provides a single TUI-based registry for drm-free, wine and steam games on linux, accessed through a rofi launch menu.

Overview

eidolon builds.sr.ht status

A conversion of steam_suite to rust with additional features. Provides a single TUI-based registry for drm-free, wine and steam games on linux, accessed through a rofi launch menu. Simple, fast and lightweight. This is a mirror of the sr.ht repository. Please file issues for eidolon here and patches here, though I will still accept issues and pull requests on github.

See it in action

A gif showing eidolon working

Installation

You can now install from crates.io. Just run cargo install eidolon and install rofi via your distro's package manager!

You'll need rofi and cargo installed. Run:

git clone https://git.sr.ht/~nicohman/eidolon && cd eidolon

cargo install --path . --force

Alternatively, check here for a possibly out of date binary. In addition, you can download a version built from the latest git commit at my website

Unofficial packages

It appears someone is maintaining a package on the AUR. If anyone else wants to maintain a package somewhere, feel free to! If you tell me about it, I'll even add a link here.

Usage

eidolon help for list of commands:

eidolon
nicohman <[email protected]>
Provides a single TUI-based registry for drm-free, wine and steam games on linux, accessed through a rofi launch menu.

USAGE:
    eidolon <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    add       Adds selected file to registry
    help      Prints this message or the help of the given subcommand(s)
    import    Attempts to import in game directory from dir path
    list      Lists installed games
    menu      Show game menu
    rm        Remove a game from the registry
    run       Runs a game by name
    update    Updates registry with installed steam, lutris wine, and itch games

Configuration

Right now, only three config options exist: menu_command, prefix_command and steam_dirs. The config file is saved in ~/.config/eidolon/config.json, of course in the JSON format.

menu_command : The command to be run to display the eidolon menu. Will be given an alphabetical list of names through STDIN, and a name is expected back through STDOUT.

steam_dirs : a |-seperated list of steam install directories, with $HOME replacing the home directory.

prefix_command : A command that will be run as a prefix to every game command. Good for optirun or steam runtime launching.

Default config file:

{
steam_dirs: ["$HOME/.local/share/steam/steamapps"],

menu_command: "rofi -theme sidebar -mesg 'eidolon game:' -p '> ' -dmenu",

prefix_command: ""
}

Todo

  • Please suggest any features you want as an issue!
Comments
  • thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error(

    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: null, expected a sequence", line: 1, column: 4)', libcore/result.rs:1009:5

    I got the error in the issue title when running eidolon update after it tries to read the itch.io games. I don't use itch.io, so I assume it has to do with the itch stuff not existing on my computer, but I don't know enough rust to debug this myself. I ran the command again with RUST_BACKTRACE=1 and got:

    >>Reading in itch.io games
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: null, expected a sequence", line: 1, column: 4)', libcore/result.rs:1009:5
    stack backtrace:
       0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
       1: std::sys_common::backtrace::_print
       2: std::panicking::default_hook::{{closure}}
       3: std::panicking::default_hook
       4: std::panicking::rust_panic_with_hook
       5: std::panicking::continue_panic_fmt
       6: rust_begin_unwind
       7: core::panicking::panic_fmt
       8: core::result::unwrap_failed
       9: butlerd::Butler::fetchall
      10: libeidolon::auto::update_itch
      11: eidolon::main
      12: std::rt::lang_start::{{closure}}
      13: std::panicking::try::do_call
      14: __rust_maybe_catch_panic
      15: std::rt::lang_start_internal
      16: main
      17: __libc_start_main
      18: _start
    

    I am running eidolon 1.4.4

    opened by JBlocklove 6
  • Running as Rofi Modi

    Running as Rofi Modi

    Are there any plans to allow running the menu as a rofi modi? This would allow launching the games directly from rofi without having to run another script, which would be awesome.

    opened by ibrokemypie 6
  • $XDG_CONFIG_HOME/eidolon/games//start: No such file or directory

    $XDG_CONFIG_HOME/eidolon/games//start: No such file or directory

    When I execute eidolon menu for the first time, I got this output:

    [" $HOME/.local/share/steam/steamapps |"]
    
    sh: /home/ege/.config/eidolon/games//start: No such file or directory
    

    With default config, rofi menu appears but there's no list of my games.

    bug 
    opened by egeesin 6
  • Crash on launch

    Crash on launch

    Eidolon fails to work properly on Fedora 27. This occurs on builds with nightly, beta and stable Rust, as well as from cargo directly, and with a precompiled binary. This doesn't appear to happen with version 1.1, but I've been able to replicate the crash on 1.2 and the latest Git commit.

    The crash only occurs after first-time registry initialization has happened.

    thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', /checkout/src/libcore/option.rs:335:20
    stack backtrace:
       0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
                 at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
       1: std::sys_common::backtrace::_print
                 at /checkout/src/libstd/sys_common/backtrace.rs:68
       2: std::panicking::default_hook::{{closure}}
                 at /checkout/src/libstd/sys_common/backtrace.rs:57
                 at /checkout/src/libstd/panicking.rs:381
       3: std::panicking::default_hook
                 at /checkout/src/libstd/panicking.rs:397
       4: std::panicking::rust_panic_with_hook
                 at /checkout/src/libstd/panicking.rs:577
       5: std::panicking::begin_panic
                 at /checkout/src/libstd/panicking.rs:538
       6: std::panicking::begin_panic_fmt
                 at /checkout/src/libstd/panicking.rs:522
       7: rust_begin_unwind
                 at /checkout/src/libstd/panicking.rs:498
       8: core::panicking::panic_fmt
                 at /checkout/src/libcore/panicking.rs:71
       9: core::panicking::panic
                 at /checkout/src/libcore/panicking.rs:51
      10: eidolon::interpret_args
      11: __rust_maybe_catch_panic
                 at /checkout/src/libpanic_unwind/lib.rs:101
      12: std::rt::lang_start
                 at /checkout/src/libstd/panicking.rs:459
                 at /checkout/src/libstd/panic.rs:365
                 at /checkout/src/libstd/rt.rs:58
      13: __libc_start_main
    
    opened by jerbmega 4
  • Trouble Adding DRM-Free Games

    Trouble Adding DRM-Free Games

    Based on what I've seen, I should be able to add native linux DRM-free games through the eidolon import command, but regardless of what directory I point it to it can't seem to find my games. Are there any tricks to this, like a specific directory structure, or, even better, is there a way I can get games from Lutris that aren't using the Steam or Wine runners?

    opened by JBlocklove 2
  • Running wine games from .lnk files

    Running wine games from .lnk files

    I have some games (touhou project games mainly) that have to be run though .lnk files rather than the exe directly (due to the way the patcher works and the fact it requires certain arguments to be passed). Is it possible to add these as wine games in eidolon?

    enhancement 
    opened by nihilazo 2
  • Remove spaces between steam path and separating

    Remove spaces between steam path and separating "|"symbols in default config

    The regex path search does not support spaces between the "|"s. The default config on the readme does not have them, but the default generated by the application does. This patch simply removes them from the default config generated by the application on first run.

    It took me a while to figure out why none of my games were being detected!

    opened by g0wen 2
  • don't crash when adding games with slashes

    don't crash when adding games with slashes

    this pr fixes a crash when adding SHENZEN I/O (and any other game with / in the name)

    i'm pretty new to rust, so please let me know if my code is suboptimal for some reason

    opened by skwerlman 1
  • thread 'main' panicked at 'Can't read in game folder: Error { repr: Os { code: 2, message:

    thread 'main' panicked at 'Can't read in game folder: Error { repr: Os { code: 2, message: "No such file or directory" } }', src/libcore/result.rs:906:4

    $ RUST_BACKTRACE=1 eidolon imports ~/.steam/steam/steamapps/common/ Reading in directory: /home/conor/.steam/steam/steamapps/common/ Attempting import on Stardew Valley Creating game registry named stardew_valley. thread 'main' panicked at 'Can't read in game folder: Error { repr: Os { code: 2, message: "No such file or directory" } }', src/libcore/result.rs:906:4 stack backtrace: 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: __libc_start_main 16:

    opened by ibrokemypie 1
  • Bump net2 from 0.2.33 to 0.2.37

    Bump net2 from 0.2.33 to 0.2.37

    Bumps net2 from 0.2.33 to 0.2.37.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump miow from 0.2.1 to 0.2.2

    Bump miow from 0.2.1 to 0.2.2

    Bumps miow from 0.2.1 to 0.2.2.

    Commits
    • 6fd7b9c Bump version to 0.2.2
    • 550efc2 Merge branch 'fix-sockaddr-convertion-v0.2.x' into 0.2.x
    • ca8db53 Stop using from_ne_bytes to be compatible with Rust < 1.32.0
    • 3e217e3 Bump net2 dep to 0.2.36 without invalid SocketAddr convertion
    • 27b77cc Adapt to winapi 0.2
    • 2783715 Safely convert SocketAddr into raw SOCKADDR
    • f6662ef Clarify wording of license information in README.
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump http from 0.1.13 to 0.1.21

    Bump http from 0.1.13 to 0.1.21

    Bumps http from 0.1.13 to 0.1.21.

    Changelog

    Sourced from http's changelog.

    0.1.21 (December 2, 2019)

    • Fix Method::is_idempotent returning false for PUT and `DELETE.

    0.1.20 (November 26, 2019)

    • Fix possible double-free if header::Drain iterator is std::mem::forgoten (#357).
    • Fix possible data race if multiple header::ValueDrains are iterated on different threads (#362).
    • Fix HeaderMap::reserve capacity overflows (#360).
    • Fix parsing long authority-form Uris (#351).

    0.1.19 (October 15, 2019)

    • Allow % in IPv6 addresses in Uri (#343).

    0.1.18 (July 26, 2019)

    • Fix compilation of HeaderName parsing on WASM targets (#324).
    • Implement HttpTryFrom<HashMap> for HeaderMap (#326).
    • Export http::header::HeaderValue as http::HeaderValue.

    0.1.17 (April 5, 2019)

    • Add Error::inner_ref() to view the kind of error (#303)
    • Add headers_ref() and headers_mut() methods to request::Builder and response::Builder (#293)

    0.1.16 (February 19, 2019)

    • Fix Uri to permit more characters in the path (#296)

    0.1.15 (January 22, 2019)

    • Fix Uri::host() to include brackets of IPv6 literals (#292)
    • Add scheme_str and port_u16 methods to Uri (#287)
    • Add method_ref, uri_ref, and headers_ref to request::Builder (#284)

    0.1.14 (November 21, 2018)

    • Add Port struct (#252, #255, #265)
    • Introduce Uri builder (#219)
    • Empty Method no longer considered valid (#262)
    • Fix Uri equality when terminating question mark is present (#270)
    • Allow % character in userinfo (#269)
    • Support additional tokens for header names (#271)
    • Export http::headers::{IterMut, ValuesMut} (#278)
    Commits
    • 6443bdb v0.1.21
    • 0cbcc1e Fix Method::is_idempotent
    • 4a5b64d v0.1.20
    • 6b07ee4 Refactor Method::is_idempotent for readability (#348)
    • 6856193 Fix docs indentation (#347)
    • d3cae7c Fix parsing of long host with no scheme (#351)
    • 8ffe094 Make ValueDrain eagerly collect its extra values
    • 81ceb61 fix capacity overflows in HeaderMap::reserve
    • 32f1ae1 Remove unused 'inner label
    • 82d53db Fix HeaderMap::drain double-free if drain iterator is forgotten
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump libflate from 0.1.18 to 0.1.27

    Bump libflate from 0.1.18 to 0.1.27

    Bumps libflate from 0.1.18 to 0.1.27.

    Commits
    • 193fd65 Bump version to v0.1.27
    • 0170b0c Merge pull request #43 from sile/apply-cargo-fix
    • de4dbee Apply cargo fix
    • 3ff53db Bump version to v0.1.26
    • ec3bd87 Apply rustfmt
    • 1b80cbd Merge pull request #42 from lukaslueg/byteorder_removed
    • ec74ff4 Remove byteorder-dependency
    • 22d1090 Merge pull request #39 from Stargateur/improve-decode-code
    • 15811cb Improve decode code of read_non_compressed_block()
    • 2efa0ab Bump version to v0.1.25
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(1.4.2)
  • 1.4.2(Sep 30, 2018)

  • 1.4.1(Sep 6, 2018)

  • 1.4.0(Aug 26, 2018)

  • 1.3(Aug 18, 2018)

  • 1.2.7(Aug 8, 2018)

    In this release, I changed the config system to be much easier to use, made it so that if you uninstall a steam game the shortcut will be deleted when eidolon update is next run, and fixed a small bug when updating with lutris wine games.

    Source code(tar.gz)
    Source code(zip)
    eidolon(5.96 MB)
  • 1.2.5(Jan 28, 2018)

    Hi guys, this is the first binary release in a while, as I usually update the crates.io version faster, but I think now is a good time for a new release. General changelog:

    • List command that lists all registered games
    • Version command that shows the current version
    • Update now registers wine games installed with lutris
    • Behind the scenes, a large portion of the functions have been moved into a lib file, to facilitate a new project I've got in the works.
    Source code(tar.gz)
    Source code(zip)
    eidolon(4.59 MB)
  • 1.1.1(Jan 19, 2018)

    Hey, I've fixed a few bugs, sped up eidolon and made it a lot easier to use. Here's a changelog:

    • search_games no longer unnecessarily iterates twice
    • If you don't select a game with eidolon menu, there's no longer a weird error output
    • There should be less panicking and morre actually useful error messages, like for unrecoginzed commands and not using enough arguments for specific commands
    • Regexes are now a thing for config scanning
    • And a few other small things. Please enjoy!
    Source code(tar.gz)
    Source code(zip)
    eidolon(4.58 MB)
Owner
Nico Hickman
Nico Hickman
Fork of async-raft, the Tokio-based Rust implementation of the Raft protocol.

Agreed Fork of async-raft, the Tokio-based Rust implementation of the Raft distributed consensus protocol. Agreed is an implementation of the Raft con

NLV8 Technologies 8 Jul 5, 2022
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

Wez's Terminal A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust User facing docs and guide a

Wez Furlong 6.7k Jan 2, 2023
Distributed compute platform implemented in Rust, and powered by Apache Arrow.

Ballista: Distributed Compute Platform Overview Ballista is a distributed compute platform primarily implemented in Rust, powered by Apache Arrow. It

Ballista 2.3k Jan 3, 2023
A secure JavaScript and TypeScript runtime

Deno Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. Features Secure by default. No file,

Deno Land 87.1k Jan 5, 2023
👾 Modern and minimalist pixel editor

██ ████ ██ ██ ███ ██ ███ ██ ██ ██ ██ ██ ██ `rx` is a modern and minimalist pixel editor. Designed with g

Alexis Sellier 2.6k Jan 1, 2023
A Rust serverless function to retrieve and relay a playlist for Twitch livestreams/VODs.

City17 A Rust serverless function to retrieve and relay a playlist for Twitch livestreams/VODs. By running this in specific countries and using a brow

Malloc Voidstar 5 Dec 15, 2021
A small program which makes a rofi game launcher menu possible by creating .desktop entries for games

rofi-games A small program which makes a `rofi` game launcher menu possible by creating `.desktop` entries for games Installation Manual Clone repo: g

Rolv Apneseth 20 May 4, 2023
TMM is a Linux native game modding tool. it allows to install and depoly mods for Linux native and wine games.

Tux Mod Manager TMM is a Linux native mod manager made with the Tauri toolkit. It can install, load, remove and deploy mods for both Linux native and

Mathiew May 119 Dec 27, 2022
pam-send-slack-message is a program that publishes messages on slack when a linux server is accessed through ssh.

pam-send-slack-message pam-send-slack-message is a program that publishes messages on slack when the linux server is accessed through ssh. Installatio

Iuri Diniz 2 Aug 17, 2022
Run Electron Steam games natively on Linux*

Boson ⚛️ Boson is a Steam compatibility tool that allows you to run Electron-based games with a native build of Electron, rather than using the game's

Fyra Labs 5 Feb 13, 2024
Lists Steam applications that have specified a Steam Play compatibility tool

proton-usage Lists Steam applications that have specified a Steam Play compatibility tool. Useful for when you want to remove/uninstall unused compati

Chris 10 Nov 13, 2022
Some Steam patches, fixing broken Steam features on Asus Rog Ally

Ally Steam Patches Ally Steam Patches is a tool designed to enhance your Steam experience by applying patches to the Steam client. Installation To ins

MIkhail Kozlov 2 Jul 10, 2023
Some Steam patches, fixing broken Steam features on Asus Rog Ally

⚙️ Steam Patch Steam Patch is a tool designed to enhance your Steam experience by applying patches to the Steam client. ?? Installation To install Ste

MIkhail Kozlov 3 Jul 18, 2023
Extension registry for Lapce Registry

Lapce Registry This is the software running the lapce plugin registry, this manages and hosts plugins that the community uploads. Run the registry loc

Lapce 15 Dec 4, 2022
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Synchronize games from other platforms into your Steam library

BoilR Description This little tool will synchronize games from other platforms into your Steam library, using the Steam Shortcuts feature. The goal is

Philip Kristoffersen 823 Jan 9, 2023
CLI tool for checking ProtonDB compatibility of your Steam games.

protondb-check protondb-check is currently in active development stage, there might be bugs or other problems. Table Of Contents About Available comma

Giorgi Anakidze 3 Apr 1, 2024
A menu widget for tui-rs ecosystem

tui-menu A menu widget for tui-rs ecosystem. Features Sub menu groups. Intuitive movement. Item's data is generic as long as it Cloneable. Try cargo r

shuo 3 Nov 30, 2022
Winapi fuzzer to help Wine project in creating better Windows "emulator"

Win32 Fuzzer This repository contains fuzzer to test Windows API functions(Win32 API). I created it to help Wine to better mimic Windows OS and allow

Rafał Mikrut 67 Dec 6, 2022
Maccha is an extremely extensible and themable power menu for Windows, macOS, and Linux.

Maccha I hate coffee. Maccha is an extremely extensible and themable power menu for Windows, macOS, and Linux. Plugins Plugins are written in Rust (ot

Kyza 9 May 13, 2023