Skip to content

Releases: engineer948/ds4-bridge-linux

1.0

Choose a tag to compare

@engineer948 engineer948 released this 24 Oct 11:51
f7cce58

DS4 Bridge 1.0 🎮

The biggest update so far: a full settings window, per-game profiles, gyro aiming, desktop mode and an AppImage that runs on most distros.

⬇️ Download

  • DS4_Bridge-1.0-x86_64.AppImage (recommended): download, chmod +x, run.
  • ds4_bridge_tray: plain executable.

Both need glibc 2.34+: Ubuntu 22.04+, Debian 12+, Linux Mint 21+, Fedora 35+, Arch and other rolling distros. On older systems, compile from source (see README).

✨ New

  • Settings window with tabs for buttons, sticks & rumble, gyro and desktop mode
  • Full button remapping: every button (incl. Share / Options / PS, L3 / R3, D-pad) can be mapped to any Xbox button or disabled
  • Per-game profiles: switch automatically while a game runs (e.g. eldenring.exe) and switch back when it closes
  • Gyro aiming with the right stick or mouse pointer, with calibration (needs working motion sensors; many clones don't have them)
  • Desktop mode (PS + Options): use the controller as mouse and keyboard
  • Controller test window: see stick drift live and pick the right deadzone
  • Round deadzone per stick, rumble strength, invert Y, swap sticks, digital triggers
  • Virtual controller type: Xbox 360, Xbox One S or DualShock 4 (PlayStation button icons)
  • Battery per controller with charging indicator
  • One-click fix for /dev/uinput permissions
  • Languages: English and Azərbaycanca
  • Works with both Ayatana and legacy AppIndicator automatically, with a classic tray icon as fallback

🐛 Fixed

  • Changing the button mapping while playing could leave a button stuck
  • Status showed "Running" even when /dev/uinput could not be opened
  • Battery could be read from a mouse or headset instead of the controller
  • Two tray instances could run at the same time
  • The log file grew without limit (now capped at 1 MiB)

⚠️ Notes

  • Settings moved to ~/.config/ds4-bridge/settings.ini; your old settings.json is imported automatically.
  • Logs are now in ~/.local/state/ds4-bridge/.
  • On GNOME, the "AppIndicator and KStatusNotifierItem Support" extension is needed to see the tray icon.

🛡️ VirusTotal

AppImage scan

0.8

0.8 Pre-release
Pre-release

Choose a tag to compare

@engineer948 engineer948 released this 15 Oct 14:05
db35eae

DS4 Bridge Tray 0.8

✨ New

  • Settings are now saved. Every tray option is kept in settings.json
    and restored on the next launch:

    • Button remapping (Cross, Circle, Square, Triangle, L1, R1, L2, R2)
    • Controller count (1–4)
    • Touchpad (mouse) on/off
    • Logging on/off
    • Deadzone %

    The file is stored next to the executable, so it is found no matter
    which folder you start the app from.

  • ♻️ Reset Settings menu item. After you confirm, it deletes settings.json
    and restores the defaults right away. A running bridge restarts with the default settings.

🔧 Changed

  • No more prompt on quit. Quitting used to ask whether to delete the log file,
    even when logging was turned off. Now Quit just closes the app.
  • Log cleanup moved to the logging toggle. When you uncheck 📝 Enable Logs,
    the app immediately asks whether to delete the old log file. Choose Yes to
    delete it or No to keep it. Turning logging back on does not ask anything.

📝 Notes

  • 🚀 Start on Login is still stored in ~/.config/autostart/ and is
    not affected by Reset Settings.
  • settings.json is only created after you change a setting for the first time.

⬇️ Download

wget https://github.com/engineer948/ds4-bridge-linux/releases/download/0.8/ds4_bridge_tray && chmod +x ds4_bridge_tray

0.7

0.7 Pre-release
Pre-release

Choose a tag to compare

@engineer948 engineer948 released this 06 Oct 14:22
71db0a3

✨ New

  • 🚀 Start on Login toggle in the tray menu. One click turns autostart on or off.
    It uses the standard XDG autostart entry (~/.config/autostart/ds4_bridge_tray.desktop),
    so it works on GNOME, KDE Plasma, XFCE, Cinnamon, MATE and other desktops, and doesn't need root.
  • --start command-line flag for ds4_bridge_tray. It starts the bridge as soon as the
    app opens. The autostart entry uses this flag, so your controller is ready right after login
    without opening the menu.

0.6

0.6 Pre-release
Pre-release

Choose a tag to compare

@engineer948 engineer948 released this 06 Oct 11:06
5c323b7

🚀 What's New in v0.6:

🔔 Native Desktop Notifications: You will now receive beautiful, native system notifications whenever a controller is physically connected or disconnected. Never guess whether your PC recognized the controller again!

0.5

0.5 Pre-release
Pre-release

Choose a tag to compare

@engineer948 engineer948 released this 05 Oct 19:31
794a467

🚀 What's New in v0.5: The Remapping Update
Following our major shift to a purely native C monolithic application in v0.4, this new release introduces one of the most requested features: Live Button Remapping, built entirely from scratch with zero external dependencies!

✨ Key Features & Improvements
Live Button Remapping: A brand new 🎮 Button Remapping section has been added to the Tray Menu. You can now instantly swap and map your buttons directly from your taskbar!
Full Face Button Control: Don't like the standard Xbox layout? Map Cross (X), Circle (O), Square (☐), and Triangle (△) to any A, B, X, Y combinations you desire (Perfect for those who prefer the Nintendo-style layout).
Bumper & Trigger Swaps: Easily swap L1 with R1, or L2 with R2 with just a click.
Instant Application: All mapping changes happen in real-time under the hood without needing to restart the bridge or your games.
Pure C Implementation: This massive feature was implemented without relying on heavy external mapping libraries or daemons. It's built right into the native evdev loop, meaning zero input lag overhead.
Still 100% Python-Free: Continues to build on the legacy of v0.4, offering a lightning-fast, memory-leak-free, and thread-safe GTK3 interface.

0.4

0.4 Pre-release
Pre-release

Choose a tag to compare

@engineer948 engineer948 released this 05 Oct 18:30
8c70da1

🚀 What's New in v0.4: The "Pure C" Update
This is a massive architectural update! The bridging engine and the Graphical System Tray application have been completely unified.

We have successfully eliminated the Python dependency, resulting in a single, lightning-fast, and standalone C executable (ds4_bridge_tray). This major shift provides significant performance improvements and drastically reduces the resource footprint on your system.

✨ Key Features & Improvements
Goodbye Python! 🐍➡️🚀 The old ds4_tray.py script has been entirely retired. The UI logic is now natively written in C utilizing GTK3 and AppIndicator.
Zero Dependencies at Runtime: Running the tray app no longer requires Python 3 or gir1.2 bindings on the user's end. Just download the executable and run it!
Robust Multi-Threading: Designed using pthread and atomic variables (<stdatomic.h>). The GTK Main loop and the low-level uinput event listener now run in complete harmony without blocking each other.
Non-blocking Battery Notifications: Low battery warnings (<=20%) are now triggered seamlessly in the background without halting the controller's I/O polling.
Safe Log Management: Complete pthread_mutex locks ensure that log writings are perfectly thread-safe, avoiding race conditions or corrupted log texts. View logs directly from the tray without needing a terminal!
Memory Leak Free: Strict C99/C11 standards have been applied. Dynamic memory allocations and GTK Window destructions are carefully monitored and freed on exit.

0.3

0.3 Pre-release
Pre-release

Choose a tag to compare

@engineer948 engineer948 released this 05 Oct 07:50
0e684ff

🔋 What's New in v0.3? (The Battery Update!)
⚡ Live Battery Indicator: The Python Tray Application now actively monitors your knockoff controller's battery! Just click the tray icon and you'll see your live battery percentage directly in the menu (e.g., Battery: 80% 🔋).
🔔 Low Battery Notifications: Never let your controller die mid-game again. If your battery drops to 20% or below, the tray app will now send a sleek native Linux desktop notification to warn you. It has a built-in anti-spam feature, so it only warns you once per low-battery cycle!
🔍 Aggressive Battery Discovery: Knockoff DS4s often hide their battery status under generic HID names. We've completely rewritten the battery detection logic to aggressively scan the Linux /sys/class/power_supply tree, ensuring maximum compatibility with third-party controllers.
📖 Documentation Updates: Cleaned up the open-source acknowledgments and updated all download links to point to the shiny new v0.3.
Installation: Simply download the files below or run the updated one-click terminal command from the README.md!

0.2

0.2 Pre-release
Pre-release

Choose a tag to compare

@engineer948 engineer948 released this 05 Oct 07:21
252c847

What's New in v0.2?
🎮 Analog Stick Deadzone Support (Anti-Drift): Cheap/knockoff controllers often suffer from analog stick drift. We've added a new software deadzone filter! You can now use the -z parameter to set a custom deadzone percentage. (Example: Running ./ds4_bridge -z 15 will completely ignore 15% of the center stick movement, keeping your camera steady in games).
🐧 More Distros Supported: Added explicit dependency installation instructions for Fedora and Arch Linux in the documentation.
⚡ One-Click Download: Improved the terminal download command. It now downloads both files and automatically gives them execution (chmod +x) permissions in one go.
🛡️ Clean & Safe: Fully tested. 0 false positives on VirusTotal!

wget https://github.com/engineer948/ds4-bridge-linux/releases/download/0.2/ds4_bridge https://github.com/engineer948/ds4-bridge-linux/releases/download/0.2/ds4_tray.py && chmod +x ds4_bridge ds4_tray.py

0.1

0.1 Pre-release
Pre-release

Choose a tag to compare

@engineer948 engineer948 released this 04 Oct 15:35
252c847
Add files via upload