Releases: RedBearAK/toshy
Toshy v25.07.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 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
- Remove comment, Plasma window title context fixed by @RedBearAK in #655
- Add update on fixed Plasma KWin script (titles) by @RedBearAK in #656
- Set PATH better, ver bump config file by @RedBearAK in #657
- Handle bugs in Deepin/DDE and deepin-terminal by @RedBearAK in #658
- Add support for Mageia Linux by @RedBearAK in #659
- Add note on Mageia support being added by @RedBearAK in #660
- Fix the monkey patch for Tk 9 by @RedBearAK in #661
- Ver bump for fix of Tk 9 patch by @RedBearAK in #662
- Re-order some distro lines, add Mageia comment by @RedBearAK in #663
- Refine DNF installer method code, log output by @RedBearAK in #664
- Update or remove some comments by @RedBearAK in #665
- Round volume percentage to whole numbers by @RedBearAK in #667
- Remove Shellcheck warning SC2006 (backticks) by @RedBearAK in #668
- Rename primary installer functions by @RedBearAK in #669
- F-strings unnecessary in message block by @RedBearAK in #670
- Add text links to sponsor buttons by @RedBearAK in #671
- Add multi-tap to default config files by @RedBearAK in #673
Full Changelog: Toshy_v25.06.1...Toshy_v25.07.0
Toshy v25.06.1
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 tocaptionChanged
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
- Stage 'epel-release' pkg cmd change for later by @RedBearAK in #642
- Clean up indicator menu autostart options by @RedBearAK in #643
- Show dimmed menu item if non-systemd init by @RedBearAK in #644
- Fix issues with some shortcuts in Vivaldi browsers by @RedBearAK in #646
- Enhancements of Mac startup sound volume script by @RedBearAK in #647
- Fix Cmd+Space on Xfce (AlmaLinux/Rocky) by @RedBearAK in #648
- Use heredoc for easier editing of text block by @RedBearAK in #649
- Make the services restart script more deliberate by @RedBearAK in #650
- Reformat some error output to look better by @RedBearAK in #651
- Fix alignment issue in output by @RedBearAK in #652
- Fix alphabetical order of files by @RedBearAK in #653
- Improved KWin script (detects window title changes) by @RedBearAK in #654
Full Changelog: Toshy_v25.06.0...Toshy_v25.06.1
Toshy v25.06.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 single command.
Changes
- Add
sudo-rs
as anothersudo
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
- Fix typo in tray menu descriptions by @RedBearAK in #630
- Add sudo-rs as possible sudo alternative by @RedBearAK in #631
- Support AnduinOS (Ubuntu-based distro) by @RedBearAK in #632
- Fix for Tk 9 ver check and thread safety by @RedBearAK in #638
- Thread-safe GTK indicator menu/icon updates by @RedBearAK in #640
- Version bump tray icon/indicator app by @RedBearAK in #641
Full Changelog: Toshy_v25.05.1...Toshy_v25.06.0
Toshy v25.05.1
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
- Support setting startup sound volume on Macs by @RedBearAK in #626
- Add vendor and arch checks by @RedBearAK in #627
Full Changelog: Toshy_v25.05.0...Toshy_v25.05.1
Toshy v25.05.0
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
- Fix the persistence of uinput module by @RedBearAK in #615
- Update list-distros cmd notes on distro variants by @RedBearAK in #618
- Do not prompt for reboot for uinput setup by @RedBearAK in #620
- Let method ensure its own preconditions by @RedBearAK in #621
- Add new GNOME tray indicator ext to check for by @RedBearAK in #622
- Bump setup script version by @RedBearAK in #623
- Add support for ALT Linux distro by @RedBearAK in #624
- Version bump setup script (ALT Linux support) by @RedBearAK in #625
Full Changelog: Toshy_v25.04.0...Toshy_v25.05.0
Toshy v25.04.0
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
- Unicode shortcut confirmed to work with fcitx5 by @RedBearAK in #585
- Remove notices about tapping mod key in X11 by @RedBearAK in #586
- Standardize use of 'screen_has_focus' variable by @RedBearAK in #587
- Update how install works on Debian distros by @RedBearAK in #588
- Bump setup version by @RedBearAK in #589
- Password handling, other setup improvements by @RedBearAK in #592
- Use 'bind' keyword on all tab nav shortcuts by @RedBearAK in #593
- Correct typo in README by @RedBearAK in #595
- Detect 'zorin' desktop environment by @RedBearAK in #602
- Normalize 'zorin' DE to 'gnome' by @RedBearAK in #603
- Fix Zorin Xfce Cmd+Space remap by @RedBearAK in #604
- Ver bump config and env_context by @RedBearAK in #605
- Fix for KDE 5 applied, but was unnecessary by @RedBearAK in #607
- Update some info in README by @RedBearAK in #608
- Install 'kwin-addons' only in Debian KDE by @RedBearAK in #609
- Fix Cmd+Space remap on Ubuntu MATE by @RedBearAK in #610
- Match process names with extra path elements by @RedBearAK in #612
- Add more potential Python versions for RHELs by @RedBearAK in #614
Full Changelog: Toshy_v25.03.1...Toshy_v25.04.0
Toshy v25.03.1
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 importPATH
(venv
location ended up inPATH
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
- Change attribution comment link to Kinto repo by @RedBearAK in #560
- Bump default config versions by @RedBearAK in #561
- Remove PATH from import-environment variables by @RedBearAK in #563
- Catch odd trinity DE name 'default' by @RedBearAK in #564
- Version bump env_context module by @RedBearAK in #565
- Update current status section (KVM apps) by @RedBearAK in #566
- Avoid syntax error in svcs log on logout by @RedBearAK in #567
- Minor modification of setup script by @RedBearAK in #568
- Add note about what "working" DE/WM means by @RedBearAK in #570
- Rework RHEL-type pkg logic to be less delicate by @RedBearAK in #571
- Make some logic blocks more explicit/clear by @RedBearAK in #572
- Change terminal delete word shortcut to Ctrl-w by @RedBearAK in #574
- Improved, more flexible bootstrap script by @RedBearAK in #575
- Disable shellcheck warning SC2086 by @RedBearAK in #576
- Improve script that refreshes shortcuts on KDE by @RedBearAK in #580
- Chimera support, doas/run0 support by @RedBearAK in #581
- Add note about new doas/run0 support by @RedBearAK in #582
- Update "How to Install" with link to bootstrap scr by @RedBearAK in #583
Full Changelog: Toshy_v25.03.0...Toshy_v25.03.1
Toshy v25.03.0
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
ortoshy-kwin-dbus
Auto-generated full release notes (click to expand):
What's Changed
- Handle more Ptyxis app classes by @RedBearAK in #537
- Handle unpatched xdg-open utility on Plasma 6 by @RedBearAK in #539
- Add window mgr, rework bug report template by @RedBearAK in #541
- Fix Zotero import from clipboard shortcut by @RedBearAK in #542
- Add CachyOS to known distro IDs (Arch-based) by @RedBearAK in #544
- Solve some ancient mystery remaps by @RedBearAK in #545
- Allow custom keymapper branch name on CLI by @RedBearAK in #546
- Treat 'HP TouchPad Wireless Keyboard' as Apple kbd by @RedBearAK in #548
- Use the correct argument name (not_devn) by @RedBearAK in #549
- Remove old notice about KDE 5 to 6 updates by @RedBearAK in #550
- Call directly on the Python inside the venv path by @RedBearAK in #551
- Use "--copies" to make Python error clearer by @RedBearAK in #553
- New KVM module, many script tweaks by @RedBearAK in #557
- Update the bootstrap to show how to cd to folder by @RedBearAK in #558
Full Changelog: Toshy_v25.02.2...Toshy_v25.03.0
Toshy v25.02.2
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
- Reworking environment context setup by @RedBearAK in #531
- Add description of "just works" nature of project by @RedBearAK in #532
- Trinity window mgr is 'twin' by @RedBearAK in #533
- Oreon 10, 'install-font' command by @RedBearAK in #534
- Rework env context, setup script by @RedBearAK in #536
Full Changelog: Toshy_v25.02.1...Toshy_v25.02.2
Toshy v25.02.1
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
- Add blank line to KDE check output by @RedBearAK in #525
- Remove older commented-out function by @RedBearAK in #526
- Remove all refs to obsolete/deleted env module by @RedBearAK in #527
Full Changelog: Toshy_v25.02.0...Toshy_v25.02.1