| Crates.io | git-selfies |
| lib.rs | git-selfies |
| version | 0.0.1 |
| created_at | 2025-12-24 11:10:30.770569+00 |
| updated_at | 2025-12-24 11:10:30.770569+00 |
| description | Git-based selfies for software developers - a modern lolcommits alternative |
| homepage | |
| repository | https://github.com/biw/git-selfies |
| max_upload_size | |
| id | 2002989 |
| size | 942,469 |
A modern, blazing-fast implementation of lolcommits written in Rust. Automatically capture webcam selfies every time you commit to git!
[!WARNING] This package is still a WIP and not well tested - espcially on Linux and Windows. If you hit an issue or bug, please file an issue
brew tap biw/tap
brew install git-selfies
# Download and install DEB package
wget https://github.com/biw/git-selfies/releases/latest/download/git-selfies_amd64.deb
sudo dpkg -i git-selfies_amd64.deb
Download pre-built binaries for your platform from the releases page:
Extract and copy to a directory in your PATH. See INSTALL.md for detailed instructions.
git clone https://github.com/biw/git-selfies.git
cd git-selfies
cargo build --release
sudo cp target/release/git-selfies /usr/local/bin/
Or install directly with cargo:
cargo install --git https://github.com/biw/git-selfies
For more installation options and troubleshooting, see INSTALL.md.
Navigate to your git repository and run:
git-selfies enable
This installs a post-commit hook that will automatically capture a selfie after every commit.
git add .
git commit -m "Add amazing feature"
# A selfie is automatically captured in the background!
# Open the selfies directory
git-selfies browse
# View the most recent selfie
git-selfies last
Your selfies are stored in ~/.git-selfies/<repo-name>/ with filenames based on the commit SHA.
git-selfies enableEnable git-selfies for the current repository by installing a post-commit hook.
git-selfies disableDisable git-selfies for the current repository by removing the post-commit hook.
git-selfies captureManually capture a selfie. Useful for testing.
Options:
--sync: Run synchronously (default is background mode)git-selfies config-cameraInteractively configure which camera to use. Presents a list of available cameras and lets you select one with arrow keys.
Options when saving:
git-selfies list-camerasList all available cameras on your system.
git-selfies lastShow the most recent selfie for the current repository. Opens the image with your default image viewer.
git-selfies browseOpen the selfies directory for the current repository in your file manager.
git-selfies supports two levels of configuration:
~/.git-selfies/config.toml - applies to all repositories.git-selfies/config.toml - applies to current repository onlyLocal configuration always takes precedence over global configuration.
# Enable or disable selfie capture
enabled = true
# Camera index (0, 1, 2, etc.)
camera_index = 0
# Camera name (alternative to index)
camera_name = "FaceTime HD Camera"
The easiest way to configure your camera is with the interactive tool:
git-selfies config-camera
This will:
GIT_SELFIES_DISABLED=true - Temporarily disable selfie capture without removing the hookHOME - Used to determine the storage directorygit-selfies enable, it creates a post-commit hook at .git/hooks/post-commit~/.git-selfies/<repo-name>/<short-sha>.jpgIf you get a "Failed to open camera" error:
git-selfies list-camerasgit-selfies config-cameragit-selfies capture --syncIf your camera is already in use by another application (Zoom, OBS, etc.), git-selfies may not be able to access it. Close other applications or select a different camera.
Verify the hook is installed:
cat .git/hooks/post-commit
Verify the hook is executable (Unix):
ls -l .git/hooks/post-commit
To temporarily disable without removing the hook:
export GIT_SELFIES_DISABLED=true
git commit -m "This commit won't capture a selfie"
Selfies are stored in:
~/.git-selfies/
├── my-awesome-project/
│ ├── a1b2c3d.jpg
│ ├── e4f5g6h.jpg
│ └── config.toml
└── another-project/
├── 1234567.jpg
└── config.toml
The original lolcommits is written in Ruby, which requires:
git-selfies is pure Rust, which means:
| Feature | git-selfies | lolcommits |
|---|---|---|
| Runtime | None (compiled) | Ruby |
| Dependencies | None | Ruby, ImageMagick |
| Binary size | ~5-15MB | N/A (scripted) |
| Startup time | <10ms | ~100-200ms |
| Installation | Single binary | gem install + deps |
| Cross-platform | ✅ (native) | ✅ (via Ruby) |
| Background capture | ✅ | ✅ |
| Configuration | TOML | YAML |
| Plugins | ❌ (planned) | ✅ |
# Debug build
cargo build
# Release build (optimized)
cargo build --release
# Run unit tests
cargo test
# Run manual test suite
./test-manual.sh
cargo build --release./target/release/git-selfies list-cameras./target/release/git-selfies config-camera./target/release/git-selfies capture --sync./target/release/git-selfies enablegit commit -m "test"./target/release/git-selfies browseNote: First camera capture on macOS will prompt for camera permissions. Make sure to grant access in System Settings > Privacy & Security > Camera.
The project uses GitHub Actions for:
To create a release:
git tag v0.2.0
git push origin v0.2.0
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
MIT License - See LICENSE for details.
Made with ❤️ and Rust 🦀