Skip to content

haKC-ai/hakcer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

                 ██████████
                █▓       ░██
                █▒        ██
    █████████████░        █████████████████ ████████████ ████████████      ████████████
   ██         ███░        ███▓▒▒▒▒▒▒▒▒▒▒▒██ █▒▒▒▒▒▒▒▒▓████        █████████▓          ▒█
   ██         ███         ███▒▒▒▒▒▒▒▒▒▒▒▒▓██████████████▓        ███▓▒      ▒▓░       ▒█
   ██         ███        ░██▓▒▒▒▒▒▒▒▒▒▒▒▒▒▓██▓▒▒▒▒▒▒▒▒█▓        ███░       ░██░       ▒█
   ██         ███        ▒██▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▓▒▒▒▒▒▒▒▓▒        ██  ▓        ██░       ▓█
   ██         ██▓        ███▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▓▒▒▒▒▒▒▒▓▒       ██   █        ██░       ▓
   ██         ██▒        ██▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▓▒      ██    █        ▓█████████
   ██                    ██▒▒▒▒▒▒▒▒█▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▒   ▒███████ █░       ░▓        █
   ██         ░░         ██▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓█ ▓        ░█ ▓       ░▒       ░█
   ██         ██░       ░█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓█ █░        ▒ █                ░█
   ██         ██        ▓█▒▒▒▒▒▒▒▒▒██▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓█ █░        ▒ █░               ▒█
    ██████████  ███████████▓██▓▓█▓█  █▓▒▒▒▒▒▒▒▒▒▓██▓██   █▓▓▓▓▓▓▓█    █▓▓▓▓▓▓▓▓▓▓▓▓▓▓██
  .:/====================█▓██▓██=========████▓█▓█ ███======> [ P R E S E N T S ] ====\:.
        /\                 ██▓██           █▓▓▓██ ██
 _ __  /  \__________________█▓█_____________██▓██______________________________ _  _    _
_ __ \/ /\____________________██_____________ ███________ _________ __ _______ _
    \  /         T H E   P I N A C L E    O F   H A K C I N G   Q U A L I T Y
     \/
            Name :                            haKC.ai - haKCer module for 1337 banners
            Release date:                     Nov 2024 (but the vibe is from 1994)

      GROUP NEWS: haKC.ai is Still Looking For haKC Coders & ASCII Art Wizards,
                  Drop corykennedy A Message on Any Fine BBS in the USA
                        Or On The Internet at cory@haKC.ai.

       _ __ ___________________________________________________________  /\ ___ ___  _ _
       __ __ __ ______________________________________________________ \/ /\__________ ___
         |  Notes from the author:                                    \  /              |
         |                                                             \/               |
         |  This library brings back the golden age of terminal art. Drop it            |
         |  into any Python CLI tool and watch boring print() statements                |
         |  transform into animated synthwave glory. 29 effects, 9 themes,              |
         |  zero config. While the script kiddies use Comic Sans, we keep               |
         |  ASCII art alive. Your tools deserve better than plain text.                 |
         |                                       Greetz to the real ones. -cory         |
         |*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*-,._.,-*~'`^`'~*~'`^ |

        ┌──────────────────────── [ R E L E A S E   I N F O ] ──────────────────────────┐
        │                                                                               │
        │  NAME.........................................haKCer Terminal Banner Library  │
        │  TYPE..................................................Python CLI Enhancement │
        │  VERSION........................................................v1.1.3-FINAL  │
        │  PLATFORM............................................Python 3.8+ / Cross-OS   │
        │  RELEASE DATE.................................................November 2024   │
        │  RIPPED BY.............................................haKC.ai / /dev/CØR.23  │
        │  CATEGORY..................................................Developer Tooling  │
        │  EFFECTS PACK...........................................................29x   │
        │  THEME COLLECTION........................................................9x   │
        │  SIZE...................................................Lightweight (~50KB)   │
        │                                                                               │
        │  [*] ZERO-CONFIG animated ASCII banners for Python CLI tools                  │
        │  [*] Drop-in replacement for boring print() statements                        │
        │  [*] 29 terminal effects from subtle fades to FULL SYNTHGRID                  │
        │  [*] 9 color themes: Tokyo Night, Cyberpunk, Matrix, Synthwave++              │
        │  [*] Custom ASCII art support - BYOB (Bring Your Own Banner)                  │
        │  [*] Production-ready with smart terminal detection                           │
        │  [*] No dependencies on legacy ncurses or termcap crap                        │
        │                                                                               │
        └───────────────────────────────────────────────────────────────────────────────┘
         ════════════════════════════════════════════════════════════════════════════════
         [*] If you're still using print() for your CLI banners, this file is for you
         [*] If your terminal looks like notepad.exe, bounce now
         [*] Real hackers use Nano and animated ASCII art, not Comic Sans
         ════════════════════════════════════════════════════════════════════════════════

[::: COMPANION REPO :::]

Companion Assets

haKCAssets - The art locker. Pre-built ASCII banners, generators, and 101+ MOTD messages in proper BBS/warez style. Grab any banner from banners/ and feed it to hakcer's custom_file param - instant animated glory without crafting your own art.

  • Ready-to-drop ASCII banners with template vars ({motd}, {greets}, {signatures})
  • Banner/menu/hackerart generators for when you need fresh stuff
  • haKC Studio orchestrator - menu-driven asset creation with hakcer effects baked in

[::: WHAT THE HELL IS THIS :::]

Demo Category Effect Count Theme Count Custom Art

Back in the 90s, we used to spend HOURS crafting sick ASCII art for our tool releases. BBS splash screens, NFO files, cracktro animations. That art is DEAD because every script kiddie today just slaps print("My Tool v1.0") and calls it a day.

haKCer brings that culture back. Drop this library into ANY Python CLI tool and instantly get animated ASCII banners with 29 different terminal effects and 9 color themes.

Think of it like this: Your boring CLI tool is a Honda Civic. haKCer is the body kit, underglow LEDs, and sound system that makes people actually WANT to use your shit.

Demo Time (Because Seeing Is Believing)

haKCer Demo

WATCH IT RUN - Animated ASCII banners with 29 terminal effects and 9 color themes

┌─────────────────────────────────────────────────────────────────────────────┐
│ WHAT YOU GET:                                                               │
│                                                                             │
│  [✓] 29 terminal effects (decrypt, matrix, synthgrid, fireworks++)         │
│  [✓] 9 color themes (synthwave, cyberpunk, tokyo_night, matrix++)          │
│  [✓] Zero config - works out of the box with sane defaults                 │
│  [✓] Custom ASCII art support - use your own designs                       │
│  [✓] Smart terminal detection - no banners in pipes/redirects              │
│  [✓] Production ready - fast effects for CI/CD, slow for demos             │
│  [✓] Framework agnostic - works with Click, Typer, argparse, whatever      │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

[::: SYSTEM ARCHITECTURE :::]

Architecture Dependencies

Component Flow Diagram

graph TB
    A[Your CLI Tool] -->|imports| B[haKCer Library]
    B --> C{Terminal Detection}
    C -->|TTY| D[Banner Engine]
    C -->|Non-TTY| E[Skip Banner]
    D --> F[Theme Manager]
    D --> G[Effect Selector]
    F --> H[Color Palette]
    G --> I[terminaltexteffects]
    H --> I
    I --> J[Animated Output]
    J --> K[Terminal Display]
    
    style A fill:#00D9FF,stroke:#fff,color:#000
    style B fill:#FF10F0,stroke:#fff,color:#000
    style D fill:#7928CA,stroke:#fff,color:#fff
    style J fill:#00F0FF,stroke:#fff,color:#000
    style K fill:#FF0080,stroke:#fff,color:#fff
Loading

Data Flow (How The Magic Happens)

sequenceDiagram
    participant User as CLI Tool
    participant haKCer as haKCer Library
    participant Theme as Theme Manager
    participant Effect as Effect Engine
    participant TTE as terminaltexteffects
    participant Terminal as Terminal Output
    
    User->>haKCer: show_banner(theme="neon")
    haKCer->>haKCer: Check if TTY
    haKCer->>Theme: Load theme colors
    Theme-->>haKCer: Return palette
    haKCer->>Effect: Get effect config
    Effect-->>haKCer: Return effect settings
    haKCer->>TTE: Apply effect + colors
    TTE->>Terminal: Render animation
    Terminal-->>User: Display banner
    haKCer-->>User: Return control
Loading

Package Structure (Not A Monolithic Mess)

graph LR
    A[hakcer/] --> B[__init__.py]
    A --> C[banner.py]
    A --> D[themes/]
    A --> E[effects/]
    A --> F[config/]
    
    D --> G[synthwave.py]
    D --> H[cyberpunk.py]
    D --> I[tokyo_night.py]
    
    E --> J[fast_effects.py]
    E --> K[medium_effects.py]
    E --> L[slow_effects.py]
    
    F --> M[settings.py]
    F --> N[defaults.py]
    
    style A fill:#00D9FF,stroke:#fff,color:#000
    style D fill:#FF10F0,stroke:#fff,color:#000
    style E fill:#7928CA,stroke:#fff,color:#fff
    style F fill:#00F0FF,stroke:#fff,color:#000
Loading
════════════════════════════════════════════════════════════════════════════════
  ARCHITECTURAL NOTES FROM THE TRENCHES:
  
  [*] No god objects or 5000-line files here
  [*] Each effect is self-contained and swappable
  [*] Themes are JSON configs, not hardcoded garbage
  [*] terminaltexteffects does the heavy lifting (don't reinvent the wheel)
  [*] Rich library handles the color output (because ANSI codes are for masochists)
════════════════════════════════════════════════════════════════════════════════

[::: INSTALLATION / SETUP :::]

Installation Setup Time Skill Required

The Easy Way (For Normal People)

pip install hakcer

The Proper Way (For People Who Know What They're Doing)

# Create a venv like you're supposed to
python3 -m venv myproject_venv
source myproject_venv/bin/activate  # Windows: myproject_venv\Scripts\activate

# Upgrade pip (because distros ship ancient versions)
pip install --upgrade pip

# Install haKCer
pip install hakcer

# Verify it worked
python -c "from hakcer import show_banner; show_banner()"

From Source (For Paranoid Hackers Who Don't Trust PyPI)

git clone https://github.com/haKC-ai/hakcer.git
cd hakcer
pip install -e .

Requirements

Python Required terminaltexteffects rich

Python 3.8 or higher (if you're still on 2.7, we can't help you)
terminaltexteffects >= 0.11.0 (the animation engine)
rich >= 13.0.0 (because life's too short for manual ANSI codes)
════════════════════════════════════════════════════════════════════════════════
  INSTALLATION NOTES:
  
  [*] Works on Linux, macOS, Windows (even Windows Terminal, surprisingly)
  [*] No compilation required - pure Python
  [*] Installs in under 10 seconds on a potato connection
  [*] Zero system dependencies (no ncurses, no termcap, none of that)
════════════════════════════════════════════════════════════════════════════════

[::: QUICK START / USAGE :::]

Difficulty Lines Of Code

Basic Usage (The Absolute Minimum)

from hakcer import show_banner

# That's it. This works.
show_banner()

# Your actual CLI tool code goes here
print("Welcome to my tool...")

Output: Random fast effect with neon theme. Good enough for 99% of use cases.

With Theme Selection (Looking Fly)

Themes Available

from hakcer import show_banner, set_theme

# Tokyo Night aesthetic (for the refined hacker)
set_theme("tokyo_night")
show_banner()

# Cyberpunk 2077 vibes (yellow/pink high contrast)
set_theme("cyberpunk")
show_banner()

# Full synthwave mode (cyan/magenta/purple retro)
set_theme("synthwave")
show_banner(effect_name="synthgrid")

# Classic green Matrix (because we're old school)
set_theme("matrix")
show_banner(effect_name="matrix")

Custom ASCII Art (BYOB - Bring Your Own Banner)

Custom Art

from hakcer import show_banner

# Load from file (recommended for complex art)
show_banner(
    custom_file="assets/my_logo.txt",
    theme="cyberpunk",
    effect_name="decrypt"
)

# Inline ASCII art (for quick stuff)
my_banner = """
╔═══════════════════════════════╗
║  MY SICK CLI TOOL v2.0        ║
║  Coded by: l33th4x0r          ║
╚═══════════════════════════════╝
"""
show_banner(custom_text=my_banner, theme="neon")

Pro Tip: Generate ASCII art at http://patorjk.com/software/taag/ (ANSI Shadow font is sick)

════════════════════════════════════════════════════════════════════════════════
  QUICK START NOTES:
  
  [*] If you don't specify a theme, you get "neon" (good default)
  [*] If you don't specify an effect, you get a random fast one
  [*] Fast effects run under 2 seconds (production ready)
  [*] Slow effects run 4+ seconds (demo mode, conferences, showing off)
════════════════════════════════════════════════════════════════════════════════

[::: THEMES REFERENCE :::]

Theme Count Theme System

Theme Gallery

Theme Showcase

ALL 9 THEMES - See how each color palette transforms your ASCII art

Available Themes (Pick Your Poison)

Theme Description Primary Colors Vibe Badge
synthwave Classic 80s retro Cyan, Magenta, Purple Retro synth Synthwave
neon Bright electric [DEFAULT] All neon spectrum Maximum brightness Neon
tokyo_night Dark blue Tokyo aesthetic Deep blues, soft accents Modern clean Tokyo Night
tokyo_storm Deeper Tokyo variant Darker blues Stormy nights Tokyo Storm
cyberpunk CP2077 yellow/pink Hot pink, electric yellow High contrast Cyberpunk
matrix Classic green terminals Matrix green OG hacker Matrix
dracula Popular Dracula palette Purple, pink, cyan Dark vampire Dracula
nord Arctic bluish tones Cool blues, whites Professional Nord
gruvbox Retro warm colors Warm browns, oranges Cozy terminal Gruvbox

Theme Selection Flowchart

graph TD
    A[Need a Theme?] --> B{What's your vibe?}
    B -->|Retro 80s| C[synthwave]
    B -->|Maximum brightness| D[neon]
    B -->|Modern clean| E[tokyo_night]
    B -->|Darker modern| F[tokyo_storm]
    B -->|High contrast| G[cyberpunk]
    B -->|Classic hacker| H[matrix]
    B -->|Dark vampire| I[dracula]
    B -->|Professional| J[nord]
    B -->|Warm cozy| K[gruvbox]
    
    style C fill:#FF10F0
    style D fill:#00F0FF
    style E fill:#7928CA
    style G fill:#FF0080
    style H fill:#00FF00
Loading

Usage

from hakcer import set_theme, show_banner, list_themes

# Set theme globally (affects all subsequent banners)
set_theme("cyberpunk")
show_banner()

# Override theme for a specific banner
show_banner(theme="matrix")

# List all available themes
themes = list_themes()
print(themes)  # ['synthwave', 'neon', 'tokyo_night', ...]
════════════════════════════════════════════════════════════════════════════════
  THEME NOTES:
  
  [*] Themes are JSON configs in themes/ directory
  [*] Easy to add your own (PR welcome if it's not garbage)
  [*] Neon is the default because it looks sick on most terminals
  [*] Matrix theme required by law for any "hacking" tool
════════════════════════════════════════════════════════════════════════════════

[::: EFFECTS REFERENCE :::]

Effect Count Effect Engine

Effects Demo Reel

Effects Demo

29 TERMINAL EFFECTS - From subtle animations to maximum visual impact

Effect Categories By Speed

FAST Effects (<2 seconds) - Production Ready

Fast Effects Production Use

decrypt         - Matrix-style decryption reveal
expand          - Text expands from center
print           - Typewriter effect
slide           - Slides in from edge
wipe            - Screen wipe transition
colorshift      - Colors cycle through palette
scattered       - Characters scatter then assemble
random_sequence - Random character appearance
pour            - Text pours down like liquid
errorcorrect    - Glitchy error correction

Use Case: CI/CD pipelines, production tools, frequent runs, impatient users

MEDIUM Effects (2-4 seconds) - Balanced

Medium Effects Demo Use

beams           - Light beams scan across
binarypath      - Binary code path tracing
burn            - Text burns onto screen
crumble         - Crumbling reveal effect
overflow        - Buffer overflow animation
rain            - Digital rain (mini matrix)
spray           - Spray paint effect
unstable        - Unstable/glitchy appearance
vhstape         - VHS tape tracking errors
waves           - Wave distortion effect

Use Case: Demos, presentations, tool launches, showing off to colleagues

SLOW Effects (4+ seconds) - Maximum Flex

Slow Effects Conference Use

blackhole       - Black hole gravity effect
bouncyballs     - Bouncing ball physics
fireworks       - Fireworks explosion
matrix          - Full Matrix digital rain
orbittingvolley - Orbiting particles
rings           - Expanding rings
spotlights      - Spotlight scanning
swarm           - Particle swarm
synthgrid       - Full synthwave grid animation

Use Case: Conference talks, demos, YouTube videos, impressing management

Effect Selection Matrix

graph TD
    A[Choose Effect Speed] --> B{Use Case?}
    B -->|Production Tool| C[FAST]
    B -->|Demo/Presentation| D[MEDIUM]
    B -->|Conference/Video| E[SLOW]
    
    C --> F[decrypt, print, slide]
    D --> G[beams, burn, vhstape]
    E --> H[synthgrid, matrix, fireworks]
    
    F --> I[<2 sec runtime]
    G --> J[2-4 sec runtime]
    H --> K[4+ sec runtime]
    
    style C fill:#00D9FF
    style D fill:#FF10F0
    style E fill:#7928CA
Loading

Speed Preference System

from hakcer import show_banner

# Let haKCer pick a fast effect (default)
show_banner(speed_preference="fast")

# Let haKCer pick a medium effect
show_banner(speed_preference="medium")

# Let haKCer pick a slow effect
show_banner(speed_preference="slow")

# Let haKCer pick ANY effect (random)
show_banner(speed_preference="any")

# Specify exact effect (override everything)
show_banner(effect_name="synthgrid")

Usage Recommendations

Scenario Speed Setting Why
CI/CD Pipeline fast Don't slow down builds
Production CLI Tool fast Users run it frequently
Demo at Meetup medium Balance of cool + time
Conference Talk slow Make it MEMORABLE
YouTube Video slow Production value matters
Internal Tool medium Colleagues will appreciate it
════════════════════════════════════════════════════════════════════════════════
  EFFECT NOTES:
  
  [*] All effects provided by terminaltexteffects library (credit where due)
  [*] Fast effects are <2s because that's the user patience threshold
  [*] Slow effects are 4+ seconds of pure eye candy
  [*] If you're in a hurry, just use speed_preference="fast"
  [*] If you're showing off, use effect_name="synthgrid" (trust us)
════════════════════════════════════════════════════════════════════════════════

[::: INTEGRATION PATTERNS :::]

Integration Frameworks

Pattern 1: Basic CLI Tool

#!/usr/bin/env python3
"""
basic_tool.py - Example CLI tool with haKCer banner
"""
import sys
from hakcer import show_banner, set_theme

def main():
    # Only show banner if running in a terminal (not piped)
    if sys.stdout.isatty():
        set_theme("neon")
        show_banner(speed_preference="fast", hold_time=0.5)
    
    # Your actual tool logic here
    print("Running my tool...")
    print("Processing complete!")

if __name__ == "__main__":
    main()

Why This Pattern:

  • Respects pipes and redirects (no banners in logs)
  • Fast by default (production friendly)
  • Clean separation of concerns

Pattern 2: Click Framework Integration

Click

import click
from hakcer import show_banner, set_theme

@click.group()
@click.option('--no-banner', is_flag=True, help='Disable ASCII banner')
@click.option('--theme', default='neon', help='Banner theme')
@click.pass_context
def cli(ctx, no_banner, theme):
    """My Awesome CLI Tool"""
    ctx.ensure_object(dict)
    ctx.obj['no_banner'] = no_banner
    
    if not no_banner:
        set_theme(theme)
        show_banner(speed_preference="fast")

@cli.command()
@click.pass_context
def process(ctx):
    """Process some data"""
    click.echo("Processing...")

if __name__ == '__main__':
    cli()

Why This Pattern:

  • Users can disable banners with --no-banner
  • Theme selection via CLI flag
  • Plays nice with Click's context system

Pattern 3: Environment Variable Control

#!/usr/bin/env python3
import sys
import os
from hakcer import show_banner, set_theme

# Read config from environment
SHOW_BANNER = os.getenv("SHOW_BANNER", "true").lower() == "true"
BANNER_THEME = os.getenv("BANNER_THEME", "neon")
BANNER_SPEED = os.getenv("BANNER_SPEED", "fast")

def main():
    if SHOW_BANNER and sys.stdout.isatty():
        set_theme(BANNER_THEME)
        show_banner(speed_preference=BANNER_SPEED)
    
    print("Tool running...")

if __name__ == "__main__":
    main()

Usage:

# Normal run with banner
./tool.py

# Disable banner
SHOW_BANNER=false ./tool.py

# Custom theme
BANNER_THEME=cyberpunk ./tool.py

# Slow banner for demo
BANNER_SPEED=slow BANNER_THEME=synthwave ./tool.py

Why This Pattern:

  • Docker-friendly (env vars are standard)
  • CI/CD friendly (can disable in pipelines)
  • Power users can customize without code changes

Pattern 4: Typer Framework Integration

Typer

import typer
from typing import Optional
from hakcer import show_banner, set_theme

app = typer.Typer()

def version_callback(value: bool):
    if value:
        typer.echo("My Tool v1.0.0")
        raise typer.Exit()

@app.callback()
def main(
    no_banner: bool = typer.Option(False, "--no-banner", help="Skip banner"),
    theme: str = typer.Option("neon", "--theme", help="Banner theme"),
    version: Optional[bool] = typer.Option(None, "--version", callback=version_callback)
):
    """My Tool - Does cool stuff"""
    if not no_banner:
        set_theme(theme)
        show_banner(speed_preference="fast")

@app.command()
def process():
    """Process data"""
    typer.echo("Processing...")

if __name__ == "__main__":
    app()

Pattern 5: Smart Detection (Recommended)

#!/usr/bin/env python3
"""
smart_tool.py - Intelligent banner detection
"""
import sys
import os
from hakcer import show_banner, set_theme

def should_show_banner():
    """Determine if we should show a banner"""
    # Don't show if output is redirected
    if not sys.stdout.isatty():
        return False
    
    # Don't show in CI/CD environments
    ci_vars = ['CI', 'CONTINUOUS_INTEGRATION', 'GITHUB_ACTIONS', 'GITLAB_CI']
    if any(os.getenv(var) for var in ci_vars):
        return False
    
    # Check explicit override
    if os.getenv('SHOW_BANNER', '').lower() == 'false':
        return False
    
    return True

def main():
    if should_show_banner():
        theme = os.getenv('BANNER_THEME', 'neon')
        set_theme(theme)
        show_banner(speed_preference='fast', hold_time=0.5)
    
    print("Tool running...")

if __name__ == "__main__":
    main()

Why This Pattern:

  • Automatically disables in CI/CD
  • Respects pipes and redirects
  • Still allows manual override
  • Production ready out of the box

Integration Decision Tree

graph TD
    A[Choose Integration] --> B{Framework?}
    B -->|None/argparse| C[Pattern 1: Basic]
    B -->|Click| D[Pattern 2: Click]
    B -->|Typer| E[Pattern 4: Typer]
    B -->|Other| C
    
    C --> F{Need env control?}
    D --> F
    E --> F
    
    F -->|Yes| G[Add Pattern 3: Env Vars]
    F -->|No| H[Done]
    
    G --> I{Production tool?}
    H --> I
    
    I -->|Yes| J[Use Pattern 5: Smart Detection]
    I -->|No| K[Done]
    
    style C fill:#00D9FF
    style D fill:#FF10F0
    style E fill:#7928CA
    style J fill:#00F0FF
Loading
════════════════════════════════════════════════════════════════════════════════
  INTEGRATION NOTES:
  
  [*] Always check sys.stdout.isatty() - don't spam logs with ANSI codes
  [*] Provide a --no-banner flag (someone will need it)
  [*] Default to fast effects (production users will thank you)
  [*] Use environment variables for Docker/CI/CD friendliness
  [*] If your tool gets piped to other commands, banners will auto-disable
════════════════════════════════════════════════════════════════════════════════

[::: CUSTOM ASCII ART :::]

Custom Art Art Generators

Custom Art Demo

Custom Art

BRING YOUR OWN DESIGNS - Any ASCII art works with all effects and themes

ASCII Art Generation Tools

Tool URL Best For Badge
TAAG http://patorjk.com/software/taag/ Text to ASCII TAAG
ASCII Generator https://ascii-generator.site/ Images to ASCII Generator
ASCII Art Archive https://ascii.co.uk/art/ Pre-made art Archive
Text-Image.com https://www.text-image.com/convert/ Photos to ASCII Photos

Recommended Fonts (From TAAG)

Top Picks for Terminal Banners:
- ANSI Shadow (clean, professional, works everywhere)
- Bloody (horror/metal aesthetic)
- Doom (classic, recognizable from the game)
- Graffiti (street art style)
- ANSI Regular (safe default)
- Block (bold and readable)
- Banner3 (old school BBS vibes)
- 3D-ASCII (depth perception)

Usage Examples

From External File (Recommended)

from hakcer import show_banner, set_theme

# Load custom ASCII art from file
set_theme("cyberpunk")
show_banner(
    custom_file="assets/my_logo.txt",
    effect_name="decrypt",
    hold_time=1.0
)

my_logo.txt:

 ███╗   ███╗██╗   ██╗    ████████╗ ██████╗  ██████╗ ██╗     
 ████╗ ████║╚██╗ ██╔╝    ╚══██╔══╝██╔═══██╗██╔═══██╗██║     
 ██╔████╔██║ ╚████╔╝        ██║   ██║   ██║██║   ██║██║     
 ██║╚██╔╝██║  ╚██╔╝         ██║   ██║   ██║██║   ██║██║     
 ██║ ╚═╝ ██║   ██║          ██║   ╚██████╔╝╚██████╔╝███████╗
 ╚═╝     ╚═╝   ╚═╝          ╚═╝    ╚═════╝  ╚═════╝ ╚══════╝
                                                             
         H A C K I N G   T H E   P L A N E T   v2.0         

Inline ASCII Art (Quick and Dirty)

from hakcer import show_banner

banner = """
╔═══════════════════════════════════════╗
║  ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄      ║
║ █       █       █       █       █     ║
║ █▄     ▄█    ▄  █   ▄   █   ▄   █    ║
║   █   █ █   █▄█ █  █ █  █  █ █  █    ║
║   █   █ █    ▄▄▄█  █▄█  █  █▄█  █    ║
║   █   █ █   █   █       █       █    ║
║   █▄▄▄█ █▄▄▄█   █▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█    ║
║                                       ║
║    The Absolute Penetration Tool     ║
║         v3.0 - UNDETECTABLE          ║
╚═══════════════════════════════════════╝
"""

show_banner(custom_text=banner, theme="matrix", effect_name="decrypt")

Custom Art Workflow

graph LR
    A[Choose Generator] --> B[Generate ASCII]
    B --> C[Save to File]
    C --> D[Test with haKCer]
    D --> E{Looks good?}
    E -->|No| F[Adjust Font/Size]
    F --> B
    E -->|Yes| G[Ship It]
    
    style A fill:#00D9FF
    style D fill:#FF10F0
    style G fill:#00FF00
Loading

Pro Tips For Custom Art

Width Guidelines

Recommended widths for different terminals:
- 60-70 chars: Safe for most terminals
- 80 chars: Classic terminal width
- 100 chars: Modern wide terminals
- 120+ chars: Ultra-wide monitors only

Testing Your Art

# Test custom art with multiple themes
from hakcer import show_banner, list_themes

banner_file = "assets/my_logo.txt"

for theme in list_themes():
    print(f"\n=== Testing theme: {theme} ===")
    show_banner(
        custom_file=banner_file,
        theme=theme,
        speed_preference="fast"
    )

Common Issues and Fixes

Issue Cause Fix
Art gets cut off Too wide for terminal Reduce width to <80 chars
Weird spacing Tab characters Replace tabs with spaces
Missing characters Encoding issues Save as UTF-8
Looks garbled Font doesn't support chars Use ASCII-only characters
════════════════════════════════════════════════════════════════════════════════
  CUSTOM ART NOTES:
  
  [*] Keep your art under 80 chars wide (some terminals still use this)
  [*] Use UTF-8 encoding for files (not ASCII or Latin-1)
  [*] Test with multiple themes - some chars look better in certain palettes
  [*] Box-drawing characters (─ │ ╔ ╗ ╚ ╝) work great
  [*] Avoid colors in your art file - let haKCer handle the colors
════════════════════════════════════════════════════════════════════════════════

[::: SHOWCASE / DEMO MODE :::]

Showcase Combinations

Run The Interactive Demo

python showcase.py

Showcase Menu

╔════════════════════════════════════════════════════════════════╗
║                  haKCer Interactive Showcase                   ║
╚════════════════════════════════════════════════════════════════╝

[1] Showcase All Effects      - Record-ready demo (261 combos!)
[2] Theme Gallery              - Browse all 9 themes
[3] Quick Demo                 - Single random fast effect
[4] Custom Effect              - Pick theme + effect manually
[5] Effect Browser             - Interactive effect selector
[6] Speed Test                 - Compare fast/medium/slow
[7] Info Dump                  - List all available options
[8] Synthwave Mode             - Ultimate synthwave experience
[9] Exit                       - Quit showcase

Select option [1-9]:

Showcase Features

Features

Mode Description Stats Best For
Mode 1: All Effects Shows ALL 29 effects with ALL 9 themes
261 total combinations
Combos Duration Use Case
Mode 2: Theme Gallery Quick tour of all 9 themes
Same effect, different colors
Shows palette capabilities
Themes Duration Use Case
Mode 3: Quick Demo Single random fast effect
Good for testing
Default when you just want to see SOMETHING
Speed Duration Use Case
Mode 4: Custom Effect Pick theme manually
Pick effect manually
Good for testing specific combos
Interactive Manual Use Case
Mode 5: Effect Browser Lists all effects with descriptions
Interactive selection
Shows speed category
Effects Interactive Use Case
Mode 6: Speed Test Shows fast, medium, and slow examples
Side-by-side comparison
Good for picking defaults
Categories Duration Use Case
Mode 7: Info Dump Lists all themes
Lists all effects
Shows categorization
Copy-paste friendly output
Output Format Use Case
Mode 8: Synthwave Mode THE ULTIMATE EXPERIENCE
Synthwave theme with synthgrid effect
Maximum visual impact
Epic Boss Use Case

Recording Demo Videos

# Install asciinema
pip install asciinema

# Record the full showcase
asciinema rec hakcer_demo.cast --command "python showcase.py"

# Convert to GIF
pip install agg
agg hakcer_demo.cast hakcer_demo.gif

# Or upload to asciinema
asciinema upload hakcer_demo.cast
════════════════════════════════════════════════════════════════════════════════
  SHOWCASE NOTES:
  
  [*] Showcase.py is included in the repo (not installed via pip)
  [*] Perfect for testing before integrating into your tool
  [*] Use Mode 1 to record promotional videos
  [*] Use Mode 3 for quick "does it work" tests
  [*] Use Mode 8 to blow people's minds
════════════════════════════════════════════════════════════════════════════════

[::: API REFERENCE :::]

API Functions

show_banner()

Function

Display an animated ASCII banner with the specified theme and effect.

Signature:

def show_banner(
    effect_name: str = None,
    speed_preference: str = "fast",
    hold_time: float = 1.5,
    clear_after: bool = False,
    theme: str = None,
    custom_text: str = None,
    custom_file: str = None
) -> None

Parameters:

Parameter Type Default Description
effect_name str None Specific effect to use (e.g., "decrypt", "matrix")
speed_preference str "fast" Speed category: "fast", "medium", "slow", or "any"
hold_time float 1.5 Seconds to hold the final frame
clear_after bool False Clear terminal after displaying banner
theme str None Override global theme for this banner only
custom_text str None Custom ASCII art as string
custom_file str None Path to file containing custom ASCII art

Returns: None

Raises:

  • ValueError: If effect_name is invalid
  • FileNotFoundError: If custom_file doesn't exist

Examples:

# Basic usage (random fast effect, current theme)
show_banner()

# Specific effect
show_banner(effect_name="synthgrid")

# Speed preference
show_banner(speed_preference="slow")

# Custom theme for this banner only
show_banner(theme="cyberpunk", effect_name="decrypt")

# Custom ASCII art from file
show_banner(custom_file="logo.txt", theme="neon")

# Custom ASCII art inline
banner = "My Tool v1.0"
show_banner(custom_text=banner, effect_name="print")

# Hold for longer
show_banner(hold_time=3.0)

# Clear terminal after
show_banner(clear_after=True)

set_theme()

Function

Set the global theme for all subsequent banner calls.

Signature:

def set_theme(theme_name: str) -> None

Parameters:

Parameter Type Description
theme_name str Name of the theme to set

Returns: None

Raises:

  • ValueError: If theme_name is not a valid theme

Available Themes:

[
    "synthwave",      # Cyan/Magenta/Purple retro
    "neon",           # Full neon spectrum (default)
    "tokyo_night",    # Dark blue Tokyo aesthetic
    "tokyo_storm",    # Darker Tokyo variant
    "cyberpunk",      # Yellow/Pink CP2077
    "matrix",         # Classic green terminals
    "dracula",        # Popular Dracula palette
    "nord",           # Arctic bluish tones
    "gruvbox"         # Retro warm colors
]

Examples:

# Set theme globally
set_theme("cyberpunk")
show_banner()  # Uses cyberpunk theme
show_banner()  # Still uses cyberpunk theme

# Change theme
set_theme("matrix")
show_banner()  # Now uses matrix theme

list_themes()

Function

Get a list of all available theme names.

Signature:

def list_themes() -> list[str]

Returns: List of theme name strings

Examples:

themes = list_themes()
print(themes)
# ['synthwave', 'neon', 'tokyo_night', ...]

# Iterate through all themes
for theme in list_themes():
    set_theme(theme)
    print(f"\n=== Theme: {theme} ===")
    show_banner(speed_preference="fast")

list_effects()

Function

Get a list of all available effect names.

Signature:

def list_effects() -> list[str]

Returns: List of effect name strings

Examples:

effects = list_effects()
print(effects)
# ['decrypt', 'expand', 'print', 'slide', ...]

# Test all effects with same theme
set_theme("neon")
for effect in list_effects():
    print(f"\n=== Effect: {effect} ===")
    show_banner(effect_name=effect)

get_effect_info()

Function

Get detailed information about a specific effect.

Signature:

def get_effect_info(effect_name: str) -> dict

Parameters:

Parameter Type Description
effect_name str Name of the effect

Returns: Dictionary with effect metadata

Return Structure:

{
    "name": str,           # Effect name
    "speed": str,          # "fast", "medium", or "slow"
    "duration": float,     # Approximate duration in seconds
    "description": str     # Human-readable description
}

Examples:

info = get_effect_info("synthgrid")
print(f"Effect: {info['name']}")
print(f"Speed: {info['speed']}")
print(f"Duration: {info['duration']}s")
print(f"Description: {info['description']}")

# Output:
# Effect: synthgrid
# Speed: slow
# Duration: 6.5s
# Description: Full synthwave grid animation with perspective

API Usage Patterns

Pattern: Validate Before Use

from hakcer import list_themes, list_effects, set_theme, show_banner

# Get user input
user_theme = input("Enter theme: ")
user_effect = input("Enter effect: ")

# Validate
if user_theme in list_themes():
    set_theme(user_theme)
else:
    print(f"Invalid theme. Available: {', '.join(list_themes())}")
    exit(1)

if user_effect in list_effects():
    show_banner(effect_name=user_effect)
else:
    print(f"Invalid effect. Available: {', '.join(list_effects())}")
    exit(1)

Pattern: Random Selection

import random
from hakcer import list_themes, list_effects, set_theme, show_banner

# Random theme and effect
random_theme = random.choice(list_themes())
random_effect = random.choice(list_effects())

set_theme(random_theme)
show_banner(effect_name=random_effect)

Pattern: Category Filtering

from hakcer import list_effects, get_effect_info, show_banner

# Get only fast effects
fast_effects = [
    effect for effect in list_effects()
    if get_effect_info(effect)["speed"] == "fast"
]

# Use a random fast effect
import random
show_banner(effect_name=random.choice(fast_effects))
════════════════════════════════════════════════════════════════════════════════
  API NOTES:
  
  [*] All functions are in the hakcer namespace (from hakcer import *)
  [*] Type hints provided for all parameters
  [*] Functions validate input and raise ValueError for invalid args
  [*] No async/await - everything is synchronous
  [*] Thread-safe (but why would you multithread ASCII art?)
════════════════════════════════════════════════════════════════════════════════

[::: REQUIREMENTS / DEPENDENCIES :::]

Python Dependencies

Core Requirements

terminaltexteffects rich

Python 3.8 or higher
├── terminaltexteffects >= 0.11.0  (animation engine)
└── rich >= 13.0.0                 (terminal formatting)

Dependency Details

terminaltexteffects

rich

Dependency Graph

graph TD
    A[Your Tool] --> B[hakcer]
    B --> C[terminaltexteffects]
    B --> D[rich]
    C --> E[Python stdlib]
    D --> E
    
    style B fill:#00D9FF
    style C fill:#FF10F0
    style D fill:#7928CA
Loading

Version Compatibility Matrix

Python Version haKCer terminaltexteffects rich Status
3.8 Supported
3.9 Supported
3.10 Supported
3.11 Supported
3.12 Supported
3.13+ Supported

Platform Support

Linux macOS Windows

Platform Terminal Status Notes
Linux All Works Native support
macOS Terminal.app Works Works great
macOS iTerm2 Works Recommended
Windows Windows Terminal Works Best option
Windows PowerShell Works Decent
Windows CMD.exe Meh Limited colors

System Requirements

CPU: Anything from the last 15 years
RAM: 50MB (seriously, it's tiny)
Disk: <5MB installed size
Terminal: Any terminal that supports ANSI codes
Network: Not required (no telemetry, no phone home)

Optional Dependencies (Not Required)

# For development/testing
pytest >= 7.0.0           # Running tests
pytest-cov >= 4.0.0       # Code coverage
ruff >= 0.1.0             # Linting/formatting
mypy >= 1.0.0             # Type checking

# For recording demos
asciinema >= 2.0.0        # Terminal recording
agg >= 1.0.0              # Converting to GIF

Installation Verification

#!/usr/bin/env python3
"""verify_install.py - Check if haKCer is working"""

try:
    from hakcer import show_banner, list_themes, list_effects
    print("[✓] haKCer imported successfully")
except ImportError as e:
    print(f"[✗] Failed to import haKCer: {e}")
    exit(1)

try:
    themes = list_themes()
    print(f"[✓] Found {len(themes)} themes")
except Exception as e:
    print(f"[✗] Failed to list themes: {e}")
    exit(1)

try:
    effects = list_effects()
    print(f"[✓] Found {len(effects)} effects")
except Exception as e:
    print(f"[✗] Failed to list effects: {e}")
    exit(1)

try:
    print("\n[✓] Testing banner display:")
    show_banner(speed_preference="fast")
    print("\n[✓] All systems operational!")
except Exception as e:
    print(f"[✗] Failed to show banner: {e}")
    exit(1)
════════════════════════════════════════════════════════════════════════════════
  REQUIREMENTS NOTES:
  
  [*] Only 2 dependencies - we don't pull in half of PyPI
  [*] All dependencies are MIT licensed (compatible with everything)
  [*] No native extensions - pure Python, no compilation
  [*] No network dependencies - works completely offline
  [*] No system libraries required (ncurses, termcap, etc)
════════════════════════════════════════════════════════════════════════════════

[::: TROUBLESHOOTING / FAQ :::]

Support Issues

Common Issues

Issue: Banner shows up in logs/pipes

Issue

Symptom: ANSI codes appear in log files or when piping output

Solution:

import sys
from hakcer import show_banner

# Only show banner if output is a terminal
if sys.stdout.isatty():
    show_banner()

Why This Happens: By default, haKCer doesn't check if stdout is redirected.


Issue: Colors look wrong/garbled

Issue

Symptom: Colors appear as weird characters or don't work at all

Solutions:

  1. Check terminal support:
# Linux/Mac
echo $TERM

# Should be xterm-256color or similar
export TERM=xterm-256color
  1. Windows users:
# Use Windows Terminal, not CMD.exe
# Or enable ANSI support:
reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1
  1. SSH sessions:
# Add to ~/.bashrc or ~/.zshrc
export TERM=xterm-256color

Why This Happens: Old terminals don't support full color.


Issue: Banner is cut off

Issue

Symptom: ASCII art gets cut off on the right side

Solutions:

  1. Resize terminal:
# Check current size
tput cols  # Should be 80+
  1. Use narrower art:
# Keep custom art under 70 chars wide for safety
show_banner(custom_file="narrow_logo.txt")

Why This Happens: Terminal is too narrow for the ASCII art.


Issue: "Module not found: hakcer"

Issue

Symptom: ImportError: No module named 'hakcer'

Solutions:

  1. Check installation:
pip list | grep hakcer
# Should show: hakcer  1.1.3
  1. Install in correct environment:
# Make sure you're in the right venv
which python
pip install hakcer
  1. Reinstall:
pip uninstall hakcer
pip install hakcer

Why This Happens: Not installed or wrong Python environment active.


Issue: Animations are slow/choppy

Issue

Symptom: Effects run slowly or stutter

Solutions:

  1. Use faster effects:
# Avoid slow effects in production
show_banner(speed_preference="fast")
  1. Check system load:
top  # Make sure CPU isn't pegged
  1. SSH latency:
# On high-latency connections, skip animations
show_banner(effect_name="print")  # Fastest effect

Why This Happens: Slow terminal rendering or high system load.


Frequently Asked Questions

Q: Can I use this in commercial projects?

License

A: Yes. MIT license means do whatever you want. No attribution required (but appreciated).


Q: Does this work in Docker containers?

Docker

A: Yes, but you need to allocate a TTY:

# Run with -it flags
docker run -it your-image

# Or in docker-compose:
services:
  app:
    tty: true
    stdin_open: true

Q: Can I disable banners in CI/CD?

CI/CD

A: Yes, multiple ways:

# Method 1: Check for CI environment
import os
if not os.getenv('CI'):
    show_banner()

# Method 2: Environment variable
# Set SHOW_BANNER=false in your CI config

# Method 3: CLI flag
# Implement --no-banner flag

Q: Does this work with Poetry/PDM/other package managers?

Package Managers

A: Yes. Install like any PyPI package:

# Poetry
poetry add hakcer

# PDM
pdm add hakcer

# Pipenv
pipenv install hakcer

# pip (obviously)
pip install hakcer

Q: Can I contribute new effects/themes?

Contribute

A: YES. PRs welcome. Requirements:

  • New themes: Add JSON config in themes/ directory
  • New effects: Wrapper for terminaltexteffects
  • Include example/demo
  • Update documentation
  • Don't break existing stuff

Q: Is this production-ready?

Production

A: Yes, with caveats:

Do use it for:

  • CLI tools (perfect use case)
  • Developer tooling
  • Security tools (give them some STYLE)
  • Demo scripts

Don't use it for:

  • Critical system logs (use proper logging)
  • Automated scripts that parse output
  • Anything where terminal output is parsed

Q: Why "haKCer" with a capital C?

A: Because haKC.ai is the collective. The 'K' and 'C' stand for Kansas City (SecKC represent). Also because "hacker" was taken on PyPI by some abandoned package from 2013.


Q: Performance impact?

Performance

A: Minimal:

  • Fast effects: <2 seconds
  • Memory: <10MB
  • CPU: One core briefly
  • Startup time: ~50ms import overhead

Bottom line: If your tool takes 30+ seconds to run, a 1-second banner is <5% overhead.


Getting Help

1. Check the docs

# Read the full README
less README.md

# Or online
https://github.com/haKC-ai/hakcer#readme

2. Run the showcase

# Test if things are working
python showcase.py

3. GitHub Issues

https://github.com/haKC-ai/hakcer/issues

Before opening an issue:
[✓] Search existing issues
[✓] Include Python version, OS, terminal type
[✓] Provide a minimal reproducible example
[✓] Don't ask for features that violate the core design

4. Community

Discord

We're part of the SecKC (Kansas City Security) community:
- Website: https://seckc.org/
- Monthly meetups
- Beginner friendly
- No corporate bullshit
════════════════════════════════════════════════════════════════════════════════
  SUPPORT NOTES:
  
  [*] Check GitHub Issues first - your question might be answered
  [*] Include system info in bug reports (OS, Python version, terminal)
  [*] "It doesn't work" is not a useful bug report
  [*] PRs are more likely to get merged than feature requests
  [*] We don't provide email support (use GitHub Issues)
════════════════════════════════════════════════════════════════════════════════

[::: LINKS / REFERENCES :::]

Links

Official Resources

Resource URL Badge
PyPI Package https://pypi.org/project/hakcer/ PyPI
GitHub Repository https://github.com/haKC-ai/hakcer GitHub
Issue Tracker https://github.com/haKC-ai/hakcer/issues Issues
Documentation https://github.com/haKC-ai/hakcer#readme Docs
Changelog https://github.com/haKC-ai/hakcer/blob/main/CHANGELOG.md Version

Dependencies

Dependency Repository License
terminaltexteffects https://github.com/ChrisBuilds/terminaltexteffects MIT
rich https://github.com/Textualize/rich MIT

Related Projects

Project Description Link
Awesome Hacker Art Awesome Hacker Art https://github.com/haKC-ai
haKC.ai AI tools collective https://github.com/haKC-ai
SecKC Kansas City Security Community https://seckc.org/
ASCII Art Archive Pre-made ASCII art https://ascii.co.uk/art/
TAAG Text to ASCII Art Generator http://patorjk.com/software/taag/

Credits & Acknowledgments

Credits

Built with:
├── terminaltexteffects - Terminal animation engine by ChrisBuilds
├── rich - Terminal formatting by Textualize
├── Python - Because we're not masochists
└── https://github.com/NoDataFound/awesome-hacker-art

Contact: Use GitHub Issues (no email support)


[::: GREETS & SHOUTOUTS :::]

Greets


                          GROUP NEWS: Be a real one and contribute.

                          GR33TZ: SecKC, LEGACY CoWTownComputerCongress,ACiD,
                                                   iCE, T$A, +o--, badge lords
                          SHOUTZ:
                                  [*] 14.4k Modem Jammers
                                  [*] l33t soulz still patching proggies & 
                                    huntin' sick ANSIs for their AOHELL punter

                                           FU to [LAMERZ] still using WordPad
                                  If your editor auto wraps lines, bounce now.

                               ───── ▓ signed, /dev/CØR.23: ▓ ─────
                                       "nano > vim. come fight us."