Skip to content

v1.2.0 — Thread-Safe Architecture for Modern Python

Latest

Choose a tag to compare

@RMANOV RMANOV released this 08 Mar 08:36
· 8 commits to main since this release

Simple Program Launcher v1.2.0

What's New

Bulletproof on Python 3.14 + Tcl 9.0

Complete architectural overhaul of the GUI threading model. The launcher now runs flawlessly on the latest Python and Tcl stack, where previous versions would crash with SIGILL on the second popup invocation.

How It Works Now

The main thread owns the Tk event loop. The evdev input listener runs in a background thread and communicates trigger events through a lock-free queue. The main thread polls the queue every 50ms and creates popups as Toplevel windows — all GUI operations happen on a single thread, exactly as Tcl 9.0 requires.

┌─────────────────┐       queue.Queue       ┌──────────────────────┐
│   evdev thread   │ ──── put(position) ───→ │   main thread (Tk)   │
│  L+R detection   │                         │  poll → popup.show() │
└─────────────────┘                         └──────────────────────┘

Launched Apps Run Free

Programs started from the launcher now run in their own process session (start_new_session=True). No more interference from the launcher's signal handling — launched apps survive launcher restarts and Ctrl+C.

Console-Free Operation

The launcher auto-detects when it's running without a terminal and redirects all output to ~/.cache/launcher.log. Combined with the included KDE autostart desktop entry, it runs completely invisible — no console window, no tray icon, no taskbar entry. Just L+R click when you need it.

Clean Shutdown

Ctrl+C or SIGINT triggers a graceful shutdown — stops the input listener, exits the Tk event loop, no orphaned processes.

Upgrade

Drop-in replacement — same config, same behavior, no migration needed.

cd ~/simple_program_launcher && git pull

The autostart desktop entry at ~/.config/autostart/launcher.desktop handles the rest on next login.


21 commits of refinement. Zero footprint. Always ready.