github cymian/mouseless v1.0.0

2 days ago

Mouseless v1.0 is here! This release adds several major enhancements, stability and functionality fixes across all platforms.

Feedback always appreciated! (Mac Windows Linux)

Preview users: Changes are minimal since preview.5, mostly targeted toward Wayland Linux input handling. See ## Preview users section.

Mac users: The user data location has changed. You may see a one-time, temporary permissions prompt to "access data from other apps" so Mouseless can migrate the data. If you prefer to not grant this permission, you can perform the migration manually with a terminal command (see usage notes).

Linux users: The AppImage files are being retired in favor of a single, robust flatpak distribution. See usage notes for installation instructions and additional info. An ARM build is not yet available, but will be added in the near-term.

Windows users:

  • This release enables Mouseless to now show above all privileged system elements (e.g. Start menu, task manager) -- see Usage notes for context on installation requirements.
  • I recently renewed the code signing certificate. You may see a SmartScreen warning (should still display Sonuscape as the verified publisher) while the ecosystem ingests the new cert. Click More Info > Run Anyway to proceed with the install.

macOS Security Note

Mouseless is no longer sandboxed, to allow for in-place updates. This is standard practice for apps distributed outside the App Store, including those with accessibility permissions. All standard security measures remain in place.

Preview users - changes since v1.0.0-preview.5

  • Fixed move to next/previous monitor hotkey leaking into underlying app
  • Wayland Linux:
    • Added excluded input devices field, prevents mouseless from taking control of specified devices
      • Use --list-input-devices CLI arg to view device names / id's
    • Added fixed vendor id 736e for Mouseless' virtual devices, so you can exclude them from other input-grabbing apps
    • Fixed show overlay hotkey leaking into underlying app
    • Fixed bug where keys can get stuck after executing a command

Enhancements

Overlay

  • Multi-color backgrounds
    • Please see the 'background' section in the docs, or this video for info on how to use.
    • There are some new built-in Style presets (at the bottom of the list, starting with rgb_position_based), with colors that align with the either the position_based_16_9 or the position_based_columns Grid presets
  • Added Char display field for hiding the level 1 char, or both chars
  • Added invert colors command (in the 'overlay' section of the keymap), allows you to invert all the colors on the overlay, which can help with visibility at times. Execute it again to toggle back (and forth).
  • Made comma and period 50% larger for visibility (and semicolon 25% larger)
  • Default grid settings now match the position_based_columns preset
  • Increase/decrease opacity commands now available on platforms
  • Added char anchor setting, to control whether characters are spaced center-to-center (default) or edge-to-edge

Free mode

  • Added hold for free mode command (marked as 'beta')
  • macOS: Added subpixel tracking for smoother free mode movement
  • macOS 14+: Added Free mode status display setting, allows for a dot indicator at the cursor instead of (or in addition to) the toast window. Default: "both"
    • Indicator size, color, and offset are customizable (in Style > HUD section)

Mouse

  • Modifier+clicks now available on all platforms
  • Added modifier clicks for free mode back and forward buttons, and all global mouse buttons
  • Added Mouse value cycle behavior, affects cycle button/action/count commands
    • once - value returns to default after executing an action (default)
    • persist - value remains after executing an action, until cycled again
  • Added Default action setting: click, move or drag
    • Sets the action that execute mouse action performs
  • Added explicit left click command for overlay

Display

  • Added Toast opacity setting, allows you to prevent toast from overly-obscuring underlying screen content. Default: 0.5
  • macOS: Status bar icon now shows a lock when macOS' "secure input" mode is active (i.e. a password field is active -- Mouseless hotkeys will be disabled)

Misc

  • Linux is now distributed via flatpak for improved cross-distro compatibility and easy updates (see usage notes below)
  • macOS: In-place, automatic updates (ARM-only)
  • Deep link support, for programmatic invocation from other apps
    • e.g. mouseless://toggle-overlay
    • 8 commands
      • toggle-overlay, show-overlay, hide-overlay
      • toggle-free-mode, enter-free-mode, exit-free-mode
      • toggle-enabled, settings

UX / Quality-of-life

  • Consolidated update-related settings into General config section
    • Settings... menu item now opens consolidated settings window
    • user_prefs.yaml file deprecated/removed
  • Settings window has buttons on the side for quick scrolling to sections
  • Color input mode allows you to show/hide text entry fields (rgb hex) for color values
  • Improved config error handling
    • On startup, gracefully falls back to individual defaults (instead of entire default config)
  • Ctrl+S saves the config when editor open

Debug / logging

  • Added log_level config field
  • A new log file is now created per session (up to 10 stored)
  • Added force overlay resize command
  • Added reset keyboard state command
  • Added --print-hid-events-verbose / -P cli flag (prints mouse move and wheel events)
  • Added extra state diagnostics (in menu > Debug > Copy state diagnostics)
  • macOS: Added Hud window level setting -- may fix issues when using software that captures displays

Fixes

  • The toggle overlay lock feature is now more robust, which is particularly handy when editing the multi-color background settings.
  • Fixed conflicts when multiple free mode commands mapped to same key, one with modifier and one without
  • Fixed tap commands in free mode leaking to underlying app
  • Fixed modifiers in keybinding affecting mouse action commands (resulting in unintended modifier+click)

Mac

  • Fixed issue where simultaneous keypresses can cause hotkeys to stop working (due to internal modifier state de-syncing from OS)
  • Fixed overlay not showing over fullscreen apps
  • Fixed overlay not showing on first activation after switching spaces
  • Fixed escape not closing 'find' widget in config editor
  • Fixed free mode default hotkeys (back mouse button now Q, forward mouse button now W)

Windows

  • The overlay now shows above all system elements, but has specific installation requirements. See usage notes below.
    • Portable and non-privileged installs: Overlay will show above taskbar in most situations, but not start menu, task manager, etc.
  • Fixed overlay resize / reposition when screen changes detected
  • Fixed overlay triggering the 'do not disturb' icon in system tray, which shifted click targets
  • Fixed //? key on Brazilian keyboard layout (other non-English keys may be fixed as well)

Linux - Overlay rendering on NVIDIA

Some changes have been made to address rendering issues encountered on NVIDIA cards.

By default, if an NVIDIA GPU is detected, Mouseless will now use a cairo-backed overlay with DMABUF rendering disabled, otherwise, a webview-backed overlay with DMABUF rendering will be used.

Note that the cairo-backed overlay does not yet have the following features: highlight_animation, dots and dashed grid_line_styles, and always_show_subgrid.

The cairo-backed overlay avoids the buffer clearing / opacity buildup issues seen with the prior --no-compositing / WEBKIT_DISABLE_COMPOSITING_MODE workarounds -- these flags are still respected, but likely not needed (the dmabuf option / default should fix the blank windows, but with better performance).

To override the defaults, use the following config debug_options fields, or cli flags (cli takes precedence):

  • overlay_renderer / --overlay-renderer, values: cairo or webview
  • use_dmabuf / --use-dmabuf, values: true or false

Usage notes

Alternate workflow: Quick select + free mode

There is a built-in quick select + free mode preset in the Behavior > Mouse actions section. It allows you to quickly choose screen location coarsely with the overlay, then use free mode for finer movement before clicking or dragging. It has these settings:

  • Grid action level: 2
  • Default action: move
  • Free mode after move: true

There's an accompanying standard preset (subgrid, click, false).

A forthcoming release will allow you to switch between presets with a command/hotkey (including grid and style presets) for quick switching between different setups/workflows.

macOS - User data has a new location

The user data location has changed, to prevent disk access permission prompts related to the old sandbox location. Your data (configs, license, presets) now lives at:

~/Library/Application Support/Mouseless/

If you have existing user data, Mouseless will copy it to the new location automatically. You may see a one-time "Mouseless.app would like to access data from other apps" prompt — click Allow (the permission is temporary) and your settings will carry over.

If you'd prefer not to grant that permission, click Don't Allow, then run this command in Terminal to perform the data copy, then restart Mouseless:

mkdir -p ~/Library/Application\ Support/Mouseless
cp -R ~/Library/Containers/net.sonuscape.mouseless/Data/.mouseless/. \
      ~/Library/Application\ Support/Mouseless/

Windows overlay / installation notes

For Mouseless to show the overlay above Start Menu, task manager, etc., you must:

  • choose to install for 'all users'
  • install to a privileged location like Program Files (default)

This requires admin privileges during the installation process only, not when actually running Mouseless.

The installer provides an option to uninstall other/prior installations at different locations, checked by default. Your user data is not affected by the uninstallation.

Linux Flatpak distribution

Flatpak allows Mouseless' dependencies to be fully self-contained, for greater compatibility across distros and a more robust, stable application. It also allow for easy updates with flatpak update or through software management apps (GNOME Software, Discover, etc).

Quick start (recommended method):

# Add GPG-signed repo
flatpak remote-add --user --if-not-exists sonuscape \
  https://dl.sonuscape.net/flatpak/sonuscape.flatpakrepo

# Install mouseless (stable channel)
flatpak install net.sonuscape.mouseless

# Run
flatpak run net.sonuscape.mouseless

To install the preview channel, use flatpak install net.sonuscape.mouseless//preview.

See updated docs for full context and alternate install methods (including standalone bundle).

Don't miss a new mouseless release

NewReleases is sending notifications on new releases.