discord-rpc
in favour of their new GameSDK, which meant a special pipe would need to be used instead of just dropping a DLL in like you could before. However, since only WS11 Wine engines can run 64-bit engines, Techno’s bridge wouldn’t work, which meant we have to look towards 0e4ef622 upstream base fork (since Techno’s fork only adds 64-bit support for Catalina), however that wouldn’t work (and then I had ran out of time to keep looking into the issue)winediscordrpc
into Google will fetch you a large number of results, but here are just a few:discord-rpc.dll
file is no longer used. Instead, we look towards a C# wrapper.discord-rpc.dll
file bundled with the binary at the very least confirms they have moved to GameSDK. However, since osu! is written in C# (it uses .NET) it has two possible implementations of GameSDK - the Unity implementation and the non-Unity implementation.DiscordController.cs
script that gets attached to the main scene (in osu!lazer’s case, osu.Desktop
), the C# without Unity implementation relied on a mini library + a DLL file in the same directory as the executable file (sound familiar?).drive_c/osu!
you won’t find the discord_game_sdk
files, including .bundles
or .dll
. And the presence of the osu/osu.Desktop/DiscordRichPresence.cs
file in the osu!lazer codebase really does suggest that osu! has a Unity-esque implementation of GameSDK..dll
or similar library files.pipediscord-ipc-0
to Unix named pipes (e.g /run/user/{userid}/discord-ipc-0
). (Technocoder’s fork converts 0e4ef622’s to 64-bit system calls, if you’re interested)ShellExecuteExfailed:Filenotfound
), but after running the Wineskin under a Test Run, the Test logs revealed a BadEXEformatforC:osu!bridge.exe
. This meant that Wineskin wasn’t able to run the 64-bit program provided by Techno, which makes much more complete sense considering there isn’t a ProgramFiles(x86)
folder under slc’s Wineskin and that running the file
command on both files (in my local Terminal) revealed that they were in fact differing in architecture.PE32
[32-bit] while bridge is PE32+
[64-bit])Clientconnected.
)WINEPREFIX
or something else entirely, however, I’ve already spent enough time trying to get Discord RPC working and my research ends here. But I think this discussion, even if it is overcomplicated and probably unnecessary, could help other people trying to get Rich Presence properly working under Wine (at least with the existing bridges) and these are basically just my research notes for if I ever want to work on this again.