I am not sure that Parallels will be able to solve this unless they re-design their ToolGate interface to present a virtual touchpad to the guest when the host is driven by the touchpad. I looked into the issue of smooth scrolling on Linux several times and it is not such a happy environment in this sense, there are dragons out there.
A good and _very_ comprehensive read on the topic can be found over there: https://pavelfatin.com/scrolling-with-pleasure/ . I short even if Parallels do everything they can to provide a precision pointer it is unlikely that you will get the smooth and responsive scrolling in the system. A good start would be to switch to libinput and ensure that you are ready for any changes Parallels may introduce to their ToolGate interface.
For example, right now on a Linux guest where the pointer is driven by libinput you can see the following:
Code:
[galaxy@archlinux ~]$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Parallels Virtual Mouse id=8 [slave pointer (2)]
⎜ ↳ Parallels Virtual Mouse id=9 [slave pointer (2)]
⎜ ↳ ImExPS/2 Generic Explorer Mouse id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Sleep Button id=7 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
Here, pointer with id 8 is the whatever device is managing your cursor in the host system mapped to the virtual device presented by Paralles to your guest. I don't know why we have 3 different interfaces through the ToolGate, though.
Code:
[galaxy@archlinux ~]$ xinput list 8
Parallels Virtual Mouse id=8 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 8. Type: XIButtonClass
Buttons supported: 11
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back"
Button state:
Class originated from: 8. Type: XIValuatorClass
Detail for Valuator 0:
Label: Abs X
Range: 0.000000 - 65535.000000
Resolution: 0 units/m
Mode: absolute
Current value: 35505.458221
Class originated from: 8. Type: XIValuatorClass
Detail for Valuator 1:
Label: Abs Y
Range: 0.000000 - 65535.000000
Resolution: 0 units/m
Mode: absolute
Current value: 40043.388977
Class originated from: 8. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Scroll
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 8. Type: XIValuatorClass
Detail for Valuator 3:
Label: Rel Vert Scroll
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 8. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 15.000000
flags: 0x0
Class originated from: 8. Type: XIScrollClass
Scroll info for Valuator 3
type: 1 (vertical)
increment: 15.000000
flags: 0x0
Above, you may have spotted that the increment for scrolling is 15, so it is going to be quite jumpy. Usually, you can adjust these settings if the device exposes some capabilities for adjusting the scroll speed, however, with the current implementation the list of supported capabilities is just the following:
Code:
[galaxy@archlinux ~]$ xinput list-props 8
Device 'Parallels Virtual Mouse':
Device Enabled (116): 1
Coordinate Transformation Matrix (118): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Natural Scrolling Enabled (255): 0
libinput Natural Scrolling Enabled Default (256): 0
libinput Middle Emulation Enabled (257): 0
libinput Middle Emulation Enabled Default (258): 0
libinput Calibration Matrix (259): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (260): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Left Handed Enabled (261): 0
libinput Left Handed Enabled Default (262): 0
libinput Send Events Modes Available (238): 1, 0
libinput Send Events Mode Enabled (239): 0, 0
libinput Send Events Mode Enabled Default (240): 0, 0
Device Node (241): "/dev/input/event3"
Device Product ID (242): 8250, 65532
libinput Drag Lock Buttons (263): <no items>
libinput Horizontal Scroll Enabled (264): 1
[galaxy@archlinux ~]$
So we are missing capabilities to actually fine tune the scrolling. You may try to use "evdev" driver that does support adjustments of the scroll speed, but still do not expect it to be on par with what you have on your macOS.