Skip to main content

13 posts tagged with "programs"

View All Tags

InputBar 2.0.1

· One min read

Fixes

  • WinKeyHook launch fallback: daemon startup now tries three strategies in order — (1) Task Scheduler task WinKeyHook (silent, no UAC prompt), (2) direct process launch (works when exe carries no requireAdministrator manifest), (3) ShellExecute runas (shows UAC prompt once as last resort). Previous behaviour used only strategy 2, causing silent failure on hardened systems.

Downloads

View on GitHub

InputBar 2.0.0

· 2 min read

Breaking Changes

  • IPC protocol: plain-text SHOW / SEARCH:text still accepted (backward-compatible). New JSON envelope format introduced: {"protocol": 1, "command": "show", "args": {}}. Old scripts continue to work unchanged.
  • Dev mode data path: generated data now routes to src/gen/Data/ instead of src/Data/. A one-time migration runs automatically on first launch.
  • --verbose flag: new CLI flag to enable DEBUG logging in compiled mode.

Improvements

  • Logging: timestamped format [YYYY-MM-DD HH:MM:SS.mmmZ] [LEVEL] [module]. Bootstrap log at %TEMP%\InputBar\bootstrap.log active before path resolution. Log rotation (5 MB max, 3 files kept). Levels: DEBUG / INFO / WARN / ERROR / FATAL.
  • Crash handler: unhandled exceptions now write a InputBar_crash_<timestamp>.log to %TEMP% before exiting.
  • Atomic config writes: Settings.json, hotkeys.json, Plugins.json now written via temp+rename to prevent corruption on crash.
  • Schema versioning: Settings.json and hotkeys.json carry a schema_version field enabling structured migrations.
  • Graceful shutdown: SIGTERM / SIGINT handled. Plugins teardown() called in reverse load order. 5-second hard timeout on shutdown.
  • WinKeyHook install prompt: user is asked before installing WinKeyHook. SHA-256 integrity check runs if a hash is configured in build/project.json.
  • Path traversal guard: ConfigDirectory values pointing at system directories are rejected.
  • Thread safety: _pipe_handle protected by a lock. Reader thread uses threading.Event stop flag.
  • IPC quit command: both plain-text QUIT and JSON {"command":"quit"} trigger a graceful shutdown.
  • Plugin teardown contract: plugins may expose teardown() -> None — called on shutdown.
  • Named constants: all magic timing/retry values named (no bare literals).
  • Type annotations: all public functions in Core modules annotated.
  • build/project.json: single source of truth for name, version, publisher, GUID. build_app.bat and CMakeLists.txt both read from it.
  • pyproject.toml: ruff linter configured for the project.
  • .docs/ARCHITECTURE.md: module map, startup sequence, directory layout.
  • .docs/DECISIONS.md: ADRs for all major technical choices.

Infrastructure

  • Git root: .git moved from src/ to project root (§3.1 compliance).
  • .gitignore: root-level gitignore added. build/, releases/, publish scripts, src/gen/, CONTEXT.md all excluded.
  • Dev data isolation: src/gen/ directory (gitignored) holds all dev-mode generated data.

Downloads

View on GitHub

InputBar 1.3.0

· One min read

WinKeyHook — External Daemon

The bundled winkey_hook.exe (previously shipped in Lib\Core\) has been removed and replaced by the WinKeyHook Daemon, an independent open-source tool available at: https://github.com/BlessEphraem/WinKeyHook

What changes for you:

  • The installer automatically removes the old Lib\Core\winkey_hook.exe if present.
  • On first launch, InputBar automatically installs the WinKeyHook Daemon if it is not already present (a UAC prompt will appear).
  • Once installed, InputBar launches the daemon automatically whenever a win, lwin, or rwin hotkey is configured.
  • If the daemon is already running (e.g. from another app), InputBar connects to it directly without re-launching it.

Downloads

View on GitHub

InputBar 1.2.4

· One min read

Data Directory Management

  • Choose your data location at install time — A new step in the installer lets you pick where InputBar stores its settings, themes and history. Leave it as-is to keep data in the install folder (default behaviour).
  • Config path change detection — If you redirect Path\Config.json to a new location and restart InputBar, a dialog will offer to move your existing data there automatically.
  • Old data cleanup — If you decline the move, a second dialog lets you delete the now-unused data instead of leaving it behind.
  • Dead data detection — On startup, if your active data directory differs from the install folder, InputBar checks for leftover Data\ and Plugins\ directories in the install folder and offers to remove them.

Downloads

View on GitHub

InputBar 1.2.2

· 2 min read

New Configuration Key - Per-plugin result limit

Each plugin now exposes a "limit" key in Plugins.json (default 15). Raise it to see more results per plugin, lower it for a tighter list.

Updated Plugin - Shell

  • Custom terminal emulators — Define any terminal (WezTerm, Alacritty, Windows Terminal…) in default_shell.json under "extra_shells" and use it as your default shell or as a per-entry prefix in favorites.data.
  • / keyword — Type / <command> as a shorter alternative to shell <command>.
  • Silent execution — Use extra_shells with cmd /c or PowerShell -WindowStyle Hidden to run commands without a visible window (see Shell docs for examples).
  • CWD fix — Shell commands now open in the user's home directory instead of InputBar's install folder.

Quick Fixes

  • App plugin — Auxiliary shortcuts (Help, Uninstall, ReadMe…) no longer appear in results. Get-StartApps, Start Menu .lnk files, and registry entries are now all filtered by name and target executable. Non-executable UWP entries (documents, text files…) registered via Get-StartApps are no longer indexed.
  • ListMax setting removed — superseded by MaxItemToShow in the theme. Existing Settings.json files are cleaned up automatically on first launch.

Downloads

View on GitHub

InputBar 1.2.0

· 4 min read

IMPORTANT: Theme reset - Incompatible themes from earlier versions

Due to major layout changes introduced in 1.2.0 (double-line result items, dynamic window height), themes from version 1.1.x and earlier are incompatible.

On first launch after upgrading, InputBar detects these old themes and automatically replaces them with the updated defaults. A one-time warning dialog is shown before this happens.

Only theme files are affected. All other data (settings, plugin data, aliases, favorites) is preserved.

Config.json - Data directory redirect

A new Config.json file (next to the executable) lets you redirect where Data/ and Plugins/ are stored:

{
"ConfigDirectory": "C:\\Users\\USERNAME\\AppData\\Roaming\\InputBar"
}

Plugin data files (favorites.data, aliases.data, default_shell.json) are automatically seeded into the new location on first launch.

Data/Config.json -> Data/Settings.json

The main settings file has been renamed from Data/Config.json to Data/Settings.json.
Existing installations are migrated automatically on first launch — no manual action needed.

  • Type settings in InputBar to reload or open the file (was config)

New Plugin - Shell

A dedicated Shell plugin has been added (Plugins/Shell/Shell.py).

It handles shell command execution, separate from app launching:

  • favorites.data — define named shell command shortcuts:
fastfetch=pwsh fastfetch
btop=cmd btop
showFolder=pwsh ls "C:\My\Path\"
myscript=python C:\My\Path\script.py --arg
  • default_shell.json — set your default shell (cmd, pwsh, powershell)
  • Per-entry shell override — prefix any entry with a shell name to override the default:
btop=cmd btop
  • Favorites are fuzzy-searchable by name from the InputBar
  • Direct shell commands typed in the bar are also detected and executed
  • Type shell reload to reload favorites without restarting
→ Shell Documentation

A dedicated Everything plugin integrates voidtools Everything directly into InputBar.

  • Type f <query> or everything <query> for an explicit file search
  • Known extensions (.png, .pdf, .mp4, …) auto-trigger the plugin — just type the extension
  • Favorites — define named folder shortcuts in favorites.data:
    # Plugins/Everything/favorites.data
    src=Z:\Projects\MySrc
    wallpapers=C:\Users\Me\Pictures\Wallpapers
    Typing src shows the folder as the first result, followed immediately by its contents.
  • Right-arrow sub-menu on any result: Open folder · Copy file path · Back
  • Everything is started silently in the background if not already running; no manual setup needed
→ Everything Documentation

Improved app filtering (App plugin)

Shortcuts (.lnk files) whose target is a non-executable document (e.g. .chm help files, .pdf, .txt) are now excluded from the application index. Only shortcuts that open a real executable or folder are shown.

SVG icons & right-arrow sub-menu improvements

  • Sub-menu items (Start as admin, Open folder, Copy file path, Back) now use coloured SVG icons from Assets/Icons/
  • Icon colours are configurable per-theme via the new icons section in the theme JSON:
    "icons": {
    "admin": "#FF8C00",
    "folder": "#FFD700",
    "system": "#888888",
    "arrow_left": "#FFFFFF"
    }
  • Copy file path is a new sub-menu option (copies the full path to the clipboard)
  • The right-arrow sub-menu is now available on both app and file results (Everything items included)
  • "Start as admin" is only shown when the selected item is an executable (.exe)
  • Emoji characters removed from all built-in result labels

Internal Changes

  • _version.py moved to Build/ (generated by CMake at build time)
  • .gitignore added at root; src/.gitignore updated
  • Startup warmup: InputBar now shows briefly on launch to pre-warm search and icon cache, eliminating first-keystroke latency
  • Core/Config.py renamed to Core/Settings.py
  • Core/Migrations.py — new file centralising all startup migrations and plugin data seeding
  • Data/__pycache__ no longer created in compiled/setup builds (was always empty)
  • Plugin data files now correctly follow ConfigDirectory when set

Downloads

View on GitHub