Skip to content

Releases: RMANOV/simple-program-launcher

v1.2.0 — Thread-Safe Architecture for Modern Python

08 Mar 08:36

Choose a tag to compare

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.

v1.1.0 — Wayland click-outside & cursor fix

08 Mar 07:54

Choose a tag to compare

What's New

Wayland Fixes

  • Click-outside detection — timestamp correlation between evdev (global clicks) and tkinter (popup clicks). No cursor position needed — eliminates XWayland stale position bug entirely
  • Popup positioning — subprocess-isolated KWin D-Bus query for real Wayland cursor coordinates (~50ms). Removed in-process GLib mainloop that conflicted with tkinter
  • evdev input backend — native Wayland mouse event detection, no XWayland dependency

UI Improvements

  • Pin button visual feedback (📌 icon + disabled state after pinning)
  • UI width type safety fix

v1.0.0 — Lightning-Fast L+R Mouse-Click Program Launcher

01 Feb 16:36

Choose a tag to compare

Cross-platform program launcher triggered by simultaneous L+R mouse click. 10,000-entry clipboard history with fuzzy search, <50ms popup latency, smart usage tracking with 7-day recency weighting. Built in Rust (~4 MB binary, ~8 MB RAM) with Python GUI fallback.

Highlights

  • L+R Mouse Trigger — never conflicts with keyboard shortcuts
  • 10K Clipboard History — fuzzy search, pin, math preview, password detection
  • <50ms Popup Latency — Rust performance, appears at cursor
  • Smart Tracking — learns your most-used programs (7-day recency)
  • Hot-Reload Config — changes apply without restart

Stack

Rust 1.70+ | Python 3.8+ (GUI) | Cross-platform (Linux/Windows/macOS)