Files
gtk-ahfail/readme.md

1.8 KiB
Raw Blame History

Ah ah ah, you didn't say the magic word

This gtklock module listens for failed unlock attempts and recreates Dennis Nedrys “ah ah ah” lockout scene from Jurassic Park.

  • Animation: Spawns a looping "Nedry" sprite at a random location on the screen.
  • Audio: Plays the "ah ah ah, you didn't say the magic word" clip.
  • Safety: Sprites avoid overlapping a configurable "deadzone" (e.g., your login box).
  • Performance: Uses pre-warmed audio players for low latency

Requirements

  • Build: Meson, Ninja, Rust (Cargo), GTK+3 development headers.
  • Runtime: gtklock, gstreamer, gst-plugins-base, gst-plugins-good (for audio playback).

Build & Install

  1. Install Dependencies:

    sudo pacman -S meson ninja rust gtk3 gstreamer gst-plugins-base gst-plugins-good
    
  2. Build:

    meson setup builddir
    meson compile -C builddir
    
  3. Install:

    sudo meson install -C builddir
    

Usage

Run gtklock with the module path:

gtklock -m /usr/lib/gtklock/ahfail-module.so

Arguments

  • --deadzone=X,Y,W,H: Defines a rectangle where sprites will not spawn (e.g., to keep your password field visible).

    gtklock -m ahfail-module.so -- --deadzone=860,440,200,200
    

    (Note the -- separator before module arguments)

  • --audio-uri=URI: Override the default audio clip.

    gtklock -m ahfail-module.so -- --audio-uri=file:///home/user/custom.mp3
    

Development

  • Run Tests: cargo test
  • Benchmarks: cargo test --test benchmarks -- --nocapture
  • Linting: cargo clippy

Customization

To change the default sprite or audio:

  1. Replace files in assets/.
  2. Update assets/ahfail.gresource.xml.
  3. Rebuild with Meson.