Genact - 🌀 A nonsense activity generator

Overview

genact - a nonsense activity generator

CI DockerHub Crates.io license Stars Downloads

Pretend to be busy or waiting for your computer when you should actually be doing real work! Impress people with your insane multitasking skills. Just open a few instances of genact and watch the show. genact has multiple scenes that pretend to be doing something exciting or useful when in reality nothing is happening at all.

Installation

Packaging status

You don't have to install anything! For your convenience, prebuilt binaries for Linux, OSX and Windows are provided here that should run without any dependencies. Additionally, there is a web version at https://svenstaro.github.io/genact/

It's compatible with FreeBSD, Linux, macOS, Windows 10 (it needs a recent Windows 10 to get ANSI support) and most modern web browsers that support WebAssembly.

On FreeBSD: You don't have to do anything special here. Just run

pkg install genact
genact

On Linux: Download genact-linux from the releases page and run

chmod +x genact-linux
./genact-linux

On macOS: Download genact-osx from the releases page and run

chmod +x genact-osx
./genact-osx

A homebrew package is also available. To install it this way, run

brew install genact

On macOS, you can also install via MacPorts:

sudo port install genact

On Windows: Download genact-win.exe from the releases page and double click it.

With Cargo: If you have a somewhat recent version of Rust and Cargo installed, you can run

cargo install genact
genact

Running

To see a list of all available options, you can run

./genact -h

or

cargo run -- -h

or (on Docker)

docker run -it --rm svenstaro/genact -h

Usage

genact 0.11.0
Sven-Hendrik Haase <[email protected]>
A nonsense activity generator

USAGE:
    genact [FLAGS] [OPTIONS]

FLAGS:
    -h, --help            Prints help information
    -l, --list-modules    List available modules
    -V, --version         Prints version information

OPTIONS:
        --exit-after-modules <exit-after-modules>    Exit after running this many modules
        --exit-after-time <exit-after-time>          Exit after running for this long (format example: 2h10min)
    -m, --modules <modules>...
            Run only these modules [possible values: botnet, bootlog, kernel_compile,
            memdump, cargo, cc, composer, docker_build, cryptomining,
            download, mkinitcpio, weblog, docker_image_rm, simcity]
    -s, --speed-factor <speed-factor>                Global speed factor [default: 1]

Web usage

In the web version, you can run specific modules by providing them as ?module parameters like this: https://svenstaro.github.io/genact?module=cc&module=memdump

You can also provide a ?speed-factor like this: https://svenstaro.github.io/genact?speed-factor=5

Building

You should have a recent version of rust and cargo installed.

Then, just clone it like usual and cargo run to get output:

git clone https://github.com/svenstaro/genact.git
cd genact
cargo run --release

Releasing

This is mostly a note for me on how to release this thing:

  • Make sure CHANGELOG.md is up to date.
  • cargo release --dry-run
  • cargo release
  • Releases will automatically be deployed by Github Actions.
  • Docker images will automatically be built by Docker Hub.
  • Update Arch package.
Comments
  • New Module: docker_build

    New Module: docker_build

    This is currently WIP.

    Managed to get everything working so far, the last thing missing is to properly print instructions. Pulling instructions from a list like all other data wouldn't be the problem, but I would also like to print generic output for instructions that run and are not cached.

    Example:

    RUN ls -la
    

    should output something like

    total 208
    drwxr-xr-x  21 kg  staff    672 Dec 12 09:36 .
    drwxr-xr-x@  9 kg  staff    288 Dec  5 00:17 ..
    -rw-r--r--   1 kg  staff    219 May 21  2019 .editorconfig
    drwxr-xr-x  15 kg  staff    480 Dec 12 11:01 .git
    -rw-r--r--   1 kg  staff     28 Jun  1  2018 .gitignore
    -rw-r--r--   1 kg  staff   2812 May 21  2019 .travis.yml
    

    but I'm not sure how to implement this. Any ideas?

    Also, hope the current code is not that horrifying. 😬

    opened by Kovah 19
  • First try on an implementation for a Docker Genact plugin

    First try on an implementation for a Docker Genact plugin

    I just tried to implement a Docker plugin based on #64. It basically works but I couldn't make the SHA256 generation work as there are type conflicts.

    The following error is thrown in src/docker.rs:22:

    return sha256.result();
               ^^^^^^^^^^^^^^^ expected struct `std::string::String`, found struct `generic_array::GenericArray`
    

    Corresponding code:

    fn gen_hash() -> String {
        let mut rng = rand::thread_rng();
        let mut sha256 = Sha256::new();
        sha256.input(
            rng.sample_iter(&Alphanumeric)
            .take(30)
            .collect::<String>()
        );
        return sha256.result();
    }
    

    I tried several things and searched for ways to convert from one type to a string but I had no luck. I also found no information about returning the hash result as a string directly. Perhaps this is an easy fix but I am not familiar with Rust so I am stuck at the moment.

    opened by Kovah 15
  • Docker support

    Docker support

    Could you create a docker image and push to docker hub for running it without downloading any additional files? This seems to be quick option to get new users as they only have to run single command instead of trying to download correct binaries and then figure out how to launch them.

    opened by ValdasK 14
  • Translate botnet to Rust

    Translate botnet to Rust

    I've translated botnet module into Rust. As the translation is almost word-to-word, please feel free to tell me if I can rewrite something in more rust-ish way.

    opened by equal-l2 13
  • Add a simcity module

    Add a simcity module

    simcity

    Reticulating Splines is a classic "loading screen phrase" that first appeared in Sim City 2000.

    This modules combines the spinner from FGRibreau/spinners with these phrases.

    At random intervals, the text appears in red, yellow or blue.

    opened by xyproto 12
  • Add initial implementation of `julia` module

    Add initial implementation of `julia` module

    This is an initial implementation of the module julia. It simulates the process of updating all the packages in a project.

    There are still some features missing:

    • [x] ~downloading artifacts~
    • [x] ~building artifacts~
    • [x] ~possible old manifest format~
    • [x] ~garbage collection~
    • [ ] dynamic package precompilation

    If there is some interest, I can work on adding them.

    Here is a preview of what it looks like (this is an old version without artifacts and precompilation progress bar):

    Preview

    Updated asciinema recording (others are available on my account):
    opened by FedericoStra 10
  • Add snapcraft.yaml for snap packaging

    Add snapcraft.yaml for snap packaging

    Made a yaml file to pack genact as a snap, using snapcraft. Did a rough test, and put genact in a fully confined enviroment; Would be nice to make more users looks much busier and still feeling safe :)

    opened by kaxing 8
  • Heads-up: FreeBSD port is on its way

    Heads-up: FreeBSD port is on its way

    FYI, genact is going to be included in the FreeBSD ports collection soon.

    The PR is available here: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228306

    When it's pulled it will be able to install a prebuilt genact package with:

    pkg install genact
    

    Nice and easy. You can start generating nonsense in no time.

    Cheers! 😄

    opened by 0mp 6
  • Add burst mode to bootlog module

    Add burst mode to bootlog module

    What does this PR do?

    It adds burst mode to the bootlog module

    Description of Task to be completed?

    • The bootlog module should behave a bit more realistically in that it should sometimes burst a bunch of lines really quickly

    How should this be manually tested?

    • Run cargo run -- -m bootlog in the project
    • The output should be printed in quick succession from time to time.
    opened by briankabiro 5
  • Investigate compressing data files

    Investigate compressing data files

    Maybe I can cut the size down by compressing stuff in data/ during build time (with build.rs) and then decompressing it during runtime. Gotta investigate.

    opened by svenstaro 4
  • use multistage Dockerfile to keep image size low

    use multistage Dockerfile to keep image size low

    I added some lines to the Dockerfile to utilize multi-stage builds. This reduces the image size to around ~60MB by only adding the final genact binary to the image.

    opened by floj 4
  • Add an on-screen percentage based on the -exitafter time given

    Add an on-screen percentage based on the -exitafter time given

    Thanks for creating such a handy little tool. It would be great if a percentage could be shown on the screen that correlated with the time given in the -e or -exitafter switches, so that the percentage complete was calculated based on the remaining time until the process will stop.

    Maybe it can use a fixed row at the bottom of the terminal, with the output continuing above it?

    opened by iammeat 2
Releases(v1.2.2)
Owner
Sven-Hendrik Haase
Freelance consultant, DevOps and automation connoisseur, Arch Linux developer, hobbyist game and graphics programmer. Available for remote contracting.
Sven-Hendrik Haase
Tiny, no-nonsense, self-contained, Tensorflow and ONNX inference

Sonos' Neural Network inference engine. This project used to be called tfdeploy, or Tensorflow-deploy-rust. What ? tract is a Neural Network inference

Sonos, Inc. 1.5k Jan 2, 2023
Neovide - No Nonsense Neovim Client in Rust

Neovide This is a simple graphical user interface for Neovim (an aggressively refactored and updated Vim editor). Where possible there are some graphi

Neovide 9.3k Jan 5, 2023
A no-nonsense CAPTCHA system with seamless UX | Backend component

mCaptcha Proof of work based, privacy respecting CAPTCHA system with a kickass UX. STATUS: ACTIVE DEVELOPMENT Skip to demo mCaptcha is a privacy respe

mCaptcha 818 Jan 2, 2023
No-nonsense input!(...) macro for Rust

No-nonsense input!(...) macro for Rust

Oliver Lenehan 2 Oct 30, 2022
No-nonsense, elegant request framework

Note: this crate is in an experimental sketch state. Please be careful if using on production environments. nerf nerf stands for: No-nonsense: Correct

Nam Junghyun 3 Dec 15, 2022
Linux Kernel Manager and Activity Monitor 🐧💻

Linux Kernel Manager and Activity Monitor ?? ?? The kernel is the part of the operating system that facilitates interactions between hardware and soft

Orhun Parmaksız 1.7k Jan 5, 2023
A DIY, IMU-based skateboard activity tracker

tracksb A DIY, IMU-based skateboard activity tracker. The idea is to come up with algorithms to track activity during skateboarding sessions. A compan

null 21 May 5, 2022
CLI tool for generating a summary of recent github activity for people who are incredibly forgetful

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful but still need to give weekly status updates to their boss without getting depressed and convincing themselves they did nothing because they can't remember what they did!

Jane Lusby 50 Dec 23, 2022
Serverless setup for activity pub (using lambda+dynamodb) in Rust

Serverless ActivityPub About This is an experiment to have free/cheaper activitypub instances running on AWS (making use of free tiers as much as poss

Conrad Ludgate 3 Dec 30, 2022
Track activity time from terminal.

Time Tracker This is a command-line time-tracking tool that allows you to manually or automatically time-track your activity. Manual tracking In order

Mario Dujić 4 Mar 14, 2023
Activity and idle watchers

Awatcher Awatcher is a window activity and idle watcher with an optional tray and UI for statistics. The goal is to compensate the fragmentation of de

null 5 May 15, 2023
A simple Iced application that I wrote as a learning activity, which allows you to browse the full list of regular Material Icons.

Iced Material Icon Browser Iced Material Icon Browser is a simple Iced application that I wrote as a learning activity, which allows you to browse the

BB-301 4 Sep 18, 2023
A Voice Activity Detector rust library using the Silero VAD model.

Voice Activity Detector Provides a model and extensions for detecting speech in audio. Standalone Voice Activity Detector This crate provides a standa

Nick Keenan 3 Apr 3, 2024
Sūshì is a simple but customizable static site generator / blog generator written in Rust

sūshì Sūshì is a simple but customizable static site generator / blog generator written in Rust. Installation Install with Cargo (Recommended) cargo i

MrNothing233 2 Mar 20, 2022
Full fake REST API generator written with Rust

Weld Full fake REST API generator. This project is heavily inspired by json-server, written with rust. Synopsis Our first aim is to generate a fake ap

Seray Uzgur 243 Dec 31, 2022
Procedural engine sound generator controlled via GUI or CLI

enginesound GUI Application used to generate purely synthetic engine sounds with advanced options written in Rust loosely based on this paper Reading

null 198 Dec 30, 2022
Custom Ethereum vanity address generator made in Rust

ethaddrgen Custom Ethereum address generator Get a shiny ethereum address and stand out from the crowd! Disclaimer: Do not use the private key shown i

Jakub Hlusička 153 Dec 27, 2022
Parsing Expression Grammar (PEG) parser generator for Rust

Parsing Expression Grammars in Rust Documentation | Release Notes rust-peg is a simple yet flexible parser generator that makes it easy to write robus

Kevin Mehall 1.2k Dec 30, 2022
LR(1) parser generator for Rust

LALRPOP LALRPOP is a Rust parser generator framework with usability as its primary goal. You should be able to write compact, DRY, readable grammars.

null 2.4k Jan 7, 2023
A typed parser generator embedded in Rust code for Parsing Expression Grammars

Oak Compiled on the nightly channel of Rust. Use rustup for managing compiler channels. You can download and set up the exact same version of the comp

Pierre Talbot 138 Nov 25, 2022