Skip to content

Releases: RedBearAK/toshy

Toshy v25.07.0

30 Jun 02:54
d37af5d
Compare
Choose a tag to compare

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 single command.

Changes

  • Make setting PATH for access to local-bin more robust
  • Adapt to some bugs on Deepin Desktop Environment and deepin-terminal
  • Add support for Mageia Linux (related to Mandrake, OpenMandriva)
  • Make sure to handle Tk 9 and updated theme module for GUI app
  • Log which sub-method logic branch is used in DNF distro handler
    • (DNF handler deals with Fedora, Mageia, OpenMandriva, and RHEL distro types)
  • Refine terminal output from Mac startup sound volume control script
  • Add asyncio based multi-tap support (see notes)

Notes on Multi-Tap Implementation

Replacing the rough "hack" in the config that just detected if something hit the function twice, which unfortunately blocked the normal single-tap usage of the same combo globally, there is now an experimental implementation of true multi-tap support, using asyncio to deal with the time delays and repeated input that happens (or doesn't happen before the delay times out) before emitting the final action "later". Default timing is 0.25s between tap levels.

If the same input combo is designated as the single-tap action, it is effectively non-blocking for the original combo, while also allowing double-tap or higher (up to a 5-tap action is allowed) uses of the same combo to instead perform some different combo or action. Anything beyond 5 taps of the same input will be ignored/blocked.

The rest of the config has no interaction with the multi-tap logic at all if no multi-tap combo is encountered, so no latency or performance difference should be seen for any other kind of remapped input. The diagnostic dialog will still appear for either Shift+Opt+Cmd+I,I or Shift+Opt+Cmd+H,H (double-taps of the final key in the combo, just like before).

Actions allowed in a multi-tap combo

  • Keys (only useful for emitting modifier key presses alone)
  • Combos (normal way to emit any key or Mod[s]+key shortcut)
  • String processor calls (the ST() alias)
  • Macros (lists of things like Keys, Combos, strings, sleeps, etc.)
  • Arbitrary function calls (e.g. diagnostic dialog, macro test functions)

Syntax for multi-tap combos inside keymaps:

Several examples for the multi-tap syntax are in the newer diagnostic shortcuts keymap at the end of the default config files.

Using None will block a tap level action. Designating the same combo as the single-tap action will make the multi-tap combo "transparent" as far as apps are concerned (i.e., it will work normally in addition to the multi-tap actions, in any app that will do something in response to that combo). Arbitrary functions and lambdas can be used as actions, such as the function that produces the diagnostic dialog.

Anything with a string output action should be tested in a text editor. Print commands in custom functions or lambdas will only appear in terminal logging (what you see when using the toshy-debug command).

keymap("Diagnostics (isMultiTap)", {

    C("Shift-Alt-RC-i"): isMultiTap(
                            # tap_1_action=None,  # Block single tap
                            tap_1_action=C("Shift-Alt-C-i"),    # Keep original single-tap combo
                            tap_2_action=notify_context,
                        ),

    C("Shift-Alt-RC-h"): isMultiTap(
                            tap_1_action=C("Shift-Alt-RC-h"),   # Keep original single-tap combo
                            tap_2_action=notify_context,
                            tap_3_action=lambda: print("\nTriple tap!\n"),  # Shows in terminal
                        ),

    C("Shift-Alt-RC-t"): isMultiTap(
                            tap_1_action=C("C-n"),          # Test single-tap by opening new window
                            tap_2_action=macro_tester,      # Types out a long test macro text
                            tap_3_action=[
                                ST("You tapped Shift-Alt-C-t 3 times!!!"),
                                C("Enter"), C("Enter")],
                            tap_4_action=[
                                ST("You tapped Shift-Alt-C-t 4 times!!!!"),
                                C("Enter"), C("Enter")],
                            tap_5_action=[
                                ST("You tapped Shift-Alt-C-t 5 times!!!!!"),
                                C("Enter"), C("Enter")],
                        ),

}, when = lambda ctx: ctx is ctx)
Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.06.1...Toshy_v25.07.0

Toshy v25.06.1

13 Jun 06:47
2e0749a
Compare
Choose a tag to compare

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 single command.

Changes

  • Clean up indicator (tray icon) menu items with new submenu
  • Some shortcut fixes for Vivaldi browsers (numbered tab navigation, preferences)
  • Fix the Cmd+Space remap on Xfce, on AlmaLinux/Rocky Linux
  • Make Mac startup sound volume control script more user friendly
  • Services restart script may be more reliable in edge cases
  • Plasma KWin script for window context now detects window title changes (e.g., what happens when switching tabs in browsers, terminals, file managers, etc.) without needing a full windowActivated event signal, by subscribing to captionChanged signal for each activated window. Plasma window context accuracy (in regard to window titles) will now be on par with other Wayland environments (and X11).
Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.06.0...Toshy_v25.06.1

Toshy v25.06.0

04 Jun 05:39
cbe8247
Compare
Choose a tag to compare

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 single command.

Changes

  • Add sudo-rs as another sudo alternative for setup script (untested for now)
  • Support another Ubuntu variant, AnduinOS (Windows-like GNOME-based UI)
  • Use thread-safe GUI update methods in preferences app, to prevent segfault in Tk 9.0
  • Prevent version check error in GUI app when used with Tk 9.0 ( seen on OpenMandriva)
  • Use thread-safe menu/icon update methods in tray indicator app
Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.05.1...Toshy_v25.06.0

Toshy v25.05.1

12 May 23:34
534bba5
Compare
Choose a tag to compare

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 single command.

Changes

  • Added Mac startup sound (boot chime) volume control script

This release mainly just documents the addition of a comprehensive script that makes it easy to control the volume level (or muted state) of the startup sound (aka the "boot chime") of Mac models that use UEFI. That pretty much means any Intel Mac from 2005 to 2021 or so. This removes the need to boot any kind of macOS on the Mac to change the startup sound volume from the default loudness that happens after resetting the NVRAM.

There have been hacks floating around for quite a few years for disabling the startup sound from Linux, but when I searched a few years ago there was no information I could find about how to adjust the volume level of the boot chime instead of completely disabling it. Also a lot of the hacks for disabling the startup sound seemed to stop working for some people, and the Linux commands are very verbose. The new script makes it very easy to mute, unmute, reset (delete) or set a specific volume for the boot chime with a simple command.

The script can be downloaded and used without installing Toshy, and will probably work on any Linux distro where you can get the efivar command installed.

See the related Wiki article for more info on how it works and how to get it:

https://github.com/RedBearAK/toshy/wiki/How-to-set-the-Mac-startup-sound-volume-level-(or-mute-it)

There's an article on Medium that apparently contained relevant info about this since 2022, but I didn't know about it until after I researched the subject with an LLM and created the script. Even now in 2025, nothing besides that Medium article comes up in a web search for how to control the startup sound volume from Linux. Only forum posts about disabling the boot chime entirely.

Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.05.0...Toshy_v25.05.1

Toshy v25.05.0

03 May 12:34
76e35ba
Compare
Choose a tag to compare

Changes

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 single command.

  • Added support for ALT Linux distro
  • Stop asking for reboot after uinput setup
  • Make sure uinput is really persistent after reboot
Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.04.0...Toshy_v25.05.0

Toshy v25.04.0

23 Apr 08:12
280f067
Compare
Choose a tag to compare

Changes

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 single command.

Lots of small maintenance type fixes, nothing momentous.

  • Documented that fcitx5 works with the Unicode character shortcut
  • Keymapper no longer ignores first mod key press after startup in X11
  • Fix for KDE Plasma on Debian needing another package (kwin-addons)
  • Do a better job checking for running install as root
  • Handle sudo, run0, doas password prompts better
  • Load uinput module persistently only if needed
  • Use 'bind' keyword to make all tab nav shortcuts repeatable
  • Detect 'zorin' desktop environment (treated as 'gnome')
  • Fix Cmd+Space remap on Zorin Lite (Xfce)
  • Fix Cmd+Space remap on Ubuntu MATE
  • Match process names better for network KVM apps (Synergy, etc.)
  • Support more future Python versions in RHELs automatically
Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.03.1...Toshy_v25.04.0

Toshy v25.03.1

15 Mar 08:28
17b9801
Compare
Choose a tag to compare

Changes

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 single command.

  • Stop forcing systemd to import PATH (venv location ended up in PATH constantly)
  • Do better with services when logging out, instead of glitching on bad state
  • Update terminals "delete word to left" shortcut to Ctrl-w. Stopped working on fish 4.0.0
  • Bootstrap (install) script now allows choosing branch, adding install options
  • Fix bug/hang in setup while refreshing shortcuts in KDE 5 (on Debian 12)

Some bigger changes

  • Adapted setup script to use sudo, doas, run0 commands interchangeably
  • Added support for a new base Linux distro type: Chimera Linux (uses BSD userland/utils)
Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.03.0...Toshy_v25.03.1

Toshy v25.03.0

03 Mar 11:43
9c3d38a
Compare
Choose a tag to compare

Changes

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.

  • Use pattern that can handle more (all?) app classes for Ptyxis
  • Workaround for unpatched xdg-open that does nothing on Plasma 6 (Leap 16 beta problem)
  • Update the bug reporting template to include window manager, reformat template contents
  • Zotero import from clipboard shortcut uses Shift+Opt+Cmd+I, so set remap and make alternate diagnostic dialog shortcut (Shift+Opt+Cmd+H,H) available.
  • Add support for installing on CachyOS without distro override (it's just Arch, BTW)
  • Let the setup script install any custom keymapper branch via the CLI option (--dev-keymapper BRANCH_NAME) in addition to the default dev_beta branch
  • Add a keyboard device to the Apple list ('HP TouchPad Wireless Keyboard')
  • Fix the keypad fixes bypass condition so that it actually works
  • Use "--copies" in the venv command to reveal the true issue that happens after upgrading system Python version (missing Python library file from previous Python version). Only solution is reinstall older Python or reinstall Toshy to create a new venv.
  • New context module dedicated to network KVM switch software apps like Synergy, Deskflow, Input Leap and Barrier. Expands on the original Synergy-only solution.
  • New bootstrap script to allow a simpler single-command install option
  • Numerous launcher script tweaks to change appearance of process list
  • Better tagging of log output in systemd journal with custom names like toshy-config or toshy-kwin-dbus
Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.02.2...Toshy_v25.03.0

Toshy v25.02.2

17 Feb 11:52
6717ba9
Compare
Choose a tag to compare

Changes

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.

The pull list is deceptively short here, but there was a fundamental modification of how the environment context works. First the keymapper was changed, then the Toshy environment detection module was updated to give the keymapper the name of the window manager (or the Wayland compositor), instead of the "desktop environment", which often only has a loose relationship to the method needed to get window context.

This alteration of how things work could potentially cause some failures to get window context in some edge cases where the window manager doesn't get correctly identified. But I've tried to test in as many environments as I could to make sure window manager or Wayland compositor processes are identified accurately, so the keymapper can be automatically told to use the correct window context method. As always, there is only one method for X11/Xorg sessions, so the window manager doesn't actually matter. This is only a big deal for all the different Wayland environments that need different window context methods.

Also there were some files/folders renamed, and a lot of references to those files or folders had to be updated in a lot of different files. Mostly involving the KWin script and KWin DBus service being separated from just specific to "KDE", since a number of other desktop environments can use KWin as the window manager, or even use KWin as their default.

Please submit an issue report if you encounter any problems from these recent changes.

A new CLI command was added, to make the setup script install the coding/terminal font (Fantasque Sans Mono) that would normally be installed with the --fancy-pants flag, but without going through the whole Toshy install process:

  • ./setup_toshy.py install-font
Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.02.1...Toshy_v25.02.2

Toshy v25.02.1

09 Feb 03:29
1f4786a
Compare
Choose a tag to compare

Changes

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.

Just some clean-up work.

  • Remove commented-out older form of a replaced function in installer
  • Remove all references to obsoleted (and now deleted) env module
  • Version bumps of changed modules like the DBus service modules

The env module was replaced with the env_context module some time ago.

Auto-generated full release notes (click to expand):

What's Changed

Full Changelog: Toshy_v25.02.0...Toshy_v25.02.1