Automatic application-aware keyboard layer switching for Windows

Overview

komokana

Automatic application-aware keyboard layer switching for Windows

About

komokana is a daemon that listens to events emitted by komorebi and communicates with kanata to switch keyboard layers based on a set of user defined rules.

komokana allows you associate different kanata keyboard layers with specific applications, and automatically switch to that keyboard layer when the windows of those applications are focused in the foreground.

You may join the komorebi Discord server for any komokana-related discussion, help, troubleshooting etc. If you have any specific feature requests or bugs to report, please create an issue in this repository.

Articles, blog posts, demos and videos about komokana can be added to this section of the readme by PR.

Description

komokana communicates with komorebi using Named Pipes, and with kanata via a TCP server that can be optionally started by passing the --port flag when launching the kanata process.

If either the komorebi or kanata processes are stopped or killed, komokana will attempt to reconnect to them indefinitely. However, komokana will not launch successfully if either one of those processes is not running.

Getting Started

Prerequisites

  • The latest version of komorebi
    • scoop install komorebi (from the extras bucket)
  • The latest version of kanata
    • cargo install kanata

GitHub Releases

Prebuilt binaries of tagged releases are available on the releases page in a zip archive.

Once downloaded, you will need to move the komokana.exe binary to a directory in your Path ( you can see these directories by running $Env:Path.split(";") at a PowerShell prompt).

Alternatively, you may add a new directory to your Path using setx or the Environment Variables pop up in System Properties Advanced (which can be launched with SystemPropertiesAdvanced.exe at a PowerShell prompt), and then move the binaries to that directory.

Scoop

If you use the Scoop command line installer, you can run the following commands to install the binaries from the latest GitHub Release:

scoop bucket add extras
scoop install komokana

If you install komokana using Scoop, the binary will automatically be added to your Path.

Building from Source

If you prefer to compile komokana from source, you will need a working Rust development environment on Windows 10. The x86_64-pc-windows-msvc toolchain is required, so make sure you have also installed the Build Tools for Visual Studio 2019.

You can then clone this repo and compile the source code to install the binary for komokana:

cargo install --path . --locked

Configuring

komokana is configured using a YAML file that can be specified using the -c flag.

Consider the following kanata.kbd file which defines our keyboard layers:

(defalias
  ;; these are some convenient aliases to send the letter on tap, or toggle the
  ;; "firefox" layout on hold
  ft   (tap-hold 50 200 f (layer-toggle firefox))
  jt   (tap-hold 50 200 j (layer-toggle firefox))

  ;; these are some convenient aliases for us to switch layers
  qwr  (layer-switch qwerty)
  ff   (layer-switch firefox)
)

;; imagine this is our default layer, passed as "-d qwerty" when launching komokana
;; the only two keys overriden here are f and j, which when held, will toggle
;; our "firefox" layer
(deflayer qwerty
  _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _
  _    _    _    _    @ft  _    _    @jt  _    _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _               _
  _    _    _              _                   _    _         _          _    _    _
)

;; this is our firefox layer which lets us navigate webpages using hjkl
(deflayer firefox
  _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _
  _    _    _    _    _    _    left down up   rght _    _    _
  _    _    _    _    _    _    _    _     _    _   _    _    _               _
  _    _    _              _                    _   _         _          _    _    _
)

;; this is our editor layer for use in windows where the vim editor or vim extensions
;; in a text editor are running. the only thing we do here is ensure that the tap-hold
;; not present on j, so that when we hold down j we can zoom all the way down the file
;; that we are editing
(deflayer editor
  _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _
  _    _    _    _    @ft  _    _    _    _    _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _               _
  _    _    _              _                   _    _         _          _    _    _
)

Based on the kanata layers defined above, we can have a komokana.yaml configuration file that looks like this:

- exe: "firefox.exe" # when a window with this exe is active
  target_layer: "firefox" # switch to this layer, a vim-like layer just for browsing!
  title_overrides: # unless...
    - title: "Slack |" # the window title matches this
      # valid matching strategies are: starts_with, ends_with, contains and equals
      strategy: "starts_with" # matching with this matching strategy
      target_layer: "qwerty" # if it does, then switch to this layer for chatting
    - title: "Mozilla Firefox" # new firefox tab, we'll probably want to switch to qwerty mode to type a url!
      strategy: "equals"
      target_layer: "qwerty"
  virtual_key_overrides: # unless...
    # list of key codes and their decimal values here: https://cherrytree.at/misc/vk.htm
    - virtual_key_code: 18 # this key is held down (alt in this case) when the window becomes active
      targer_layer: "qwerty" # if it is, then switch to this layer, so that we can continue switching window focus with alt+hjkl
  virtual_key_ignores: # alternatively
    - 18 # if this key is held down (alt in this case), then don't make any layer switches

# your normal layer might have a tap-hold on j since it's a such convenient and ergonomic key
# but it sucks to be in vim, holding down j to move down and have nothing happen because of the hold...
# no worries! let's just switch to a layer which removes the tap-hold on the j when we are in windows
# where we use vim or vim editing extensions!
- exe: "WindowsTerminal.exe"
  target_layer: "editor"
- exe: "idea64.exe"
  target_layer: "editor"

Running

Once you have either the prebuilt binaries in your Path, or have compiled the binaries from source (these will already be in your Path if you installed Rust with rustup, which you absolutely should), you can run komokana -p [KANATA_PORT] -d [DEFAULT_LAYER] -c [PATH_TO_YOUR_CONFIG] at a Powershell prompt, and you should start to see log output.

Remember, both komorebi and kanata must be running before you try to start komokana, and kanata must be running with the --port flag to enable the TCP server on the given port.

This means that komokana is now running and listening for notifications sent to it by komorebi.

yasb Widget

When running komokana with the -t flag, a plaintext file will be updated whenever the layer changes at the following location: ~/AppData/Local/Temp/kanata_layer

You may optionally use this file to construct a simple yasb widget which polls and displays the contents of that file to provide a visual indicator of the currently :

# in ~/.yasb/config.yaml
widgets:
  kanata:
    type: "yasb.custom.CustomWidget"
    options:
      label: "{data}"
      label_alt: "{data}"
      class_name: "kanata-widget"
      exec_options:
        run_cmd: "cat '%LOCALAPPDATA%\\Temp\\kanata_layer'"
        run_interval: 300
        return_format: "string"
Comments
  • chore(deps): bump serde_json from 1.0.93 to 1.0.95

    chore(deps): bump serde_json from 1.0.93 to 1.0.95

    Bumps serde_json from 1.0.93 to 1.0.95.

    Release notes

    Sourced from serde_json's releases.

    v1.0.95

    • Preserve f32 precision when serializing f32 -> serde_json::Value -> JSON string in "arbitrary_precision" mode (#1004, #1005)

    v1.0.94

    • Fix message duplication between serde_json::Error's Display and source() (#991, #992)
    Commits
    • 4ea38c4 Release 1.0.95
    • 731886c Merge pull request #1005 from dtolnay/f32cast
    • c9bff92 Fix PartialEq between Value and f32
    • 06f3443 Eliminate f32-to-f64 casting in arbitrary_precision mode
    • b0990a5 Add regression test for issue 1004
    • 02e5833 Update fuzz crate gitignore to ignore coverage dir
    • 4b96996 No longer test so many old compiler versions
    • a15bd09 Release 1.0.94
    • 3e418b1 Merge pull request #992 from dtolnay/errorsource
    • 7eeb169 Fix message duplication between error Display and source()
    • 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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump serde from 1.0.152 to 1.0.159

    chore(deps): bump serde from 1.0.152 to 1.0.159

    Bumps serde from 1.0.152 to 1.0.159.

    Release notes

    Sourced from serde's releases.

    v1.0.159

    • Accept empty #[serde()] attribute (#2422)

    v1.0.158

    • Fix "expected serde crate attribute to be a string" error when using macro_rules metavariable inside of serde attribute: #[serde(crate = $serde_path)] (#2409)

    v1.0.157

    • Update syn dependency to 2.x

    v1.0.156

    • Documentation improvements

    v1.0.155

    • Support Serialize and Deserialize impls for core::ffi::CStr and alloc::ffi::CString without "std" feature (#2374, thanks @​safarir)

    v1.0.154

    • Fix "undeclared lifetime" error in generated code when deriving Deserialize for an enum with both flatten and 'static fields (#2383, thanks @​Mingun)

    v1.0.153

    • Support serde(alias = "…") attribute used inside of flattened struct (#2387, thanks @​bebecue)
    Commits
    • d6de911 Release 1.0.159
    • 04af322 Merge pull request #2422 from dtolnay/emptyattr
    • 4cb8d07 Accept empty #[serde()] attribute
    • 6ab55a1 Add regression test for issue 2415
    • acfd19c Release serde_derive_internals 0.27.0
    • e305810 Release 1.0.158
    • dc200a6 Reformat comments of non-public serde_derive internals
    • 2c0999a Merge pull request #2410 from serde-rs/attrvalue
    • dd460f8 Check for None-delimited group in attribute value
    • c3d637f Add regression test for issue 2409
    • 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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump serde_yaml from 0.9.17 to 0.9.19

    chore(deps): bump serde_yaml from 0.9.17 to 0.9.19

    Bumps serde_yaml from 0.9.17 to 0.9.19.

    Release notes

    Sourced from serde_yaml's releases.

    0.9.19

    • Fix message duplication between serde_yaml::Error's Display and source() (#359, #360)

    0.9.18

    • Add support for emitting Unicode characters over codepoint U+FFFF (#356)
    Commits
    • 4e1cbd8 Release 0.9.19
    • f351fc7 Merge pull request #360 from dtolnay/errorsource
    • f27e4c5 Fix message duplication between error Display and source()
    • fc039c6 Refer to std::error::Error trait as StdError
    • 7f1db12 Release 0.9.18
    • 248d6de Merge pull request #358 from dtolnay/unicode
    • 779f016 Update U+1F389 test
    • 12b48b5 Pull in Unicode high codepoints fix from unsafe-libyaml 0.2.7
    • b6f6957 Add test of Unicode larger than U+FFFF
    • eac69a2 Merge pull request #357 from dtolnay/stringescape
    • 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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump clap from 4.1.8 to 4.1.14

    chore(deps): bump clap from 4.1.8 to 4.1.14

    Bumps clap from 4.1.8 to 4.1.14.

    Release notes

    Sourced from clap's releases.

    v4.1.14

    [4.1.14] - 2023-03-28

    Features

    • (derive) #[group] raw attribute support

    Performance

    • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
    • os_str_bytes dependency was removed for faster builds and smaller binaries

    v4.1.13

    [4.1.13] - 2023-03-18

    Performance

    • Reduce repeated alloc calls when building a Command
    • Reduce duplicate dependencies for faster builds

    v4.1.12

    [4.1.12] - 2023-03-18

    Internal

    • (derive) Update to syn v2

    Performance

    • (derive) Faster build times by dropping proc-macro-error dependency

    v4.1.11

    [4.1.11] - 2023-03-17

    Internal

    • Update bitflags

    v4.1.10

    [4.1.10] - 2023-03-17

    Fixes

    • (help) On Windows, avoid underlined text artifacts
    Changelog

    Sourced from clap's changelog.

    [4.1.14] - 2023-03-28

    Features

    • (derive) #[group] raw attribute support

    Performance

    • (derive) clap_builder was pulled out of clap so it could build in parallel to clap_derive
    • os_str_bytes dependency was removed for faster builds and smaller binaries

    [4.1.13] - 2023-03-18

    Performance

    • Reduce repeated alloc calls when building a Command
    • Reduce duplicate dependencies for faster builds

    [4.1.12] - 2023-03-18

    Internal

    • (derive) Update to syn v2

    Performance

    • (derive) Faster build times by dropping proc-macro-error dependency

    [4.1.11] - 2023-03-17

    Internal

    • Update bitflags

    [4.1.10] - 2023-03-17

    Fixes

    • (help) On Windows, avoid underlined text artifacts

    [4.1.9] - 2023-03-16

    Fixes

    • (assert) Improve the assert when using the wrong action with get_count / get_flag
    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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump dirs from 4.0.0 to 5.0.0

    chore(deps): bump dirs from 4.0.0 to 5.0.0

    Bumps dirs from 4.0.0 to 5.0.0.

    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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump clap from 4.0.29 to 4.0.32

    chore(deps): bump clap from 4.0.29 to 4.0.32

    Bumps clap from 4.0.29 to 4.0.32.

    Release notes

    Sourced from clap's releases.

    v4.0.32

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group

    v4.0.31

    [4.0.31] - 2022-12-22

    Performance

    • Speed up parsing when a lot of different flags are present (100 unique flags)

    v4.0.30

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand
    Changelog

    Sourced from clap's changelog.

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group

    [4.0.31] - 2022-12-22

    Performance

    • Speed up parsing when a lot of different flags are present (100 unique flags)

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand
    Commits
    • ec4ccf0 chore: Release
    • 13fdb83 docs: Update changelog
    • b877345 Merge pull request #4573 from epage/conflict
    • 85ecb3e fix(parser): Override required when parent group has conflict
    • d145b8b test(parser): Demonstrate required-overload bug
    • 0eccd55 chore: Release
    • 1e37c25 docs: Update changelog
    • dcd5fec Merge pull request #4572 from epage/group
    • dde22e7 style: Update for latest clippy
    • dd8435d perf(parser): Reduce duplicate lookups
    • 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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump serde_yaml from 0.9.14 to 0.9.16

    chore(deps): bump serde_yaml from 0.9.14 to 0.9.16

    Bumps serde_yaml from 0.9.14 to 0.9.16.

    Release notes

    Sourced from serde_yaml's releases.

    0.9.16

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    0.9.15

    • Documentation improvements
    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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump serde_json from 1.0.89 to 1.0.91

    chore(deps): bump serde_json from 1.0.89 to 1.0.91

    Bumps serde_json from 1.0.89 to 1.0.91.

    Release notes

    Sourced from serde_json's releases.

    v1.0.91

    • Opt out of -Zrustdoc-scrape-examples on docs.rs for now

    v1.0.90

    • Documentation improvements
    Commits
    • 26f147f Release 1.0.91
    • d9cdb98 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 331511d Release 1.0.90
    • 8753829 Replace ancient CI service provider in readme
    • 0a43394 Update build status badge
    • 8794844 Prevent build.rs rerunning unnecessarily on all source changes
    • 0b54871 Time out workflows after 45 minutes
    • ecad462 Fix renamed let_underscore_drop lint
    • 9295c96 Resolve needless_borrowed_reference clippy lints
    • 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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump clap from 3.2.19 to 4.0.7

    chore(deps): bump clap from 3.2.19 to 4.0.7

    Bumps clap from 3.2.19 to 4.0.7.

    Release notes

    Sourced from clap's releases.

    v4.0.7

    [4.0.7] - 2022-09-30

    Features

    • (derive) Populate implicit ArgGroup (#3165)

    Fixes

    • (derive) Support #[group(skip)] on Parser derive
    • (derive) Tell users about implicit arg groups when running into group name conflicts
    • (error) Don't report unrelated groups in conflict or requires errors

    v4.0.6

    [4.0.6] - 2022-09-30

    Features

    v4.0.5

    [4.0.5] - 2022-09-30

    v4.0.4

    [4.0.4] - 2022-09-29

    Fixes

    • (error) Specialize the self-conflict error to look like clap v3

    v4.0.3

    [4.0.3] - 2022-09-29

    Fixes

    • (error) Quote literals consistently
    • (error) Stylize escape (--) suggestions
    • (error) Format help flag as a literal

    v4.0.2

    [4.0.2] - 2022-09-28

    Fixes

    • (parser) SetFalse should conflict with itself like SetTrue and Set
    • (parser) Allow one-off overrides

    v4.0.1

    [4.0.1] - 2022-09-28

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [4.0.7] - 2022-09-30

    Features

    • (derive) Populate implicit ArgGroup (#3165)

    Fixes

    • (derive) Support #[group(skip)] on Parser derive
    • (derive) Tell users about implicit arg groups when running into group name conflicts
    • (error) Don't report unrelated groups in conflict or requires errors

    [4.0.6] - 2022-09-30

    Features

    [4.0.5] - 2022-09-30

    [4.0.4] - 2022-09-29

    Fixes

    • (error) Specialize the self-conflict error to look like clap v3

    [4.0.3] - 2022-09-29

    Fixes

    • (error) Quote literals consistently
    • (error) Stylize escape (--) suggestions
    • (error) Format help flag as a literal

    [4.0.2] - 2022-09-28

    Fixes

    • (parser) SetFalse should conflict with itself like SetTrue and Set
    • (parser) Allow one-off overrides

    [4.0.1] - 2022-09-28

    Fixes

    • (derive) Ensure #[clap(...)] attribute still works

    [4.0.0] - 2022-09-28

    Highlights

    ... (truncated)

    Commits
    • 0bea4f2 chore: Release
    • b654130 docs: Update changelog
    • 2ea9455 Merge pull request #4310 from epage/skip
    • 5f145a2 fix(derive): Support 'group' attribute with Parser
    • 106d8f5 Merge pull request #4309 from epage/docs
    • 16e5599 docs: Note that author doesn't show up by default
    • 49186a5 docs: Note the move in ErrorKind
    • 4eb3da2 docs(help): Include example with old template
    • db31881 docs: Remove references to global settings
    • 973f30f refactor(docs): Use intra-doc links to avoid breakages
    • 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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump clap from 3.2.14 to 3.2.15

    chore(deps): bump clap from 3.2.14 to 3.2.15

    Bumps clap from 3.2.14 to 3.2.15.

    Release notes

    Sourced from clap's releases.

    v3.2.15

    [3.2.15] - 2022-07-25

    Features

    • (derive) New default_values_t and default_values_os_t attributes
    Changelog

    Sourced from clap's changelog.

    [3.2.15] - 2022-07-25

    Features

    • (derive) New default_values_t and default_values_os_t attributes
    Commits
    • b2a8fd7 chore: Release
    • 026e858 chore: Allow releasing from release branches
    • 84ae6df docs: Update changelog
    • 69b0904 Merge pull request #3987 from emersonford/default-values-t-v3-backport
    • 027a675 feat(clap_derive): Add default_values_t and default_values_os_t
    • 9262d92 chore(gh): Start v3 patch maintenance
    • 1937124 Merge pull request #3961 from epage/prep
    • 0eeb4da chore(gh): Prepare for more branches to be added
    • 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)
    dependencies rust 
    opened by dependabot[bot] 1
  • chore(deps): bump serde_yaml from 0.9.17 to 0.9.21

    chore(deps): bump serde_yaml from 0.9.17 to 0.9.21

    Bumps serde_yaml from 0.9.17 to 0.9.21.

    Release notes

    Sourced from serde_yaml's releases.

    0.9.21

    • Make Tag::new panic if given empty string, since YAML has no syntax for an empty tag

    0.9.20

    • Allow an empty YAML document to deserialize to None or Value::Null, in addition to the previously supported empty vector, empty map, and struct with no required fields

    0.9.19

    • Fix message duplication between serde_yaml::Error's Display and source() (#359, #360)

    0.9.18

    • Add support for emitting Unicode characters over codepoint U+FFFF (#356)
    Commits
    • 8057fad Release 0.9.21
    • 19a7bd3 Merge pull request #371 from dtolnay/emptytag
    • ebb4b7a Fix deserialization of tag !<%21>
    • 879a57f Factor out conversion function from libyaml Tag to tag string
    • e3b9a02 Merge pull request #370 from dtolnay/emptytag
    • ef43549 Treat Tag::new("!") as tag %21, instead of empty tag
    • 221154c Merge pull request #369 from dtolnay/emptytag
    • 39a866c Reuse Tag visitor in Value's Deserialize impl
    • 80e53a5 Merge pull request #368 from dtolnay/emptytag
    • f668f71 Preserve location information better when parsing invalid tag
    • 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)
    dependencies rust 
    opened by dependabot[bot] 0
  • chore(deps): bump log from 0.4.17 to 0.4.18

    chore(deps): bump log from 0.4.17 to 0.4.18

    Bumps log from 0.4.17 to 0.4.18.

    Changelog

    Sourced from log's changelog.

    [0.4.18] - 2023-05-28

    Commits
    • 304eef7 Merge pull request #566 from rust-lang/cargo/0.4.18-patch
    • d062c83 prepare for 0.4.18 release
    • fcbb351 Merge pull request #565 from rust-lang/fix/nightly-build-msrv
    • 4e689bb Revert "Remove build.rs file"
    • 3ea1c66 Merge pull request #562 from OccupyMars2025/patch-1
    • 7c4f808 [doc] src/macros.rs : correct grammar errors of an example in lib documenta...
    • f4c21c1 Merge pull request #561 from OccupyMars2025/master
    • 1acf2f3 src/lib.rs : prefix an unused variable with an underscore
    • 502bdb7 Merge pull request #557 from est31/msrv_in_toml
    • 79c330c Put MSRV into Cargo.toml
    • 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)
    dependencies rust 
    opened by dependabot[bot] 0
  • chore(deps): bump serde from 1.0.160 to 1.0.163

    chore(deps): bump serde from 1.0.160 to 1.0.163

    Bumps serde from 1.0.160 to 1.0.163.

    Release notes

    Sourced from serde's releases.

    v1.0.163

    • Eliminate build script from serde_derive crate to slightly reduce build time (#2442, thanks @​taiki-e)

    v1.0.162

    • Support deserializing flattened adjacently tagged enums from data formats which represent fields as bytes, such as the csv crate (#2377, thanks @​mfro)

      #[derive(Deserialize)]
      pub struct Record {
          common: u64,
          #[serde(flatten)]
          kind: Kind,
      }
      

      #[derive(Deserialize)] #[serde(tag = "kind", content = "parameter", rename_all = "lowercase")] enum Kind { Foo(u64), Bar(bool), }

      common,kind,parameter
      1,foo,42
      2,bar,true
      

    v1.0.161

    • Improve error messages produced by serde_test on test failure (#2435, thanks @​Mingun)
    Commits
    • fccb949 Release 1.0.163
    • a139ab2 Adjust PR 2446 with less overgeneralized name
    • 1d910a4 Format with rustfmt 1.5.2-nightly
    • ee9166e Revise comments on the FlatMapDeserializer entry taker
    • b5a9eff Resolve while_let_on_iterator clippy lint
    • 9441a29 Merge pull request #2446 from Mingun/dedup2
    • ab6588e Extract duplicated code into a function
    • 1d11f03 Extract logic of taking flattened fields into a function
    • e11d01f Remove constructors for FlatMapAccess and FlatStructAccess
    • a901f50 FlatMapAccess and FlatStructAccess does not need to be public
    • 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)
    dependencies rust 
    opened by dependabot[bot] 0
  • chore(deps): bump windows from 0.44.0 to 0.48.0

    chore(deps): bump windows from 0.44.0 to 0.48.0

    Bumps windows from 0.44.0 to 0.48.0.

    Release notes

    Sourced from windows's releases.

    0.48.0

    This release includes an update to all crates to address a target version reliability issue. This issue is detailed here: microsoft/windows-rs#2410

    What's Changed

    Full Changelog: https://github.com/microsoft/windows-rs/compare/0.47.0...0.48.0

    0.47.0

    As a reminder, updates are only published by request (#2397; microsoft/win32metadata#1507). This release provides an update to the windows crate. It does not include an update to the windows-sys crate.

    This update adds support for standalone code generation (#2396) as well as requested fixes to the Win32 metadata that prevented some APIs from being used.

    What's Changed

    Full Changelog: https://github.com/microsoft/windows-rs/compare/0.46.0...0.47.0

    0.46.0

    As a reminder, updates are only published by request (microsoft/windows-rs#2380). This release provides an update to the windows crate. It does not include an update to the windows-sys crate.

    This is the first update to the windows crate in about 2 months and includes numerous improvements as well as updated API definitions via the Win32 metadata. Notably, the windows crate now sports streamlined and much simpler type traits (#2343) and parameter bindings (#2360). It includes the first steps towards WDK support (#2358), and it finally includes stock collection implementations (#91).

    Please note that the ComInterface trait is now required to call the cast function (#2360).

    What's Changed

    ... (truncated)

    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)
    dependencies rust 
    opened by dependabot[bot] 0
  • chore(deps): bump goreleaser/goreleaser-action from 3 to 4

    chore(deps): bump goreleaser/goreleaser-action from 3 to 4

    Bumps goreleaser/goreleaser-action from 3 to 4.

    Release notes

    Sourced from goreleaser/goreleaser-action's releases.

    v4.0.0

    What's Changed

    Full Changelog: https://github.com/goreleaser/goreleaser-action/compare/v3...v4.0.0

    v3.2.0

    What's Changed

    • chore: remove workaround for setOutput by @​crazy-max (#374)
    • chore(deps): bump @​actions/core from 1.9.1 to 1.10.0 (#372)
    • chore(deps): bump yargs from 17.5.1 to 17.6.0 (#373)

    Full Changelog: https://github.com/goreleaser/goreleaser-action/compare/v3.1.0...v3.2.0

    v3.1.0

    What's Changed

    • fix: dist resolution from config file by @​crazy-max (#369)
    • ci: fix workflow by @​crazy-max (#357)
    • docs: bump actions to latest major by @​crazy-max (#356)
    • chore(deps): bump crazy-max/ghaction-import-gpg from 4 to 5 (#360)
    • chore(deps): bump ghaction-import-gpg to v5 (#359)
    • chore(deps): bump @​actions/core from 1.6.0 to 1.8.2 (#358)
    • chore(deps): bump @​actions/core from 1.8.2 to 1.9.1 (#367)

    Full Changelog: https://github.com/goreleaser/goreleaser-action/compare/v3.0.0...v3.1.0

    Commits
    • 8f67e59 chore: regenerate
    • 78df308 chore(deps): bump minimatch from 3.0.4 to 3.1.2 (#383)
    • 66134d9 Merge remote-tracking branch 'origin/master' into flarco/master
    • 3c08cfd chore(deps): bump yargs from 17.6.0 to 17.6.2
    • 5dc579b docs: add example when using workdir along with upload-artifact (#366)
    • 3b7d1ba feat!: remove auto-snapshot on dirty tag (#382)
    • 23e0ed5 fix: do not override GORELEASER_CURRENT_TAG (#370)
    • 1315dab update build
    • b60ea88 improve install
    • 4d25ab4 Update goreleaser.ts
    • 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)
    dependencies github_actions 
    opened by dependabot[bot] 0
Releases(v0.1.1)
Owner
جاد
Carly Rae Jepsen fanboy
جاد
Use Git installed in Bash on Windows/Windows Subsystem for Linux (WSL) from Windows and Visual Studio Code (VSCode)

WSLGit This project provides a small executable that forwards all arguments to git running inside Bash on Windows/Windows Subsystem for Linux (WSL). T

A. R. S. 1.1k Jan 3, 2023
That program use on platform windows. And if you write any text on uncorrect keyboard layout, that program for that.

?? This program is designed to translate text into the correct layout when typing is incorrect. ?? Example ghbdtn -> привет Just (by default) pressing

Gest Se 5 Jan 26, 2023
🧠 A command-line utility for switching git branches more easily. Switch branches interactively or use a fuzzy search to find that long-forgotten branch name.

git-smart-checkout A git command extension for switching git branches more efficiently. About Interactively switch branches or fuzzy search for that f

Cezar Craciun 51 Dec 29, 2022
WIP: A program for switching Dygma layouts based on window name or exe name.

Dygma Layer Switcher Config On the first run of dygma-layer-switcher the config.yml will be generated. --- # Toggle logging. logging: false # Port of

Matthew Wilding 5 Nov 11, 2023
FileSorterX is an automatic file sorting application that sorts your files into folders based on their file extension

FileSorterX is an automatic file sorting application that sorts your files into folders based on their file extension. With FileSorterX, you can easily keep your files organized and find what you need quickly.

Xanthus 22 Apr 4, 2023
Windows-rs - Rust for Windows

Rust for Windows The windows crate lets you call any Windows API past, present, and future using code generated on the fly directly from the metadata

Microsoft 7.7k Dec 30, 2022
Switch windows of same app with alt + ` on windows pc.

Windows Switcher Switch windows of same app with alt + ` on windows pc. 250k single file executable downloaded from Github Release. No installation re

null 172 Dec 10, 2022
Check if the process is running inside Windows Subsystem for Linux (Bash on Windows)

is-wsl Check if the process is running inside Windows Subsystem for Linux (Bash on Windows) Inspired by sindresorhus/is-wsl and made for Rust lang. Ca

Sean Larkin 6 Jan 31, 2023
Use Thunk to build your Rust program that runs on old Windows platforms, support Windows XP and more!

Use Thunk to build your Rust program that runs on old platforms. Thunk uses VC-LTL5 and YY-Thunks to build programs that support old platforms. So, ho

null 6 May 21, 2023
Windows Capture Simple Screen Capture for Windows 🔥

Windows Capture   Windows Capture is a highly efficient Rust library that enables you to effortlessly capture the screen using the Graphics Capture AP

null 3 Sep 24, 2023
A Rust CLI that makes mechanical keyboard sound effects on every key press

Rustyvibes A Rust CLI that makes mechanical keyboard sound effects on every key press Rustyvibes.mp4 Installation macOS: brew install kb24x7/rustyvibe

Kunal Bagaria 95 Dec 14, 2022
on-screen keyboard display for your coding streams.

⌨ OSKD (On-screen key display) OSKD is an on-screen keyboard display that can be used during streams. It provides an intuitive and easy-to-use interfa

Sammwy 46 May 6, 2023
INput maCROs: program your keyboard/mouse

incro INput maCROs: program your keyboard/mouse See macro-template for macro example. Build it and place the resulting *.so file in macros/ directory

Mykolas Peteraitis 6 Nov 13, 2023
The PC-based component of a two-part Linux driver for using a TI calculator as an external keyboard

Introduction i68apollo is the computer-based component of the two-part i68 (*I*nput from Motorola *68*000[fn:4]-based calculator) prototype userspace

Joseph Burke 4 Aug 17, 2024
:large_orange_diamond: Build beautiful terminal tables with automatic content wrapping

Comfy-table Comfy-table tries to provide utility for building beautiful tables, while being easy to use. Features: Dynamic arrangement of content to a

Arne Beer 525 Jan 8, 2023
A simple made in Rust crack, automatic for Winrar, activated from shared virtual memory, for studies.

Simple Winrar Crack in Rust What does it do ? A simple project that allows you to modify the license check used by WinRaR, "RegKey" from virtual memor

João Vitor 7 Jan 2, 2023
Honkers launcher for Linux with automatic patching and telemetry disabling

Honkers launcher for Linux with automatic patching and telemetry disabling

An Anime Team 8 Apr 23, 2023
The Honkers Railway launcher for Linux with automatic patching and telemetry disabling

The Honkers Railway launcher for Linux with automatic patching and telemetry disabling

An Anime Team 73 May 9, 2023
Tracing layer that automatically creates and manages progress bars for active spans.

tracing-indicatif A tracing layer that automatically creates and manages indicatif progress bars for active spans. Progress bars are a great way to ma

Emerson Ford 95 Feb 22, 2023