Skip to content

adnv3k/GestureSesh

Repository files navigation

GestureSesh Banner

GitHub stars Microsoft Store macOS GitHub Release

Python 3.11+ License: GPL v3 Built with PyQt5


GestureSesh supercharges gesture practice using your own reference folders. The app cycles through images on a schedule you define while keeping each at its original aspect ratio. The clutter-free interface helps you stay focused on drawing.

Your Libraries

Main window showing schedule setup

Your Sessions

Session display mode

Features

  • Cross-platform PyQt5 interface with a unified dark theme.
  • Recursive folder scanning with duplicate cleanup.
  • Selection Order Viewer (Ctrl + Shift + I) with thumbnails, selection stats, filtering, duplicate/missing review, add/remove tools, sorting, shuffling, and manual order controls.
  • Custom schedule builder: timed entries, breaks (0-image rows), randomization, and preset saving.
  • Auto-reload of your last session (images, schedule, randomization) plus persisted session display preferences and image modifications.
  • In-session order management: open the same viewer from the session window to inspect the current order and manage upcoming images without changing already-shown items.
  • Window options (grayscale, flip, always-on-top, frameless) via hotkeys.
    Grayscale example
  • Session shortcut map with F1 for a quick in-window reference to keyboard, wheel, trackpad, and stylus controls.
  • Intuitive timer: click to pause, drag to move (auto-pause), resume where you left off.
  • Review mode: 15 s auto-close with arrow navigation; double-click or Ctrl + O to open image folder.
  • Simplified session controls: queue preview and the session total-count label were removed for a cleaner display.
  • Break indicator: set an entry with 0 images for a timed break (💡 light appears).
    Break example
  • Sound cues for new entry and last image.
  • Portable single executable—no install needed; supports AVIF/BMP/GIF/JXL/JPG/JPEG/PNG/WEBP image libraries.
  • Update checks every 2 days when online.

What's New Since v0.5.3

  • Added persistence for session display and image-modification settings, so zoom/layout/visual adjustments are restored across restarts.
  • Presets remain backward-compatible and can now store schedule, selection, and session display metadata, including per-preset resize behavior.
  • Improved recent-session restore to reload both folders and direct-file selections with duplicate-safe filtering.
  • Expanded image support to include AVIF, GIF, JXL, and WEBP across selection and session playback.
  • Added Selection Order Viewer (Ctrl + Shift + I) with thumbnail previews, stats, filtering, duplicate/missing inspection, add/remove tools, sorting, shuffling, and manual order controls.
  • Added in-session order management so the current session order can be inspected and upcoming images can be adjusted while already-shown items and break markers stay protected.
  • Randomized selections can now be previewed in their effective order before starting a session; applying the preview locks that order and turns randomization off.
  • Added Shortcut Map dialog (F1 / Ctrl + /) for in-session key and input reference.
  • Added richer zoom/pan controls (wheel/pinch/stylus paths, quick inspect, zoom reset, and auto-reset toggle).
  • Improved decode/render robustness with fallback decode paths and still/animation caching; JXL fallback can use djxl, and animated fallback can use ffmpeg when available.
  • Improved playlist/schedule synchronization around breaks and review navigation.
  • Refactored the session runtime for maintainability by splitting shortcut, timer, zoom/pan, image-modification, and image-loading responsibilities into focused session modules.
  • Simplified session display by removing queue preview and session total-count text.

Hotkeys

Session Configuration

Action Hotkey
Open Folders F
Open Files Ctrl + F
Clear Selection Ctrl + Shift + C
Toggle Randomization Ctrl + R
Remove Duplicates Ctrl + 1 (one per filename)
Manage Selection Order Ctrl + Shift + I
Add Entry Shift + Enter
Save Preset Ctrl + S
Delete Preset Ctrl + Shift + D
Delete Entry D
Move Entry Up W
Move Entry Down S
Clear Schedule C
Start Session Ctrl + Enter
Close Window Esc

Session Window

Action Hotkey
Grayscale G
Flip Horizontal H
Flip Vertical V
Toggle Resizing (dyn/static) R
Toggle Always On Top A
Toggle Frameless Window Ctrl + F
Toggle Frameless Fullscreen Ctrl + Shift + F
Toggle Mute M
Previous Image ← (Left Arrow)
Stop Esc
Pause Spacebar
Next Image → (Right Arrow)
Skip Image S
Add 30 s ↑ (Up Arrow)
Add 1 Minute Ctrl + ↑ (Up Arrow)
Open Image Folder Double-click or Ctrl + O
Reset Timer Ctrl + Shift + ↑ (Up Arrow)
Toggle Zoom / Pan Z
Reset Zoom 0
Quick Inspect I
Manage Session Order Ctrl + Shift + I
Toggle Auto Zoom Reset Ctrl + Shift + Z
Open Shortcut Map F1 or Ctrl + /
Increase Brightness Ctrl + PgUp
Decrease Brightness Ctrl + PgDown
Increase Contrast PgUp
Decrease Contrast PgDown
Toggle Threshold Mode T
Toggle Edge Detection E
Reset Image Modifications Ctrl + 0
Toggle Grayscale Mode Ctrl + G

Note

Pressing Stop closes the window and ends the session.
In Review Mode, use ←/→ arrows to browse. Double-click (or Ctrl + O) to open the current image’s folder. The window auto-closes after 15 s of inactivity.

Installation from Source

Note

GestureSesh has been tested on Python 3.11. Other versions may work but have not yet been verified.

  1. Install Python 3.11

    • macOS

      1. Go to python.org/downloads and download the macOS 64-bit installer for Python 3.11.
      2. Run the installer and follow the steps.
      3. Open Terminal and verify:
        python3.11 --version
        # → Python 3.11.x
    • Windows

      1. Go to python.org/downloads and download the Windows (64-bit) installer for Python 3.11.
      2. Run the installer, check “Add Python 3.11 to PATH,” then click Install Now.
      3. Open Command Prompt and verify:
        python --version
        # → Python 3.11.x
    • Linux (Ubuntu example)

      Not yet fully verified on Linux.

      sudo apt update
      sudo apt install -y software-properties-common
      sudo add-apt-repository ppa:deadsnakes/ppa
      sudo apt update
      sudo apt install -y python3.11 python3.11-venv python3.11-distutils
      python3.11 --version
      # → Python 3.11.x
  2. Clone the repo to your Desktop

    • macOS/Linux (Terminal):

      cd ~/Desktop
      git clone https://github.com/adnv3k/GestureSesh.git
      cd GestureSesh

      Prompt: ~/Desktop/GestureSesh$

    • Windows (Command Prompt):

      cd %UserProfile%\Desktop
      git clone https://github.com/adnv3k/GestureSesh.git
      cd GestureSesh

      Prompt: C:\Users\You\Desktop\GestureSesh>

  3. Create & activate a virtual environment

    • macOS/Linux:

      python3.11 -m venv venv
      source venv/bin/activate

      Prompt: (venv) ~/Desktop/GestureSesh$

    • Windows:

      python -m venv venv
      venv\Scripts\activate

      Prompt: (venv) C:\Users\You\Desktop\GestureSesh>

Tip

Seeing (venv) at the start of your prompt means the virtual environment is active.
To exit, type deactivate and press Enter.

  1. Install dependencies

    pip install --upgrade pip
    pip install -r requirements.txt
    
  2. Run GestureSesh

    python run.py

    The GUI should now appear. When you reopen a terminal later, remember to:

    1. cd ~/Desktop/GestureSesh (or C:\Users\You\Desktop\GestureSesh>)
    2. Activate the venv:

    Windows:

    venv\Scripts\activate
    python run.py

Note

  • Supported file types: .avif, .bmp, .gif, .jxl, .jpg, .jpeg, .png, .webp.
  • Expanded image decoding uses bundled Python libraries first where possible; JXL fallback can use djxl, and animated fallback can use ffmpeg when those tools are installed.
  • Settings are stored in a cross-platform config.json under your app data directory (includes recent session, presets, and update-check metadata).
  • Presets are backward-compatible across legacy and wrapped formats, and newer presets can retain schedule, selection, and session display metadata.
  • Last session’s images, randomization, and schedule are auto-loaded on startup.
  • Updates are checked every 2 days when online. You’ll see a notice if there’s a new version.
  • GestureSesh is built with PyQt5 using the “Fusion” style for a consistent dark theme across Windows & macOS.

If you have any suggestions or issues, any input is appreciated! Email: ali@gesturesesh.com

Buy me a Ko-Fi   Donate via PayPal

About

GestureSesh is a free and open-source application that displays image files based on a user defined schedule. After images are selected, the session window will display the image with options for modification.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages