Files
gtk-ahfail/readme.md
Asger Geel Weirsøe 8c08e33ba0 initial commit
2025-11-30 20:52:00 +01:00

66 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 and scaled images to fit any screen.
## 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 (Arch Linux example):**
```bash
sudo pacman -S meson ninja rust gtk3 gstreamer gst-plugins-base gst-plugins-good gst-libav
```
2. **Build:**
```bash
meson setup builddir
meson compile -C builddir
```
3. **Install:**
```bash
sudo meson install -C builddir
```
## Usage
Run `gtklock` with the module path:
```bash
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).
```bash
gtklock -m ahfail-module.so -- --deadzone=860,440,200,200
```
*(Note the `--` separator before module arguments)*
* `--audio-uri=URI`: Override the default audio clip.
```bash
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.