i have the exact same hardware, so i’ll throw in my 2c…

some of those issues are not my issues (i really dislike acceleration and always turn it off when possible.)

but the delay on two-finger-scrolling would drive me nuts, and i haven’t encountered it, nor have i noticed any pointer lag (likewise.)

this is an pretty stock ubuntu install, no weird drivers, no weird window managers, always perform all updates including those from lenovo and synaptics.

here’s the current xinput configuration for the device.

emb@inkpad:~$ xinput list-props 11
Device 'SynPS/2 Synaptics TouchPad':
	Device Enabled (142):	0
	Coordinate Transformation Matrix (144):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	Device Accel Profile (270):	1
	Device Accel Constant Deceleration (271):	1.000000
	Device Accel Adaptive Deceleration (272):	1.000000
	Device Accel Velocity Scaling (273):	12.500000
	Synaptics Edges (274):	1574, 5368, 1350, 4504
	Synaptics Finger (275):	25, 30, 0
	Synaptics Tap Time (276):	180
	Synaptics Tap Move (277):	252
	Synaptics Tap Durations (278):	180, 180, 100
	Synaptics ClickPad (279):	1
	Synaptics Middle Button Timeout (280):	0
	Synaptics Two-Finger Pressure (281):	282
	Synaptics Two-Finger Width (282):	7
	Synaptics Scrolling Distance (283):	-114, -114
	Synaptics Edge Scrolling (284):	0, 0, 0
	Synaptics Two-Finger Scrolling (285):	1, 1
	Synaptics Move Speed (286):	1.000000, 1.750000, 0.034880, 0.000000
	Synaptics Off (287):	0
	Synaptics Locked Drags (288):	0
	Synaptics Locked Drags Timeout (289):	5000
	Synaptics Tap Action (290):	0, 0, 0, 0, 1, 3, 2
	Synaptics Click Action (291):	1, 3, 2
	Synaptics Circular Scrolling (292):	1
	Synaptics Circular Scrolling Distance (293):	0.100000
	Synaptics Circular Scrolling Trigger (294):	0
	Synaptics Circular Pad (295):	0
	Synaptics Palm Detection (296):	1
	Synaptics Palm Dimensions (297):	10, 200
	Synaptics Coasting Speed (298):	20.000000, 50.000000
	Synaptics Pressure Motion (299):	30, 160
	Synaptics Pressure Motion Factor (300):	1.000000, 1.000000
	Synaptics Resolution Detect (301):	1
	Synaptics Grab Event Device (302):	0
	Synaptics Gestures (303):	1
	Synaptics Capabilities (304):	1, 0, 0, 1, 1, 1, 1
	Synaptics Pad Resolution (305):	65, 44
	Synaptics Area (306):	0, 0, 0, 0
	Synaptics Soft Button Areas (307):	0, 0, 0, 0, 0, 0, 0, 0
	Synaptics Noise Cancellation (308):	28, 28
	Device Product ID (266):	2, 7
	Device Node (265):	"/dev/input/event4"

the most relevant properties are

	Device Accel Profile (270):	1
	Device Accel Constant Deceleration (271):	1.000000
	Device Accel Adaptive Deceleration (272):	1.000000
	Device Accel Velocity Scaling (273):	12.500000

as you can see i have them set to be totally linear. i can’t remember if this was the default or if i tweked it at some point with xinput --set-prop 11 'Device Accel Constant Deceleration' <val>, &c.

tweaking the mix of initial velocity scaling, constant and adaptive deceleration should get you closer to the apple behavior, where an initial fast movement gives big travel, and subsequent deceleration gives you more accuracy. here’s more on that stuff: https://www.x.org/wiki/Development/Documentation/PointerAcceleration/

… and i think if you read through that document, you’ll agree that it’s a little unfair to accuse linux developers of not caring enough about this stuff. if anyhting the problem is that there are many options, and a lack of consensus about the desired behavior (so the default is very plain.) in apple-land, consensus isn’t an issue, everyone gets the same experience no matter how extreme.

…i would be shocked if you couldn’t find some people invested in matching apple trackpad behavior with xinput configs. linux is nice because you can do that if you want, or do something else if you want.

3 Likes

also have thinkpad (x220), trackpad is turned off in bios because of trackpoint :slight_smile: once you get used to it you just cant go back

2 Likes

thanks for the tips and perspective— i apologize to open-source people everywhere that my critique came off with such aggression.

1 Like

Same computer here, same solution. I went from being unfamiliar with the trackpoint and thinking it was the stupidest thing ever, to using it and wondering why every laptop doesn’t have one. It’s the ideal pointer device IMO.

2 Likes

:slight_smile:that’s a great solution

today I got a shell script together
(MBP mid2012, elementaryJuno)

vi cpufreq-setPerformance.sh

cpufreq-set -c 0 -g performance &&
cpufreq-set -c 1 -g performance &&
cpufreq-set -c 2 -g performance &&
cpufreq-set -c 3 -g performance &&
exit 0

chmod +x cpufreq-setPerformance.sh

sudo ./cpufreq-setPerformance.sh

smart to have qjackctl switch it back on stop,
made another shell script to switch back to powersave

1 Like

How do y’all manage JACK routing? Just click & drag in QjackCtl? I find it incredibly tedious, so I wrote a little node app to make the connections and it’s somewhat scratching that itch. I want to add some features to it before I share it with the world, but I’d like to see how much i’m reinventing the wheel first.

2 Likes

Yeah, by hand basically. I don’t really find that to be extremely tedious.

Unrelated, but is your avatar from the movie Bright Future?!

1 Like

Doesn’t the patchbay in qjackctl do the job? I never add connections by hand, except when I (rarely) get new hardware or software…

1 Like

That works, as does the patchbay in Carla / Cadence / Catia etc.

1 Like

Yes! You are the first person to recognize it in my 10+ years of using it!

1 Like

I found Carla/Cadence to be flaky/crashy and it never saved my setup properly. I have a 12 I/O interface I don’t always use, and some applications with 8+ outs whose connections I change fairly often. Also I use PulseAudio with JACK so I don’t have to switch off JACK to watch YouTube (EDIT: and it always starts with on the wrong outputs). Maybe I am just doing multi-channel I/O wrong (I’m new to this world) but it definitely takes a few minutes to set things up clicking and dragging. That said, I have not figured out the built-in persistence yet.

What I’d like to be able to do is use a text-based UI to list the application and device ports and specify ranges of them to plug in. Like if I have 16 outputs from Renoise, maybe I want to pipe the first 4 into Reaper and the rest into SuperCollider, and then send the SC outs into Reaper. So I’d select each of those apps, then select a range, then select the destination app/device and a starting port, preferably with a keyboard. Would that scratch anyone else’s itch? Am I just being a noob about routing?

I’ve just tried aj-snapshot to save and restore the connections in Catia. It’s quite a simple solution, but for now it seems to be working well.

2 Likes

Ah, this is nice, right up my alley. Are the snapshots pretty easy to edit? Sounds like they are in XML.

Yes, they’re in XML and you can use a text-editor if you want to edit it.

seems something a shell script using jack_connect and jack_lsp -c (from memory, lists all active clients) would do.

4 Likes

With one exception I find Carla working reliably (I currently have a setup with 16 outgoing Supercollider ports where I use port 3 to 10 routed to different plugins such as Tal reverb; for specific reasons I can not use port 1 and 2 in my setup but on startup of my Carla *.carpx file the will always be linked to system out… but that’s just a minor flaw).

If you have the energy you can file an issue, falkTX is very responsive in my experience and and realy tries to help.

1 Like

I must be missing something here. You are already using qjackctl, did you try it’s buildin patchbay? It’s rock steady here, and has been for at least 12 years.

I’m not talking about carla/cadence, never tried them…

1 Like

There are many applications that do this, most of them have already been mentioned but for a quick overview: It ranges from simple command-line commands you can put in your own scripts like jack_connect to applications that allow saving and restoring all connections like aj-snapshot (command-line) or qjackctl’s patchbay.

Then there are also session managers which not only save and restore connections but also the applications themselves (applications can also be something like jalv to host a single plugin) like LADISH which you can use from the command-line using ladish_control or with a GUI like Claudia (there’s also gladish but it’s not really received any updates in recent years, I’d suggest to use Claudia) or alternatively there’s NSM (No Session Manager) which at the moment seems to be winning the session manager “battle”/becoming the session manager of choice for Linux audio.

P.S. Carla is primarily a plugin host but also contains a patchbay. If you run into an issue I’d suggest like @mbutz mentioned to file an issue on GitHub, FalkTX generally responds quickly.

P.P.S. I don’t know how you implemented what you have in Node/if there are JS/node bindings for JACK but running a node app for managing some connections seems pretty heavy, if you can’t find an application you’re happy with and prefer to write actual code instead of a shell script using jack_connect you could try https://github.com/spatialaudio/jackclient-python

2 Likes

No node-JACK bindings - super low-tech, it’s just running shell commands and parsing stdout. The only non-trivial part is reconciling the current connections with the desired connections.

Yes I’ve been using the patchbay and it works fine. I dislike the clicky draggy workflow just barely enough to put effort into seeking/making an alternative. After all, i3-wm was one of the draws of the Linux desktop for me!