Toshy v26.08.0
Releases from this project are meant only as records of major changes. There will be automatic attachments generated by GitHub, but to get the latest version download the zip from the green <> Code ▼ button on the main page, or use the [quick-install one-liner command](https://github.com/RedBearAK/toshy/wiki/How-to-install-Toshy-with-a-single-command).
Changes
This release covers roughly mid-July through early August 2026. The headline items are experimental NixOS support, Alpine Linux support, and automatic detection of native desktop environment shortcuts (screenshots, app launcher, input source switching) so that the remaps match whatever the DE is actually using.
New distro support
- Add experimental support for NixOS^ — Nix flake with both a NixOS module and a Home Manager module, a runtime environment seam so launchers and services resolve the right interpreter and PATH, an
install-user-filesinstall path for declaratively-managed systems, and a scaffold script for fresh NixOS installs. - Add support for Alpine Linux^^ —
bootstrap.shconverted to POSIXshfor dash/busybox,bashandshadowadded to the package list, eudev quirk handling. - Add
artixanddevuandistro IDs, which follow the existing non-systemd install path (systemd-related packages are dropped automatically; the config process has to be launched manually or autostarted at login by whatever method the DE provides). - Let
list-distrossetup sub-command count NixOS/nix in its totals, and update its output notes. Setup script now supports 12 package manager types, 19 base Linux distro types, and knows 58 specific distro IDs.
New features and improvements
- Read native screenshot shortcuts from the desktop environment and generate matching remaps automatically, instead of relying on hard-coded defaults that may not match the user's DE version or their customizations^^^
- Detect the DE's live native app launcher and input source switching shortcuts the same way, with a new setting that swaps which Toshy shortcut lands on each: with the swap enabled,
Cmd+SpaceandShift+Cmd+Spacecycle keyboard layouts and the launcher moves toCtrl+Space, matching Mac OS X Tiger and earlier, before Spotlight took overCmd+Space - Add
toshy-terminal-menu, a fully functional terminal-based alternative to the tray icon and GTK preferences apps, for systems having trouble with the GTK apps or unable to install the packages they need - Migrate multi-tap handling into the keymapper (xwaykeyz 1.25.0)
- Support conditional timeouts in the keymapper (xwaykeyz 1.24.0)
- Add
toshy-sharecommand for getting text out of VMs - Cinnamon: fix the menu applet's shortcut on install and revert it on uninstall, and avoid triggering the bug reporter dialog on Cinnamon 6.8+
- GTK4 preferences app: reduce window height for small screens, consolidate theming into a single CSS module, rework the Tools panel
- Installer: pre-flight the keymapper and move the admin privileges question earlier in the run
- Add
toshy-detector-checkdiagnostic command for auto-detected shortcuts - Update Thunderbird, VSCode, and other app keymaps
- Flip the suspend timeout default in the config
Fixes
- Fix buggy lock key toggle notification functions
- Lift the CapsLock mode submenu up to the main menu level, working around a nested sub-submenu bug observed on both COSMIC and GNOME (submenu collapsed instead of expanding to reveal 3rd-level submenu items)
- Prevent excess
doaspassword prompts by preserving thepersistticket across elevated calls^^ - Don't show bogus privilege prompts on
doassystems - Prevent detached processes from emitting output into the terminal that launched them
- Handle a missing Cinnamon screenshot shortcut instead of failing on it
- Correct the terminal and GUI screenshot remaps, and use a nested keymap for the Spectacle window screenshot
- Fix PATH resolution on NixOS for services, bin commands,
pgrep, and device checks - Let NixOS users actually run the reinstall command
- Work around a deprecated setuptools error and pin
python-xlib==0.31via overlay on Nix - Fix executable bits on several scripts
- Reduce total file read calls during shortcut detection
Installer/setup tweaks
- Standardize scripts on the
/usr/bin/env bashshebang, withbootstrap.shas the deliberate POSIXshexception - Migrate launchers and services to the shared runtime environment script
- Show the resolved interpreter path alongside versions in
toshy-versions - Vendor sync xwaykeyz 1.24.0, 1.25.0, and 1.25.1
- Ignore the branch reset script
^ NixOS works in testing, but expect rough edges, and expect the mechanics to change significantly over time. NixOS needs the Toshy files installed into the user's home while the Python environment and binaries come from Nix, so the install grew an install-user-files path and a runtime environment seam that resolves interpreter and PATH at launch time rather than at install time. The flake exposes a NixOS module and a Home Manager module.
^^ Alpine uses doas rather than sudo, and doas keys its persist ticket on the parent process PID. Running elevated commands through a shell gave doas a fresh, disposable /bin/sh parent every time, which defeated the ticket and caused a password prompt on every single call during the install.
^^^ Screenshot shortcuts vary widely between desktop environments, between versions of the same DE, and between users who have customized them. Toshy now reads the actual configured shortcuts at config load time and resolves them through a tiered fallback to hard-coded defaults when nothing can be read. Tested on GNOME, KDE, Cinnamon and COSMIC. The auto-generated remaps can still be overridden with a custom keymap per DE in the editable "user_apps" slice of the config, and toshy-detector-check will show the keymaps that were generated automatically, to be used as a starting copy for those overrides.
Auto-generated full release notes (click to expand):
What's Changed
- Fix buggy lock key toggle notification functions by @RedBearAK in #867
- Reduce height of GTK4 preferences app by @RedBearAK in #868
- Consolidate and update theming by @RedBearAK in #869
- Support conditional timeouts in keymapper by @RedBearAK in #870
- Vendor sync xwaykeyz 1.24.0 main by @RedBearAK in #871
- Flip suspend timeout, add MultiTap support by @RedBearAK in #872
- Update Thunderbird, VSCodes, other keymaps by @RedBearAK in #874
- Ignore branch reset script by @RedBearAK in #875
- Experimental NixOS support by @RedBearAK in #876
- Scaffold script for fresh NixOS installs by @RedBearAK in #877
- NixOS support that actually works by @RedBearAK in #878
- Add note on NixOS support working by @RedBearAK in #879
- Update NixOS dev notes by @RedBearAK in #880
- Let list-distros count NixOS/nix by @RedBearAK in #881
- Alpine Linux support, doas improvement by @RedBearAK in #882
- Reduce prompt displays on doas systems by @RedBearAK in #883
- Keep doas from showing so many prompts by @RedBearAK in #884
- Update list-distros output notes by @RedBearAK in #885
- Update supported distro IDs by @RedBearAK in #886
- Get screenshot remaps from each DE automatically by @RedBearAK in #887
- Improve multi-DE screenshot remap handling by @RedBearAK in #888
- Improve check command logging by @RedBearAK in #889
- Improve logging from config, esp. screenshots by @RedBearAK in #890
- Terminal menu app, shortcut detectors by @RedBearAK in #891
Full Changelog: Toshy_v26.07.1...Toshy_v26.08.0