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.
- Cross-platform PyQt5 interface with a unified dark theme.
- Recursive folder scanning with duplicate cleanup.
- Manage Loaded Images dialog for quick filtering, reordering, duplicate review, and cleanup.
- Custom schedule builder: timed entries, breaks (0-image rows), randomization, and preset saving.
- Auto-reload of your last session (images, schedule, randomization).
- In-session safety notice: opening Manage during an active session shows a warning that changes apply to the next session, not the current one.
- Window options (grayscale, flip, always-on-top, frameless) via hotkeys.
- 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).
- Sound cues for new entry and last image.
- Portable single executable—no install needed; offline AVIF/BMP/GIF/JXL/JPG/JPEG/PNG/WEBP support.
- Update checks every 2 days when online.
- Expanded image support to include AVIF, GIF, JXL, and WEBP across selection and session playback.
- Added Manage Loaded Images workflow tools (filtering, duplicate inspection, reorder, remove missing, quick folder open).
- Added in-session Manage warning so edits are clearly marked as applying to future sessions.
- 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.
- Improved playlist/schedule synchronization around breaks and review navigation.
- Refactored the codebase for maintainability (main-window modules + dedicated session runtime module).
- Simplified session display by removing queue preview and session total-count text.
| 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) |
| 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 |
| 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 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 |
| 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.
Note
GestureSesh has been tested on Python 3.11. Other versions may work but have not yet been verified.
-
Install Python 3.11
-
macOS
- Go to python.org/downloads and download the macOS 64-bit installer for Python 3.11.
- Run the installer and follow the steps.
- Open Terminal and verify:
python3.11 --version # → Python 3.11.x
-
Windows
- Go to python.org/downloads and download the Windows (64-bit) installer for Python 3.11.
- Run the installer, check “Add Python 3.11 to PATH,” then click Install Now.
- 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
-
-
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>
-
-
Create & activate a virtual environment
-
macOS/Linux:
python3.11 -m venv venv source venv/bin/activatePrompt:
(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.
-
Install dependencies
pip install --upgrade pip pip install -r requirements.txt
-
Run GestureSesh
python run.py
The GUI should now appear. When you reopen a terminal later, remember to:
cd ~/Desktop/GestureSesh(orC:\Users\You\Desktop\GestureSesh>)- Activate the venv:
Windows:
venv\Scripts\activate
python run.py
- Supported file types: .avif, .bmp, .gif, .jxl, .jpg, .jpeg, .png, .webp.
- Settings are stored in a cross-platform
config.jsonunder your app data directory (includes recent session, presets, and update-check 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



