Accessibility Feature - Click Lock

I’m looking for help on how to enable the accessibility feature, mouse click lock, for moving windows around. Its been available in Windows for as long as I can remember. Over the years I’ve tried adopting Linux as my primary desktop OS but go back to Windows after struggling with missing accessibility features in Linux. I spent the weekend working with AI on how to enable Quickdrag in NixOS but struck out.

Technology should be used to overcome barriers.

Thanks,
David

This may be what you want: https://search.nixos.org/packages?channel=26.05&query=kmousetool It works differently (it autoclicks when you hover in a spot for X seconds), but may suffice.

There’s also GitHub - germag/clicklockd: With clicklockd, you can highlight or drag without holding the mouse button. · GitHub which no one has packaged in nixpkgs yet (though you can definitely package it in your own config if you like, then submit a PR to nixpkgs if you find it helpful).

Also to mention, I personally use an environment that supports window tiling, so windows can be moved around with keyboard shortcuts rather than mouse movement. But that might be a huge departure from what you’re used to, so I didn’t suggest that as a primary option.

Specifics would depend on whether you’re using KDE, GNOME, or something else.

Thanks,

The hover did not lock. I am using GNOME and apparently Wayland is a barrier to enabling lock. I’ve tried the dwell/hover in the past. Pretty frustrating. Microsoft has it figured out. Not sure why those accessibility features are present in all desktop OSes.

I worked over a day with Copilot before moving on to Gemini. Gemini managed to get a working config.

# Mouse click lock
# Intercept middle button

systemd.services.trackpoint-toggle = {
description = "Trackpoint Middle-to-Left Toggle Latch";
wantedBy = [ "multi-user.target" ];
after = [ "systemd-udev-settle.service" ];
serviceConfig = {
Restart = "always";
RestartSec = "2s";
ExecStart = ''
${pkgs.evsieve}/bin/evsieve 
--input /dev/input/by-path/platform-i8042-serio-1-event-mouse grab 
--map btn:middle:1 btn:left@toggle 
--output
'';
};
};

# Enforce Sticky Keys
programs.dconf.profiles.user.databases = [{
settings = {
"org/gnome/desktop/a11y/keyoard" = {
stickykeys-enable = true;
stickykeys-two-key-off = false;
};
};
}];

environment.systemPackages = with pkgs; [
pkgs.evsieve
];