I’m a robotics researcher. My interests include cybersecurity, repeatable & reproducible research, as well as open source robotics and rust programing.

This profile is from a federated server and may be incomplete. View on remote instance

CtrlAssist v0.4.0: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

CtrlAssist v0.4.0 introduces demultiplexing functionality along with enhancements to the system tray and rumble targeting. The updated README now features FAQ and Cookbook sections with practical examples, such as the "Double Agent Tag Team" scenario, where a single assist controller uses a demux to help multiple primary players...

CtrlAssist v0.4.0: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

CtrlAssist v0.4.0 introduces demultiplexing functionality along with enhancements to the system tray and rumble targeting. The updated README now features FAQ and Cookbook sections with practical examples, such as the "Double Agent Tag Team" scenario, where a single assist controller uses a demux to help multiple primary players...

CtrlAssist v0.4.0: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

CtrlAssist v0.4.0 introduces demultiplexing functionality along with enhancements to the system tray and rumble targeting. The updated README now features FAQ and Cookbook sections with practical examples, such as the "Double Agent Tag Team" scenario, where a single assist controller uses a demux to help multiple primary players...

ruffsl OP ,
@ruffsl@programming.dev avatar

This is cool! Still reading over the wiki yet, but do you know what they term multiplexing controllers as? I'd like to learn how they implement the same controller assist functionality for merging simultaneous inputs for the same axis.

There's very little documentation on how the property game consoles implement this accessibility feature, and I'd love to learn how others have implemented the signal mixing logic from a multi user input perspective.

CtrlAssist v0.3.0: Controller Assist for gaming on Linux ( github.com )

Announcing the release of CtrlAssist v0.3.0, which introduces significant new features and usability improvements. CtrlAssist brings "controller assist" functionality to Linux gaming by allowing multiple physical controllers to operate as a single virtual input device. This enables collaborative play and customizable gamepad...

CtrlAssist v0.3.0: Controller Assist for gaming on Linux ( github.com )

Announcing the release of CtrlAssist v0.3.0, which introduces significant new features and usability improvements. CtrlAssist brings "controller assist" functionality to Linux gaming by allowing multiple physical controllers to operate as a single virtual input device. This enables collaborative play and customizable gamepad...

CtrlAssist v0.3.0: Controller Assist for gaming on Linux ( github.com )

Announcing the release of CtrlAssist v0.3.0, which introduces significant new features and usability improvements. CtrlAssist brings "controller assist" functionality to Linux gaming by allowing multiple physical controllers to operate as a single virtual input device. This enables collaborative play and customizable gamepad...

ruffsl OP ,
@ruffsl@programming.dev avatar

Admittedly, it's pretty niche software. But for those who grew up using equivalents on gaming consoles such as Xbox or PlayStation, it was (still is) a pivotal accessibility feature.

And it's not necessarily only for those with physical disabilities or reflexive motor skill issues. Sometimes you'd like to introduce a really good story based game to a novice player that you know just doesn't have (yet or never) the coordination or muscle memory to complete it.

My grandparents never grew up playing videogames, and some of my nieces and nephews in the family are too young to grasp complex game mechanics. However, all of them really enjoyed playing with a control assist, where they could take the initiative in gameplay, like choosing dialogue options, steering saddled horses, flying broomsticks, exploring the world at their discretion, and I could just coast along in the backseat, fixing their camera angles, steering them back on course when lost, rescuing them in high stake combat encounters, etc.

In some ways, you could think about it as co-oping for single player games, but because it's per controller, you can do the same thing for multiplayer games as well. Like to help level the age gap in PvP games with your older sister versus your younger brother.

Before we ever played with control assist, I tried the classic method of tossing around the one controller like a hot potato, but it's just not the same in a number of ways. For one, having to relinquish a single controller really breaks immersion, as your suddenly fumbling about between living room chairs only your game characters on death's door from an unexpected boss encounter. It also deprives them of that haptics, where they can learn more easily attack patterns or UX interaction that conventionally telegraph via force feedback.

There is perhaps some functionality for solo players as well, such as splitting hand control across multiple gamepads. Like if your hands/arms were of different sizes, or you wanted to play other than with the controller on your lap, you could just easily dual wield controllers mux together the left and right sides-in-reach, or mux a regular handheld gamepad with something more like a Xbox Adaptive Controller for when dexterity or convenience demands.

Although, I think the majority of folks will find the assist co-op scenario for single player games the most appealing aspect. As others have replied on prior release posts, like parents helping their kids through their first playthrough ever, it's really an underrated feature for game consoles, and bringing that to gaming on Linux was really appreciated.

CtrlAssist v0.2.0: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

Excited to announce release v0.2.0 for CtrlAssist, adding rumble pass-through support and significant improvements to controller multiplexing! CtrlAssist brings "controller assist" functionality to Linux gaming by allowing multiple physical controllers to operate as a single virtual input device. This enables collaborative play...

ruffsl OP ,
@ruffsl@programming.dev avatar

Full disclosure AI is used, but I keep all transparent. You can read through GitHub PR reviews I use Copilot to rubber duck with, and committed the No Banana prompt for the banner logo in case folks where curious. I've a disability that impairs my typing, partly the motivation behind developing this projects, so I also use LLM to grammatically correct and format my voice dictated commits and tickets.

ruffsl OP ,
@ruffsl@programming.dev avatar

I'm no graphic artist, and with my disabilities it certainly would have taken me much longer to type out the same docs. Also, emojiis is what I grew up with back when AOL chat and sms char limits where the norm. LLMs have been a boon for assistive technology users, but admittedly a crux for those who less experience in computer science; though not much different from any double edge sword.

CtrlAssist v0.2.0: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

Excited to announce release v0.2.0 for CtrlAssist, adding rumble pass-through support and significant improvements to controller multiplexing! CtrlAssist brings "controller assist" functionality to Linux gaming by allowing multiple physical controllers to operate as a single virtual input device. This enables collaborative play...

CtrlAssist v0.2.0: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

Excited to announce release v0.2.0 for CtrlAssist, adding rumble pass-through support and significant improvements to controller multiplexing! CtrlAssist brings "controller assist" functionality to Linux gaming by allowing multiple physical controllers to operate as a single virtual input device. This enables collaborative play...

CtrlAssist: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

CtrlAssist – an open source project to bring more accessible, collaborative gaming to Linux! Inspired by PC gaming sessions with my own family, where both young and old relish exploring rich stories with immersive worlds (like Witcher 3, RDR3, Hogwarts Legacy, etc) but find coordinated combat or movement control too...

ruffsl OP ,
@ruffsl@programming.dev avatar

Indeed, I've encountered a few games on Steam that gracefully switch multiple controllers, but only by giving exclusive input on a first come-first-serve bases (i.e. which ever controller moves first after some cool down of inactivity from both). Hollow Knight: Silksong being one such example, as I couldn't necessarily drive separate axis from different controllers simultaneously, thus one such motivation for passing the game only one virtual controller and optionally hiding the rest to avoid input conflicts.

I'd be happy if Steam were to adopt such an accessibility feature into Steam input directly, much like Xbox and PlayStation. Perhaps they'll take more of an interest in multi controller configurations with the upcoming refresh of the Steam Controller, given the wireless dongle is meant for multi device pairing.

CtrlAssist: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

CtrlAssist – an open source project to bring more accessible, collaborative gaming to Linux! Inspired by PC gaming sessions with my own family, where both young and old relish exploring rich stories with immersive worlds (like Witcher 3, RDR3, Hogwarts Legacy, etc) but find coordinated combat or movement control too...

ruffsl OP ,
@ruffsl@programming.dev avatar

Indeed it's just a placeholder logo until a real human artist would like to contribute, as I'm no talented graphics designer myself. I still think it serves a purpose to quickly and visually illustrate what the project does, as all of the key words and terminology used by similar efforts never reached a consensus or becoming a household names.

Xbox initially called this Copilot (lol, on brand), Apple calls this buddy mode, PlayStation just filled it under Access™, so something to link words to an intuition is better than nothing at the moment. If you have any suggested SEO for folks to find this is that's what their looking for, let me know. I've been in the trench for too long to know less technical jargon folks would use.

I'm also already transparent in using AI for rubber duck sessions in the public pull requests, so anyone agents AI would already probably object to its origins.

ruffsl OP ,
@ruffsl@programming.dev avatar

oh, my hand typing was atrocious, that's what I get for not voice dictating with my regular assistive tech.

CtrlAssist: Controller Assist for gaming on Linux 🎮🤝 ( github.com )

CtrlAssist – an open source project to bring more accessible, collaborative gaming to Linux! Inspired by PC gaming sessions with my own family, where both young and old relish exploring rich stories with immersive worlds (like Witcher 3, RDR3, Hogwarts Legacy, etc) but find coordinated combat or movement control too...

ruffsl ,
@ruffsl@programming.dev avatar

Would be good to cross post this to:
https://programming.dev/c/nix

Why go through the trouble to use Arch?

May be a mean sounding question, but I’m genuinely wondering why people would choose Arch/Endevour/whatever (NOT on steam hardware) over another all-in-one distro related to Fedora or Ubuntu. Is it shown that there are significant performance benefits to installing daemons and utilities à la carte? Is there something else...

ruffsl , (edited )
@ruffsl@programming.dev avatar

I've observed some notable improvements when benchmarking with the CachyOS kernel on NixOS via Chaotic’s Nyx using moderately old hardware:

@ruffsl@programming.dev avatar ruffsl : Experimenting with CachyOS kernel on NixOS via Chaotic's Nyx - NixOS Discourse in Nix / NixOS

Haven't yet tried replicating the same comparison on newer hardware, but would be interested to see what others have tested. Any observations?

ruffsl OP ,
@ruffsl@programming.dev avatar

I could imagine bootstrapping via Bell Labs Unix from the 90's would be more authentic, yet demanding LFS experience. I wonder how far back computer historians could bootstrap up to a modern compiler for integrity and verification purposes?

https://www.owlfolio.org/research/bootstrapping-trust-in-compilers/

https://www.theregister.com/2025/11/07/unix_fourth_edition_tape_rediscovered/

ruffsl OP ,
@ruffsl@programming.dev avatar

Not sure if something like that would even support x86 or C99, so would probably still need an older mainframe and early GCC source tree. Could probably get by with a virtual emulator for the former.

ruffsl ,
@ruffsl@programming.dev avatar

I think you may need a successful switch to actually apply the addition of the proxy CA to your root CA store before attempting any other changes that could require reaching out across the network. At least that was the order of operations I had to follow to remove an offline remote cache before attempting any package updates.

ruffsl ,
@ruffsl@programming.dev avatar

You should be able to rebuild offline if the minimal change set is self contained enough, as in purely local. Did you update any other inputs? I guess you could be missing some kind of extra TLS or CA store dependency for adding custom CAs, but that doesn't seem likely for regular NixOS install. I use flakes instead of channels, so I wouldn't know what else may be blocked you. A stdout log may showcase your error more clearly.

ruffsl ,
@ruffsl@programming.dev avatar

I'm in search for the same white whale. There's quite a bit of documentation for multi-seat configurations for Linux, i.e. supporting the use of multiple screens and keyboards for separate simultaneous logins.

However I'd like to remote into a separate game scope session with its own human interface inputs and virtual audio and video outputs, as the same primary user normally logged in active desktop environment session. I'd like it so the remote and local sessions would not interfere with each other state, but without necessitating multiple Linux users for each session use case.

That last bit is what makes it more tricky and very niche. Supporting essentially multiple desktop environments probably demands separate user debus sockets. Using c groups via containers makes that viable, but like you, I also like to avoid containers and extensive volume mounts.

ruffsl OP ,
@ruffsl@programming.dev avatar

I wasn't sure if these results were specific to my older hardware, or more generalizable to newer systems.

ruffsl OP ,
@ruffsl@programming.dev avatar

I don't have resources to locally build an optimized kennel for every update for each of my systems, thus my interests in keeping with a community cache.

I didn't do much here, just swapped the kernel via config and ran some benchmarks. I posted as I was more curious to hear of what engineering trade offs may be at play, and what experience folks have had in daily driving CatchyOS's kernel patch sets.

ruffsl OP , (edited )
@ruffsl@programming.dev avatar

Compiling the Linux kernel from scratch takes over an hour on this laptop. Given I'm tracking the unstable channel on a rolling distro means doing that several times a week. Ain't nobody got time for that. Or at least I don't...

ruffsl OP ,
@ruffsl@programming.dev avatar

Appreciate the heads up. Looks like they use merge bots to auto update the package version JSON files for git packages, making for a very large/frequent commit history. Was that what made bisecting imposable?

I also see they pin the nixpkgs input, but do others normally modify that nixpkgs input to follow their global nixpkgs from their own system flake, or does that invalidate the use of Nyx community cache?