If your Bluetooth mouse speed resets after every restart on Linux Mint Cinnamon, the problem is usually that xinput changes are temporary.

Commands such as xinput set-prop only affect the current X11 session. After a restart, logout, or Bluetooth reconnect, those settings can reset.

The permanent fix is to configure the mouse in two places:

  1. Cinnamon’s persistent mouse settings
  2. Xorg/libinput device configuration

This guide is for Linux Mint Cinnamon running on X11.

1. Confirm You Are Using X11

Run:

echo $XDG_SESSION_TYPE

Expected output:

x11

If it says wayland, this Xorg config method will not apply.

2. Find Your Mouse Name

Run:

xinput list --name-only

Example output:

Virtual core pointer
Virtual core XTEST pointer
HP Bluetooth mouse Mouse
ASUP1204:00 093A:200C Touchpad

Find the exact mouse name.

Example:

HP Bluetooth mouse Mouse

You will use this exact name later in the Xorg config.

3. Test the Speed Temporarily

Before making the setting permanent, test it live:

xinput set-prop 'HP Bluetooth mouse Mouse' 'libinput Accel Speed' -0.35
xinput set-prop 'HP Bluetooth mouse Mouse' 'libinput Accel Profile Enabled' 0 1
xset m 1/1 4

Replace HP Bluetooth mouse Mouse with your actual mouse name.

If the speed feels right, continue.

4. Save Cinnamon Mouse Settings

Cinnamon can override mouse acceleration after login, so set its persistent mouse values too:

gsettings set org.cinnamon.desktop.peripherals.mouse speed -0.35
gsettings set org.cinnamon.desktop.peripherals.mouse accel-profile 'flat'

Verify:

gsettings get org.cinnamon.desktop.peripherals.mouse speed
gsettings get org.cinnamon.desktop.peripherals.mouse accel-profile

Expected output:

-0.34999999999999998
'flat'

5. Create the Permanent Xorg Config

Create a new config file:

sudo nano /etc/X11/xorg.conf.d/90-bluetooth-mouse-speed.conf

Paste this:

Section "InputClass"
    Identifier "Bluetooth mouse speed"
    MatchProduct "HP Bluetooth mouse Mouse"
    MatchIsPointer "on"
    MatchDevicePath "/dev/input/event*"
    Driver "libinput"
    Option "AccelSpeed" "-0.35"
    Option "AccelProfile" "flat"
    Option "AccelerationNumerator" "1"
    Option "AccelerationDenominator" "1"
    Option "AccelerationThreshold" "4"
EndSection

Replace this line:

MatchProduct "HP Bluetooth mouse Mouse"

with your actual mouse name.

For example:

MatchProduct "Logitech MX Master 3"

6. Restart

Restart the computer, or log out and log back in.

7. Verify After Restart

Run:

xinput list-props 'HP Bluetooth mouse Mouse' | grep -E 'Accel Speed|Accel Profile Enabled'

You should see something like:

libinput Accel Speed: -0.350000
libinput Accel Profile Enabled: 0, 1

Then check X pointer acceleration:

xset q | grep -A1 'Pointer Control'

Expected:

Pointer Control:
  acceleration:  1/1    threshold:  4

What Each Setting Does

AccelSpeed controls libinput pointer speed. Valid values are usually between -1 and 1.

AccelProfile set to flat disables adaptive acceleration and makes mouse movement more predictable.

AccelerationNumerator, AccelerationDenominator, and AccelerationThreshold match this command:

xset m 1/1 4

MatchDevicePath "/dev/input/event*" prevents the rule from incorrectly matching raw /dev/input/mouse* devices.

Troubleshooting

If the setting does not apply, check whether Xorg loaded the rule:

grep -i 'Bluetooth mouse speed\|AccelSpeed\|AccelProfile' /var/log/Xorg.0.log

If your mouse name changed, rerun:

xinput list --name-only

Then update the MatchProduct line in:

/etc/X11/xorg.conf.d/90-bluetooth-mouse-speed.conf

If Cinnamon still overrides the profile, run again:

gsettings set org.cinnamon.desktop.peripherals.mouse accel-profile 'flat'