Skip to main content

DFakeSeeder screenshot

D' Fake Seeder

CI/CD PyPI Python License Release Downloads

A sophisticated Python GTK4 BitTorrent client that simulates seeding activity with advanced peer-to-peer networking capabilities, comprehensive settings management, multi-language support, and extensive automated testing.

About the Name

The name "D' Fake Seeder" is a playful nod to the Irish English accent. In Irish pronunciation, the "th" sound in "the" is often rendered as a hard "d" sound - so "the" becomes "de" or "d'". This linguistic quirk gives us "D' Fake Seeder" instead of "The Fake Seeder", celebrating the project's Irish heritage while describing exactly what it does: simulates (fakes) torrent seeding activity.

Features

Core Functionality

  • Multi-Torrent Support: Handle multiple torrents simultaneously with individual configuration
  • Protocol Support: Full HTTP and UDP tracker compatibility with BitTorrent protocol (BEP-003)
  • Peer-to-Peer Networking: Advanced P2P implementation with incoming/outgoing connection management
  • Real-time Monitoring: Live connection tracking and performance metrics

Advanced Features

  • System Tray Integration: Full tray application with D-Bus IPC for seamless desktop integration
  • Internationalization: 21 languages supported with runtime language switching
  • Desktop Integration: XDG-compliant with proper icon themes, desktop files, and GNOME Shell support
  • Settings Management: Comprehensive configuration with validation, profiles, and D-Bus sync
  • Performance Tracking: Built-in automatic timing and performance monitoring

User Interface

  • GTK4 Modern UI: Clean, responsive interface with modular component architecture
  • Multi-Tab Settings: Organized configuration categories (General, Connection, Peer Protocol, Advanced)
  • Real-time Translation: Dynamic language changes without application restart
  • Performance Tracking: Built-in timing and performance monitoring

DFakeSeeder screenshot

Installation & Usage

# Install from PyPI
pip install d-fake-seeder

# Run automated setup (checks dependencies, offers desktop integration)
dfs-setup
# This will
#  - Check for required system packages (GTK4, LibAdwaita, PyGObject)
#  - Show OS-specific installation commands if dependencies are missing
#  - Offer to install desktop integration (icons, menu entries)
#  - Display launch instructions

# Or skip setup and install system dependencies manually
# Fedora/RHEL
sudo dnf install gtk4 libadwaita python3-gobject

# Debian/Ubuntu
sudo apt install gir1.2-gtk-4.0 libadwaita-1-0 gir1.2-adw-1 python3-gi

# Launch the application
dfs                    # Short command
dfakeseeder           # Full command
dfs --with-tray       # Launch with system tray
dfs-tray              # Tray application only

# Launch from application menu (after desktop integration)
gtk-launch dfakeseeder
# Or search "D' Fake Seeder" in application menu

Development Setup

# Setup pipenv environment
make setup-venv

# Run with debug output (pipenv)
make run-debug-venv

# Run with Docker
make run-debug-docker

Package Installations

Debian/Ubuntu (.deb)

# Download and install
curl -sL $(curl -s https://api.github.com/repos/dmzoneill/dfakeseeder/releases/latest | grep browser_download_url | cut -d\" -f4 | grep deb) -o dfakeseeder.deb
sudo dpkg -i dfakeseeder.deb

# Everything is automatic
#  - All dependencies installed (GTK4, LibAdwaita, Python packages)
#  - Desktop integration (icons, menu entries, cache updates)
#  - Command-line launchers: dfs, dfakeseeder

# Launch from command line
dfs                    # Short command
dfakeseeder           # Full command

# Or launch from application menu
gtk-launch dfakeseeder
# Search "D' Fake Seeder" in application menu

# GNOME Shell users: Press Alt+F2, type 'r', Enter to restart shell

RHEL/Fedora (.rpm)

# Download and install
curl -sL $(curl -s https://api.github.com/repos/dmzoneill/dfakeseeder/releases/latest | grep browser_download_url | cut -d\" -f4 | grep rpm) -o dfakeseeder.rpm
sudo rpm -i dfakeseeder.rpm

# Everything is automatic
#  - All dependencies installed (GTK4, LibAdwaita, Python packages)
#  - Desktop integration (icons, menu entries, cache updates)
#  - Command-line launchers: dfs, dfakeseeder

# Launch from command line
dfs                    # Short command
dfakeseeder           # Full command

# Or launch from application menu
gtk-launch dfakeseeder
# Search "D' Fake Seeder" in application menu

# GNOME Shell users: Press Alt+F2, type 'r', Enter to restart shell

Docker

# Local build
make docker

# Docker Hub/GHCR
xhost +local:
docker run --rm --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" --volume="/tmp/.X11-unix:/tmp/.X11-unix" -it ghcr.io/dmzoneill/dfakeseeder

Development

Code Quality

  • Code Quality: Black, flake8, and isort formatting standards (max-line-length: 120)
  • Testing: Pytest framework with comprehensive unit and E2E test coverage
  • CI/CD: GitHub Actions with automated E2E testing across 12 OS configurations
  • Performance: Automatic timing and structured logging throughout
  • Dependency Management: Pipfile/Pipfile.lock (primary), setup.py for PyPI publishing

Testing Infrastructure

End-to-End Testing

Comprehensive E2E test suite with 140+ automated tests across all package formats:

# Run all E2E tests (RPM, PyPI, DEB)
make test-e2e-all

# Run specific package format tests
make test-e2e          # RPM packages (Fedora)
make test-e2e-pypi     # PyPI packages (Fedora + Ubuntu)
make test-e2e-deb      # DEB packages (Ubuntu + Debian)

Coverage:

  • RPM E2E: Fedora latest, 42, 41 (50 tests per version)
  • PyPI E2E: Fedora latest, 42, 41 + Ubuntu 22.04, 24.04 (43 tests per version)
  • DEB E2E: Ubuntu 22.04, 24.04 + Debian 12, 11 (52 tests per version)

Tests Include:

  • Package building and validation
  • Installation and dependency resolution
  • Desktop integration verification
  • Application launch in headless environment
  • Core component initialization
  • Configuration file creation
  • Wrapper script functionality
  • Uninstallation cleanup

GitHub Actions: All E2E tests run automatically on every push and PR with results visible in status checks.

Build Tools

# Setup development environment
make setup-venv          # Create pipenv environment
make required            # Install dependencies

# Code quality
make lint                # Run black, flake8, isort
make test-venv           # Run tests with pipenv

# UI development
make ui-build            # Compile UI from XML components
make icons               # Install application icons

# Package building
make deb                 # Build Debian package (full desktop integration)
make rpm                 # Build RPM package (full desktop integration)
make flatpak             # Build Flatpak package
make docker              # Build Docker image

# PyPI publishing
make pypi-build          # Build source distribution and wheel
make pypi-check          # Validate package quality
make pypi-test-upload    # Upload to TestPyPI
make pypi-upload         # Upload to production PyPI

# E2E Testing
make test-e2e-all        # Run all E2E tests (RPM + PyPI + DEB)
make test-e2e            # RPM E2E tests
make test-e2e-pypi       # PyPI E2E tests
make test-e2e-deb        # DEB E2E tests
make clean-e2e-deb       # Clean DEB test artifacts
make clean-e2e-pypi      # Clean PyPI test artifacts

Package Format Feature Parity

All three package formats (RPM, DEB, PyPI) provide the same installation experience:

Feature RPM DEB PyPI
Command-line launcher ✅ dfs / dfakeseeder ✅ dfs / dfakeseeder ✅ dfs / dfakeseeder
Desktop integration ✅ Automatic ✅ Automatic ✅ via dfs-setup
All dependencies ✅ Automatic ✅ Automatic ✅ Manual GTK4/LibAdwaita
System tray ✅ Included ✅ Included ✅ Included
Wrapper script ✅ /usr/bin/dfakeseeder ✅ /usr/bin/dfakeseeder ✅ Direct Python
Auto-updates ✅ via dnf/yum ✅ via apt ✅ via pip
E2E tested ✅ 3 Fedora versions ✅ 4 Ubuntu/Debian versions ✅ 5 OS versions

Architecture

  • MVC Pattern: Clean separation with Model, View, Controller
  • Component System: Modular UI components with GTK4
  • Signal-Based: GObject signals for loose coupling
  • D-Bus IPC: Main app and tray communicate via D-Bus for seamless integration
  • Internationalization: Runtime language switching with 21 languages
  • Performance: Automatic timing and structured logging with class context

Contributing

  • All pull requests welcome
  • Follow existing code style (black, flake8, isort)
  • Include tests for new functionality
  • Update documentation as needed

Configuration

File Locations

  • User Config: ~/.config/dfakeseeder/settings.json (auto-created from defaults)
  • Torrent Directory: ~/.config/dfakeseeder/torrents/
  • Default Config: d_fake_seeder/config/default.json (comprehensive defaults)

Settings Categories

  • Application: Auto-start, themes, language preferences
  • Connection: Network ports, proxy settings, connection limits
  • Peer Protocol: Timeout settings, keep-alive intervals
  • BitTorrent: DHT, PEX, announce intervals, user agents
  • Advanced: Logging, performance tuning, debug options

Desktop Integration

After PyPI installation, run desktop integration:

# Install desktop files, icons, and tray autostart
dfs-install-desktop

# This installs
# - Application icons (multiple sizes) to ~/.local/share/icons/
# - Desktop launcher to ~/.local/share/applications/
# - Updates icon and desktop caches
# - Clears GNOME Shell cache for immediate recognition

# GNOME Shell users: Restart GNOME Shell
# Press Alt+F2, type 'r', and press Enter

# Launch via desktop environment
gtk-launch dfakeseeder
# Or search "D' Fake Seeder" in application menu

# Uninstall desktop integration
dfs-uninstall-desktop

Supported Languages (21)

English, Spanish, French, German, Italian, Portuguese, Russian, Chinese, Japanese, Korean, Arabic, Hindi, Dutch, Swedish, Polish, Bengali, Persian, Irish, Indonesian, Turkish, Vietnamese

Runtime language switching without application restart.

Example Configuration

The application auto-creates ~/.config/dfakeseeder/settings.json with comprehensive defaults including:

  • Speed limits and announce intervals
  • Peer connection settings
  • UI customization options
  • Client identification strings
  • Protocol timeouts and networking
  • Internationalization preferences

Documentation

License

MIT License - See LICENSE file for details

Metadata

Release files for d-fake-seeder 1.1.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for d-fake-seeder 1.1.18
File Size Uploaded Provenance
d_fake_seeder-1.1.18.tar.gz 1.3 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for d-fake-seeder 1.1.18
File Interpreter ABI Platform
d_fake_seeder-1.1.18-py3-none-any.whl Python 3 none any Details

Total release size: 2.8 MB

Release files / d_fake_seeder-1.1.18.tar.gz

Download URL d_fake_seeder-1.1.18.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
9de44941f72030e1932316b91371293e66f66e5f544c53c18462bb7d62d06a63
BLAKE2b-256 checksum
How to use checksums
d579e74a0dd7a5af47a82f4a90c23f13e70894117e6a77c0fd47df6802f6a5fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / d_fake_seeder-1.1.18-py3-none-any.whl

Download URL d_fake_seeder-1.1.18-py3-none-any.whl
Size 1.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
597c59b62a09dc353cefc4476938182fe3ec6d3d3890407a3c514935b884b4b0
BLAKE2b-256 checksum
How to use checksums
baf5eff03745101a54b3d72dced9b43078cd7f23f06712a83a3a93a82e3c0aa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for d-fake-seeder 1.1.18

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.1.18 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page