ruffsl

joined 3 years ago
MODERATOR OF
 

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 and customizable gamepad setups, making it easier for players of all ages and abilities to enjoy games together.

🎯 What's New

Rumble Pass-Through

Force feedback can now be forwarded to paired physical controllers! Configure which controller(s) receive rumble effects—route them to Primary, Assist, both, or neither. Share every haptic encounter from turbulence, engine failure, and hard landings with your co-pilot. Even better: if a controller disconnects mid-game (swapping batteries, USB cords, etc.), CtrlAssist automatically recovers and restores all force feedback effects when it reconnects.

Smoother Input Transitions

All assist modes now feature improved synchronization for more natural gameplay:

  • Joysticks snap cleanly: When assistance begins or ends, both X and Y axes update together—no more jarring diagonal-to-cardinal transitions
  • Toggle mode syncs instantly: Switching between Primary and Assist now mirrors the active controller's complete current state, eliminating phantom inputs from buttons or sticks that were held during the switch

Better Device Discovery

Controllers device trees are now discovered more reliably, preventing edge cases where multiple similar devices could cause conflicts. This also improves device hiding and rumble pass-through selection.

🛠️ Under the Hood

  • Refactored input handling for consistency across all three modes
  • Fixed button mapping quirks across physical and virtual device boundaries
  • Improved error handling and logging for edge cases and issue reporting
  • More graceful shutdown on Ctrl+C with robust cleanup

📦 Install and Upgrade

cargo install ctrlassist --force

Full changelog available at the GitHub release page.


Note: If you have experience with Arch or modding SteamOS, I could use also some help in fixing/documenting SteamDeck support, as I've not the hardware on hand and most of my Linux development has been on NixOS and Ubuntu thus far:

 

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 and customizable gamepad setups, making it easier for players of all ages and abilities to enjoy games together.

🎯 What's New

Rumble Pass-Through

Force feedback can now be forwarded to paired physical controllers! Configure which controller(s) receive rumble effects—route them to Primary, Assist, both, or neither. Share every haptic encounter from turbulence, engine failure, and hard landings with your co-pilot. Even better: if a controller disconnects mid-game (swapping batteries, USB cords, etc.), CtrlAssist automatically recovers and restores all force feedback effects when it reconnects.

Smoother Input Transitions

All assist modes now feature improved synchronization for more natural gameplay:

  • Joysticks snap cleanly: When assistance begins or ends, both X and Y axes update together—no more jarring diagonal-to-cardinal transitions
  • Toggle mode syncs instantly: Switching between Primary and Assist now mirrors the active controller's complete current state, eliminating phantom inputs from buttons or sticks that were held during the switch

Better Device Discovery

Controllers device trees are now discovered more reliably, preventing edge cases where multiple similar devices could cause conflicts. This also improves device hiding and rumble pass-through selection.

🛠️ Under the Hood

  • Refactored input handling for consistency across all three modes
  • Fixed button mapping quirks across physical and virtual device boundaries
  • Improved error handling and logging for edge cases and issue reporting
  • More graceful shutdown on Ctrl+C with robust cleanup

📦 Install and Upgrade

cargo install ctrlassist --force

Full changelog available at the GitHub release page.


Note: If you have experience with Arch or modding SteamOS, I could use also some help in fixing/documenting SteamDeck support, as I've not the hardware on hand and most of my Linux development has been on NixOS and Ubuntu thus far:

 

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 challenging to play solo, CtrlAssist lets you combine multiple controllers into one virtual gamepad, much like assist features on dedicated game consoles.

Whether your helping grandparents through tough boss fights, or co-oping with nieces and nephews to level age gaps, CtrlAssist aims to make PC gaming on Linux fun and accessible for everyone. While I’m certain similar utilities exist, I also just wanted a holiday hobby project to practice Rust development while scratching a personal itch.

Please give it a try, share your feedback in the relevant discussion categories, or check out the open issues if you’d like to contribute, help is always welcome!

#RustLang #LinuxGaming #Accessibility #OpenSource #CtrlAssist

 

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 challenging to play solo, CtrlAssist lets you combine multiple controllers into one virtual gamepad, much like assist features on dedicated game consoles.

Whether your helping grandparents through tough boss fights, or co-oping with nieces and nephews to level age gaps, CtrlAssist aims to make PC gaming on Linux fun and accessible for everyone. While I’m certain similar utilities exist, I also just wanted a holiday hobby project to practice Rust development while scratching a personal itch.

Please give it a try, share your feedback in the relevant discussion categories, or check out the open issues if you’d like to contribute, help is always welcome!

#RustLang #LinuxGaming #Accessibility #OpenSource #CtrlAssist

 

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 challenging to play solo, CtrlAssist lets you combine multiple controllers into one virtual gamepad, much like assist features on dedicated game consoles.

Whether your helping grandparents through tough boss fights, or co-oping with nieces and nephews to level age gaps, CtrlAssist aims to make PC gaming on Linux fun and accessible for everyone. While I’m certain similar utilities exist, I also just wanted a holiday hobby project to practice Rust development while scratching a personal itch.

Please give it a try, share your feedback in the relevant discussion categories, or check out the open issues if you’d like to contribute, help is always welcome!

#RustLang #LinuxGaming #Accessibility #OpenSource #CtrlAssist

 

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 challenging to play solo, CtrlAssist lets you combine multiple controllers into one virtual gamepad, much like assist features on dedicated game consoles.

Whether your helping grandparents through tough boss fights, or co-oping with nieces and nephews to level age gaps, CtrlAssist aims to make PC gaming on Linux fun and accessible for everyone. While I’m certain similar utilities exist, I also just wanted a holiday hobby project to practice Rust development while scratching a personal itch.

Please give it a try, share your feedback in the relevant discussion categories, or check out the open issues if you’d like to contribute, help is always welcome!

#RustLang #LinuxGaming #Accessibility #OpenSource #CtrlAssist

 

Related HN thread discussing NixOS:

 

Related discussion thread:

 

cross-posted from: https://lemmy.ml/post/38988050

4
submitted 8 months ago* (last edited 8 months ago) by ruffsl@programming.dev to c/linux@programming.dev
[–] ruffsl@programming.dev 0 points 10 months ago

@Ategon@programming.dev , this project's logo reminds me of your fun community icon artwork here.

[–] ruffsl@programming.dev 3 points 10 months ago (3 children)

IBM acquired the company behind Fedora Linux. Although I doubt they had any corporate influence in the production of this particular vlog.

I wonder if they would have had better luck with Kubuntu or KDE Neon? Perhaps if they're still on KDE by the time KDE releases their Arch distro variant, they could test that too on their hardware.

[–] ruffsl@programming.dev 11 points 10 months ago* (last edited 10 months ago)

Given the amount of trouble shooting demonstrated throughout the video, don't think the marketing was entirely positive...

[–] ruffsl@programming.dev 5 points 10 months ago

Appreciate the detailed context, and thank you for your work!

[–] ruffsl@programming.dev 1 points 10 months ago

The comment thread sparked a few new questions for me.

That will likely soon stop working because steam-run is no longer a grab bag for literally every library out there.

What recently changed with steam-run?

Is using pkgs.appimageTools.defaultFhsEnvArgs with pkgs.buildFHSUserEnv a suitable alternative?

   #!/usr/bin/env nix-shell

   { pkgs ? import <nixpkgs> { } }:

  (
    let base = pkgs.appimageTools.defaultFhsEnvArgs; in
    pkgs.buildFHSUserEnv (base // {
      name = "FHS";
      targetPkgs = pkgs: (with pkgs; [
        /* add additional packages here e.g */
        pcre
        tzdata
      ]);
      runScript = "bash";
      extraOutputsToInstall = [ "dev" ];
    })
  ).env
[–] ruffsl@programming.dev 4 points 11 months ago (1 children)

I'm basically deep into my learning phase of nix, and whenever I find something worthwhile, I like cross posting to read what others may think. It's also a handy means of "bookmarking", recalling what authors I've found so far and when I personally discovered them. Glad you appreciate the current deluge of posts.

[–] ruffsl@programming.dev 2 points 11 months ago

Check out the nix config repo from Unmoved Centre:

[–] ruffsl@programming.dev 5 points 11 months ago

It's a great video, and I hope the author is able to publish more nix content like this again soon. We'll just have to watch their blog's RSS feed in the meantime.

[–] ruffsl@programming.dev 2 points 11 months ago

Hello Patrick! Thanks for the writeup; gradually incorporating it into my config.

BTW, I recall reading a PR you started on fixing the fallback from failing substituters? This may be of interest to you:

[–] ruffsl@programming.dev 3 points 11 months ago (1 children)

That is a bizarre looking error. What architecture is your host system? Is your config repo publicly viewable? Installing tail scale is your only build issue?

[–] ruffsl@programming.dev 2 points 11 months ago (1 children)

Only not by itself, no? Couldn't it be combined with any of those X11 server apps for hosting a display socket over the local loop back?

view more: ‹ prev next ›