Rust no-BS Dead Man's Switch TUI

Overview

Dead Man's Switch

AGPL-v3 Crates.io docs

This is a simple implementation of a Dead Man's Switch.

Use at your own risk. Check the f****(as in friendly) code.

screenshot

Dead man's switches are designed to require positive action or they will automatically deploy. They are ideal for situations where you are worried about unforeseen death, kidnapping, or memory loss. If you don’t engage the trigger for a certain amount of time, the switch automatically sends the desired message.

Features

  • Simple: Easy to use and setup.
  • Reliable: Implemented in Rust.
  • Minimal: Very few dependencies and needs minimal resources.
  • Warning: Sends a warning email before the final email.
  • Attachments (Optional): Send attachments with the final email.

How it Works

If you want a very simple explanation and the motivation behind the project, check my blog post here.

Upon starting the program it will create a config.toml file in an OS-agnostic config file location:

  • Linux: $XDG_CONFIG_HOME, i.e. $HOME/.config|/home/alice/.config
  • macOS: $HOME/Library/Application Support, i.e. /Users/Alice/Library/Application Support
  • Windows: {FOLDERID_RoamingAppData}, i.e. C:\Users\Alice\AppData\Roaming

Edit the config.toml file to your liking. Some default values are provided for inspiration.

Dead Man's Switch comprises of two timers:

  1. Warning Timer: This timer is set to the timer_warning (seconds) value in the config.toml file. If the user do not check-in before timer reaches 0, it will send a warning email to the users' own specified email address, the from in the config.toml.
  2. Dead Man's Timer: After the warning timer expires, the timer will change to a Dead Man's timer, and the timer will be set to the timer_dead_man (seconds). If the user do not check-in before timer reaches 0, it will send the final email to the specified email address in the config.toml, i.e. the to in the config.toml.

If you want to send attachments with the Dead Man's email, you can specify the attachments option config in the config.toml and provide the absolute path to the file you want to attach.

To check-in, you just need to press the c key as in check-in.

Installation

There are several ways to install Dead Man's Switch:

  1. Crates.io: cargo install dead-man-switch.

  2. GitHub: cargo install --git https://github.com/storopoli/dead-man-switch.

  3. From source: Clone the repository and run cargo install --path ..

  4. Using Nix: nix run github:storopoli/dead-man-switch.

  5. Using Nix Flakes: add this to your flake.nix:

    {
      # ...
      inputs.dead-man-switch = {
        url = "github:storopoli/neovix";
        inputs = {
          nixpkgs.follows = "nixpkgs";
          flake-parts.follows = "flake-parts";
        };
      };
    
      outputs = inputs @ { self, ... }:
      {
        imports = [
          {
            nixpkgs.overlays = [
              # ...
              inputs.dead-man-switch.overlays.default
            ];
          }
        ];
      };
    
    }

    Then dead-man-switch will be available as pkgs.dead-man-switch;

Minimum Supported Rust Version

This crate uses current Debian stable Rust version as Minimum Supported Rust Version (MSRV). Please check Debian's rustc package for more details.

Currently, the MSRV is 1.63.0.

License

The source code is licensed under an AGPL v3 License

AGPL-v3

Comments
  • chore(deps): bump rustls from 0.21.10 to 0.21.11 in the cargo group across 1 directory

    chore(deps): bump rustls from 0.21.10 to 0.21.11 in the cargo group across 1 directory

    Bumps the cargo group with 1 update in the / directory: rustls.

    Updates rustls from 0.21.10 to 0.21.11

    Commits
    • 7b8d1db Prepare 0.21.11
    • ebcb478 complete_io: bail out if progress is impossible
    • 20f35df Regression test for complete_io infinite loop bug
    • 2f2aae1 Don't specially handle unauthenticated close_notify alerts
    • e163587 Don't deny warnings from nightly clippy
    • 9f86487 server::handy: fix new nightly clippy lint
    • 7e0e8ab Correct assorted clippy warnings in test code
    • 3587d98 Apply clippy suggestions from Rust 1.72
    • d082e83 Address clippy::redundant_static_lifetimes
    • 5e7a06c Address clippy::slow_vector_initialization
    • 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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
    • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
    • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
    • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
    • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies rust 
    opened by dependabot[bot] 3
  • Warning Message

    Warning Message

    I tried fixing the code on my side, but wasn't able to resolve it.

    "message_warning" The Warning email is getting sent FROM the proper address, but it's being sent to the same address instead of the TO.

    The final "message" is being sent correctly.

    opened by Whommbat 2
  • chore(deps): bump ratatui from 0.20.1 to 0.26.2

    chore(deps): bump ratatui from 0.20.1 to 0.26.2

    Bumps ratatui from 0.20.1 to 0.26.2.

    Release notes

    Sourced from ratatui's releases.

    v0.26.2

    0.26.2 - 2024-04-15

    This is a patch release that fixes bugs and adds enhancements, including new iterator constructors, List scroll padding, and various rendering improvements. ✨

    Release highlights: https://ratatui.rs/highlights/v0262/

    Features

    • 11b452d (layout) Mark various functions as const by @​EdJoPaTo in #951

    • 1cff511 (line) Impl Styled for Line by @​joshka in #968

      This adds `FromIterator` impls for `Line` and `Text` that allow creating
      `Line` and `Text` instances from iterators of `Span` and `Line`
      instances, respectively.
      
      let line = Line::from_iter(vec![&quot;Hello&quot;.blue(), &quot; world!&quot;.green()]);
      let line: Line = iter::once(&quot;Hello&quot;.blue())
          .chain(iter::once(&quot; world!&quot;.green()))
          .collect();
      let text = Text::from_iter(vec![&quot;The first line&quot;, &quot;The second line&quot;]);
      let text: Text = iter::once(&quot;The first line&quot;)
          .chain(iter::once(&quot;The second line&quot;))
          .collect();
      

    • 654949b (list) Add Scroll Padding to Lists by @​CameronBarnes in #958

      Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
      
      let list = List::new(items).scroll_padding(1);
      

      Fixes:ratatui-org/ratatui#955

    • 26af650 (text) Add push methods for text and line by @​joshka in #998

    ... (truncated)

    Changelog

    Sourced from ratatui's changelog.

    0.26.2 - 2024-04-15

    This is a patch release that fixes bugs and adds enhancements, including new iterator constructors, List scroll padding, and various rendering improvements. ✨

    Release highlights: https://ratatui.rs/highlights/v0262/

    Features

    • 11b452d (layout) Mark various functions as const by @​EdJoPaTo in #951

    • 1cff511 (line) Impl Styled for Line by @​joshka in #968

      This adds `FromIterator` impls for `Line` and `Text` that allow creating
      `Line` and `Text` instances from iterators of `Span` and `Line`
      instances, respectively.
      
      let line = Line::from_iter(vec![&quot;Hello&quot;.blue(), &quot; world!&quot;.green()]);
      let line: Line = iter::once(&quot;Hello&quot;.blue())
          .chain(iter::once(&quot; world!&quot;.green()))
          .collect();
      let text = Text::from_iter(vec![&quot;The first line&quot;, &quot;The second line&quot;]);
      let text: Text = iter::once(&quot;The first line&quot;)
          .chain(iter::once(&quot;The second line&quot;))
          .collect();
      

    • 654949b (list) Add Scroll Padding to Lists by @​CameronBarnes in #958

      Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
      
      let list = List::new(items).scroll_padding(1);
      

      Fixes:ratatui-org/ratatui#955

    • 26af650 (text) Add push methods for text and line by @​joshka in #998

      Adds the following methods to the `Text` and `Line` structs:
      - Text::push_line
      

    ... (truncated)

    Commits
    • 363c4c5 chore(release): prepare for 0.26.2 (#1029)
    • b7778e5 fix(paragraph): unit test typo (#1022)
    • b5061c5 chore(deps): update stability requirement from 0.1.1 to 0.2.0 (#1021)
    • 359204c refactor: simplify to io::Result (#1016)
    • 14461c3 docs(breaking-changes): typos and markdownlint (#1009)
    • 3b002fd docs: update incompatible code warning in examples readme (#1013)
    • 0207160 fix(line): line truncation respects alignment (#987)
    • 26af650 feat(text): add push methods for text and line (#998)
    • 07da90a chore(funding): add eth address for receiving funds from drips.network (#994)
    • 125ee92 chore(docs): fix typos in crate documentation (#1002)
    • 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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @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 anyhow from 1.0.81 to 1.0.82

    chore(deps): bump anyhow from 1.0.81 to 1.0.82

    Bumps anyhow from 1.0.81 to 1.0.82.

    Release notes

    Sourced from anyhow's releases.

    1.0.82

    • Documentation improvements
    Commits
    • 074bdea Release 1.0.82
    • 47a4fbf Merge pull request #360 from dtolnay/docensure
    • c5af1db Make ensure's doc comment apply to the cfg(not(doc)) macro too
    • bebc7a2 Revert "Temporarily disable miri on doctests"
    • f2c4db9 Update ui test suite to nightly-2024-03-31
    • 028cbee Explicitly install a Rust toolchain for cargo-outdated job
    • 7a4cac5 Merge pull request #358 from dtolnay/workspacewrapper
    • 939db01 Apply RUSTC_WORKSPACE_WRAPPER
    • 9f84a37 Temporarily disable miri on doctests
    • 45e5a58 Ignore dead code lint in test
    • 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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @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 chrono from 0.4.35 to 0.4.38

    chore(deps): bump chrono from 0.4.35 to 0.4.38

    Bumps chrono from 0.4.35 to 0.4.38.

    Release notes

    Sourced from chrono's releases.

    v0.4.38

    This release bring a ca. 20% improvement to the performance of the formatting code, and a convenient days_since method for the Weekday type.

    Chrono 0.4.38 also removes the long deprecated rustc-serialize feature. Support for rustc-serialize will be soft-destabilized in the next Rust edition. Removing the feature will not break existing users of the feature; Cargo will just not update dependents that rely on it to newer versions of chrono.

    In chrono 0.4.36 we made an accidental breaking change by switching to derive(Copy) for DateTime instead of a manual implementation. It is reverted in this release.

    Removals

    Additions

    Fixes

    • Return error when rounding with a zero duration (#1474, thanks @​Dav1dde)
    • Manually implement Copy for DateTime if offset is Copy (#1573)

    Internal

    • Inline test_encodable_json and test_decodable_json functions (#1550)
    • CI: Reduce combinations in cargo hack check (#1553)
    • Refactor formatting code (#1335)
    • Optimize number formatting (#1558)
    • Only package files needed for building and testing (#1554)

    Thanks to all contributors on behalf of the chrono team, @​djc and @​pitdicker!

    v0.4.37

    Version 0.4.36 introduced an unexpected breaking change and was yanked. In it LocalResult was renamed to MappedLocalTime to avoid the impression that it is a Result type were some of the results are errors. For backwards compatibility a type alias with the old name was added.

    As it turns out there is one case where a type alias behaves differently from the regular enum: you can't import enum variants from a type alias with use chrono::LocalResult::*. With 0.4.37 we make the new name MappedLocalTime the alias, but keep using it in function signatures and the documentation as much as possible.

    See also the release notes of chrono 0.4.36 from yesterday for the yanked release.

    v0.4.36

    This release un-deprecates the methods on TimeDelta that were deprecated with the 0.4.35 release because of the churn they are causing for the ecosystem.

    New is the DateTime::with_time() method. As an example of when it is useful:

    use chrono::{Local, NaiveTime};
    // Today at 12:00:00
    let today_noon = Local::now().with_time(NaiveTime::from_hms_opt(12, 0, 0).unwrap());
    

    Additions

    • Add DateTime::with_time() (#1510)

    Deprecations

    • Revert TimeDelta deprecations (#1543)
    • Deprecate TimeStamp::timestamp_subsec_nanos, which was missed in the 0.4.35 release (#1486)

    ... (truncated)

    Commits
    • 352a352 Prepare 0.4.38
    • 46d44d6 Manually implement Copy for DateTime if offset is Copy
    • 760eb66 Update windows-bindgen requirement from 0.55 to 0.56
    • 391187f Return error when rounding with zero duration
    • ffc75e5 Add TimeDelta::checked_mul and TimeDelta::checked_div
    • f8cecbe Make Weekday::num_days_from public, rename to days_since.
    • 0cfc405 Optimize number formatting
    • 74ba83b Take pad by value
    • 78e79db Match on tuples in format_fixed
    • f3d76c7 Match on tuples in format_numeric
    • 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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @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.197 to 1.0.198

    chore(deps): bump serde from 1.0.197 to 1.0.198

    Bumps serde from 1.0.197 to 1.0.198.

    Release notes

    Sourced from serde's releases.

    v1.0.198

    Commits
    • c4fb923 Release 1.0.198
    • 65b7eea Merge pull request #2729 from dtolnay/saturating
    • 01cd696 Integrate Saturating<T> deserialization into impl_deserialize_num macro
    • c13b3f7 Format PR 2709
    • a6571ee Merge pull request #2709 from jbethune/master
    • 6e38aff Revert "Temporarily disable miri on doctests"
    • 3d1b19e Implement Ser+De for Saturating\<T>
    • 5b24f88 Resolve legacy_numeric_constants clippy lints
    • 74d0670 Explicitly install a Rust toolchain for cargo-outdated job
    • 3bfab6e Temporarily disable miri on doctests
    • 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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @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 toml from 0.5.11 to 0.8.12

    chore(deps): bump toml from 0.5.11 to 0.8.12

    Bumps toml from 0.5.11 to 0.8.12.

    Commits
    • 3a777b3 chore: Release
    • 7979905 docs: Update changelog
    • 487768d Merge pull request #703 from epage/overflow
    • 6987f77 chore(ci): Run with default opt-level
    • 21f545d fix(parser): Don't stackoverflow on opt-level=0
    • af1f97d refactor(parser): Pull recursion limit out to variable
    • eb86543 chore: Release
    • 246b292 docs: Update changelog
    • d41c62c Merge pull request #701 from epage/cleanup
    • 31457b3 refactor(error): Clean up highlight code
    • 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 show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
    • @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
  • fix: update flake.lock

    fix: update flake.lock

    Automated changes by the update-flake-lock GitHub Action.

    Flake lock file updates:
    
    • Updated input 'nixpkgs':
        'github:NixOS/nixpkgs/878ef7d9721bee9f81f8a80819f9211ad1f993da' (2024-03-14)
      → 'github:NixOS/nixpkgs/219951b495fc2eac67b1456824cc1ec1fd2ee659' (2024-03-28)
    • Updated input 'pre-commit-hooks':
        'github:cachix/pre-commit-hooks.nix/5df5a70ad7575f6601d91f0efec95dd9bc619431' (2024-02-15)
      → 'github:cachix/pre-commit-hooks.nix/9fc61b5eb0e50fc42f1d358f5240722907b79726' (2024-03-31)
    • Updated input 'pre-commit-hooks/flake-utils':
        'github:numtide/flake-utils/4022d587cbbfd70fe950c1e2083a02621806a725' (2023-12-04)
      → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11)
    • Updated input 'pre-commit-hooks/gitignore':
        'github:hercules-ci/gitignore.nix/43e1aa1308018f37118e34d3a9cb4f5e75dc11d5' (2023-12-29)
      → 'github:hercules-ci/gitignore.nix/637db329424fd7e46cf4185293b9cc8c88c95394' (2024-02-28)
    • Updated input 'pre-commit-hooks/nixpkgs':
        'github:NixOS/nixpkgs/eabe8d3eface69f5bb16c18f8662a702f50c20d5' (2024-01-09)
      → 'github:NixOS/nixpkgs/e367f7a1fb93137af22a3908f00b9a35e2d286a7' (2024-03-18)
    • Updated input 'pre-commit-hooks/nixpkgs-stable':
        'github:NixOS/nixpkgs/3dc440faeee9e889fe2d1b4d25ad0f430d449356' (2024-01-10)
      → 'github:NixOS/nixpkgs/614b4613980a522ba49f0d194531beddbb7220d3' (2024-03-17)
    • Updated input 'rust-overlay':
        'github:oxalica/rust-overlay/42baa9e2e4713572d7481f917243b07dffdf54b8' (2024-03-16)
      → 'github:oxalica/rust-overlay/3f46a51b47f56c24b4d7e8db8fb8e73118923f96' (2024-04-01)
    

    Running GitHub Actions on this PR

    GitHub Actions will not run workflows on pull requests which are opened by a GitHub Action.

    To run GitHub Actions workflows on this PR, run:

    git branch -D update_flake_lock_action
    git fetch origin
    git checkout update_flake_lock_action
    git commit --amend --no-edit
    git push origin update_flake_lock_action --force
    
    dependencies automated 
    opened by github-actions[bot] 0
  • fix: update flake.lock

    fix: update flake.lock

    Automated changes by the update-flake-lock GitHub Action.

    Flake lock file updates:
    
    • Updated input 'nixpkgs':
        'github:NixOS/nixpkgs/219951b495fc2eac67b1456824cc1ec1fd2ee659?narHash=sha256-u1dfs0ASQIEr1icTVrsKwg2xToIpn7ZXxW3RHfHxshg%3D' (2024-03-28)
      → 'github:NixOS/nixpkgs/576ecd43d3b864966b4423a853412d6177775e8b?narHash=sha256-Wacm/DrzLD7mjFGnSxxyGkJgg2unU/dNdNgdngBH%2BRU%3D' (2024-04-29)
    • Updated input 'pre-commit-hooks':
        'github:cachix/pre-commit-hooks.nix/9fc61b5eb0e50fc42f1d358f5240722907b79726?narHash=sha256-rs5zMkTO%2BAlVBzgOaskAtY4zix7q3l8PpawfznHotcQ%3D' (2024-03-31)
      → 'github:cachix/pre-commit-hooks.nix/2849da033884f54822af194400f8dff435ada242?narHash=sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk%3D' (2024-04-30)
    • Updated input 'rust-overlay':
        'github:oxalica/rust-overlay/3f46a51b47f56c24b4d7e8db8fb8e73118923f96?narHash=sha256-jlfDBRtsLoqRNFxtQtG47wsrwVsQSV4AqoMgWG6Bvng%3D' (2024-04-01)
      → 'github:oxalica/rust-overlay/ce35c36f58f82cee6ec959e0d44c587d64281b6f?narHash=sha256-lKTA3XqRo4aVgkyTSCtpcALpGXdmkilHTtN00eRg0QU%3D' (2024-04-30)
    

    Running GitHub Actions on this PR

    GitHub Actions will not run workflows on pull requests which are opened by a GitHub Action.

    To run GitHub Actions workflows on this PR, run:

    git branch -D update_flake_lock_action
    git fetch origin
    git checkout update_flake_lock_action
    git commit --amend --no-edit
    git push origin update_flake_lock_action --force
    
    dependencies automated 
    opened by github-actions[bot] 0
  • feat: daemon mode

    feat: daemon mode

    Some users might be willing to run dead-man-switch not as a TUI but as a daemon.

    • Make the TUI a default feature
    • Make the daemon an optional feature
    • daemon mode is activated by running with -d/--daemon
      • This needs maybe clap?
    • possible commands:
      • -C/--config: to specify a configuration file, see #14
      • -c/--check-in: to check in
    enhancement 
    opened by storopoli 0
  • feat: Dockerfile and Docker instructions

    feat: Dockerfile and Docker instructions

    We need to offer a way for users to deploy with a Dockerfile and passing the right instructions.

    A good resource is something I've made a little while for the stoic-quotes app. In there you'll find a good optimized and secure Dockerfile along with README.md instructions.

    enhancement help wanted good first issue 
    opened by storopoli 0
  • feat: Config Modal Screen

    feat: Config Modal Screen

    We need a Modal screen for the user to edit his Config. This was partially done in #18, and someone can grab that PR and start it over.

    Some good resources:

    enhancement help wanted 
    opened by storopoli 0
  • fix: add `Error` types

    fix: add `Error` types

    We use anyhow::Result for everything. It works and is a quick and simple solution.

    It would be good to have different Error implementations. One can easily create them using thiserror.

    help wanted good first issue 
    opened by storopoli 0
  • feat(CLI): add `--config` CLI argument

    feat(CLI): add `--config` CLI argument

    Right now the config is hardcoded to be created/read in the OS-agnostic config dir. We need a CLI argument to override it.

    Something like:

    dead_man_switch -c myconfig.toml
    
    enhancement help wanted good first issue 
    opened by storopoli 0
Releases(v0.1.3)
Owner
Jose Storopoli
I make computers go brrr faster. 🔑 0x03A1D5FA17AECEEB
Jose Storopoli
A CLI to easily switch between multiple Neovim configuration environments, written in Rust

Neovim Configuration Switcher Neovim Configuration Switcher (short nvims) is a CLI to easily switch between multiple Neovim configuration environments

Nhan Pham 3 Mar 30, 2024
🧠 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
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
Attempt to make a git profile switcher to switch profiles.

Git Profile Switcher █▀▀ █ ▀█▀   █▀ █░█░█ █ ▀█▀ █▀▀ █░█ █▀▀ █▀█ █▄█ █ ░█░   ▄█ ▀▄▀▄▀ █ ░█░ █▄▄ █▀█

Srikanth K 2 Sep 23, 2022
Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

William D. Jones 5 Aug 20, 2022
An i3/Sway utility to switch focus to your last focused window. Alt+Tab in i3

i3-back An i3/Sway utility to switch focus to your last focused window. Allows for behavior similar to Alt+Tab on other desktop environments. Features

Charles C 17 Mar 13, 2023
A dead simple ANSI terminal color painting library for Rust.

yansi A dead simple ANSI terminal color painting library for Rust. use yansi::Paint; print!("{} light, {} light!", Paint::green("Green"), Paint::red(

Sergio Benitez 169 Dec 25, 2022
The dead easy way to use config files in your rust project

Configr The dead easy way to use config files in your project This will load a config.toml file if it exists, otherwise it will create the needed fold

Carsten Kragelund Jørgensen 4 Jul 1, 2022
Dead simple, memoized cargo subcommand to hoist cargo-built binaries into the current working directory, written in Rust.

cargo-hoist Dead simple cargo subcommand to hoist cargo-built binaries into scope. stable Install | User Docs | Crate Docs | Reference | Contributing

refcell.eth 6 Nov 9, 2023
A dead simple functional testing tool for command line applications

Pharaoh : build that test pyramid! What it is Pharaoh is a dead simple, no permission needed, functional test runner for command line applications, wr

Kevin Sztern 17 Dec 13, 2021
A Turing-complete but dead-simple spaced repetition CLI that helps you learn stuff.

Forne — Learn Stuff Forne is a Turing-complete spaced repetition engine to help you learn stuff your way. What does that mean? Well, there are a few p

Sam Brew 9 May 12, 2023
Style terminal outputs in a minimal, macro-based, and dead simple way.

sty ?? $\mathbb{\color{red}{Style \ } \color{lightblue}{terminal}\ \color{black}{outputs \ }\color{gray}{\ in\ a} \color{magenta}{\ minimal}\color{gra

斯人 5 Apr 18, 2024
Rust TUI client for steamcmd

Steam TUI About Just a simple TUI client for steamcmd. Allows for the graphical launching, updating, and downloading of steam games through a simple t

Dylan Madisetti 599 Jan 9, 2023
Another TUI based system monitor, this time in Rust!

Another TUI based system monitor, this time in Rust!

Caleb Bassi 2.1k Jan 3, 2023
A user-friendly TUI client for Matrix written in Rust!

Konoha A user-friendly TUI client for Matrix written in Rust! Notice: The client is currently not usable and is only hosted on GitHub for version cont

L3af 9 Jan 5, 2022
A tui to test regexes on the rust regex crate

regex-tui Structure src/ ├── app.rs -> holds the states and renders the widgets ├── event.rs -> handles the terminal events (key press, mouse cl

null 1 Oct 21, 2021
Lemurs - A lightweight TUI display/login manager written in Rust 🐒

Lemurs ?? A TUI Display/Login Manager written in Rust WIP: Whilst the project is working and installable, there are still a lot of bugs and limitation

Gijs Burghoorn 136 Jan 1, 2023
Playground for 2D EKF-SLAM as TUI in Rust

SLAMme.RS Playground for 2D EKF-SLAM as TUI in Rust Installation $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # install RUST $ su

Thore Goll 1 Jan 14, 2022
Rust TUI library - Clipping region is a set of min/max x/y values applied to the existing region

TinyBit Clipping region is a set of min/max x/y values applied to the existing region A TUI lib This is not yet production ready T O D O TODO: bugs: T

Togglebit 13 May 3, 2022