Open The-Dumb-Dino opened 9 months ago
It is possible to add support for Darwin systems?
Unfortunately I don't think it's possible.
I may have done a mistake in setting up the bridge but I am not certain.
The bridge relies on direct calls to the Linux kernel for operations beyond the Wine prefix.
I tried using the version you said and I'm getting this error after some minutes (playing ULTRAKILL btw)
I couldn't reproduce the issue you're having (unless I kill Discord). I updated the bridge to retry the connection in this build.
With the last build I'm getting this error:
Im launching the bridge, then launching the app
Weird, I tested on macOS Monterey and it works without any issues. What version of macOS you are running? How did you launch the bridge?
I'm on MacOS Sonoma (Using Whisky btw). I launch the executable from the gui and then launch steam and my game.
I see, the issue is that the bridge can't get $TMPDIR
: https://github.com/EnderIce2/rpc-bridge/blob/5d0e6c40267231a03e127af113be2668fe6f1536/bridge.c#L169
Unfortunately, $TMPDIR
is not hard-coded and I don't know yet how to get it without getenv()
.
Launching Whisky from the terminal may work?
I may be able to find a solution. How do you launch the progam on your machine? Also does $TMPDIR changes or it is a static value?
This is currently my bash script to launch Steam and the bridge.exe:
#!/bin/bash
echo "$TMPDIR"
WINEDEBUG="fixme-all" WINEPREFIX="/Users/marlon/Library/Containers/com.isaacmarovitz.Whisky/Bottles/AA8F5A78-D5C8-47C9-910E-56E81DEEB64A" GST_DEBUG="1" WINEESYNC="1" WINEDLLOVERRIDES="dxgi,d3d9,d3d10core,d3d11=n,b" DXVK_ASYNC="1" /Users/marlon/Library/Application\ Support/com.isaacmarovitz.Whisky/Libraries/Wine/bin/wine64 start /unix /Users/marlon/Library/Containers/com.isaacmarovitz.Whisky/Bottles/AA8F5A78-D5C8-47C9-910E-56E81DEEB64A/drive_c/bridge.exe
WINEDLLOVERRIDES="dxgi,d3d9,d3d10core,d3d11=b" WINEPREFIX="/Users/marlon/Library/Containers/com.isaacmarovitz.Whisky/Bottles/AA8F5A78-D5C8-47C9-910E-56E81DEEB64A" WINEDEBUG="fixme-all" GST_DEBUG="1" DXVK_ASYNC="1" WINEESYNC="1" /Users/marlon/Library/Application\ Support/com.isaacmarovitz.Whisky/Libraries/Wine/bin/wine64 start /unix /Users/marlon/Library/Containers/com.isaacmarovitz.Whisky/Bottles/AA8F5A78-D5C8-47C9-910E-56E81DEEB64A/drive_c/Program\ Files\ \(x86\)/Steam/steam.exe
When I run it from the terminal (./launch.sh), it returns:
/var/folders/kp/jpy0mvxn6dsdcybqh96j39ph0000gn/T/
esync: up and running.
So the variable is correctly set, but not accessible in the program. How am I supposed to launch the program with the args then?
Ok so I did some changes and I added --rpc
argument
Add --rpc "$TMPDIR"
at the end of
(...) /drive_c/bridge.exe --rpc "$TMPDIR"
The binary: bridge.zip
Okay! This seems to work. After narrowing the problem a bit more, I found that this was Whisky's fault as it escapes env variables 😅. Appart from that, the problem where the bridge was printing EOF is also fixed. Thanks for the work and help :D!
Got another problem on mac sorry 😅
After playing 5-10min of ULTRAKILL, i get the error: EOF count exeeded
Here's the logs:
:"P-2: WAIT OF THE WORE WORLD","small_image":"6807LD","small_image":"rank_b","sm
all_text":"Brutal"}56752073228391","small_text":"Brutal"},"party":{},"secrets":{
},"name":"ULTRAKILL","application_id":"68,"party":{},"secrets":{},"instance":tru
e}}}E0748054038577165","flags":1,"type":{"cmd":"SET_ACTIVITY","nonce":"31","ev
t":null,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":
"STYLE: 772","timestamps":{"start":1716054213},"assets":{"large_image":"missing"
,"large_text":"P-2: WAIT OF THE WORLD","small_image":"rank_b","small_text":"Brut
al"},"party":{},"secrets":{}0},"evt":null,"nonce":"25"}"
,"instance":true}}}E{"cmd"Reading 76 bytes from unix pipe: "D{"code":1003,"me
ssage":"data size does not match what was received"}"
:"SET_ACTIVITY","nonce":"32","evt":n"
EOF
Failed to write to socket: -32
Writing 1024 bytes to unix pipe: "ull,"args":{"pid":1384,"activity":{"state":"DI
FFICULTY: STANDARD","details":"STYLE: 781","timestamps":{"start":1716054213},"as
sets":{"large_image":"missing","large_text":"P-2: WAIT OF THE WORLD","small_imag
e":"rank_b","small_text":"Brutal"},"party":{},"secrets":{},"instance":true}}}E
{"cmd":"SET_ACTIVITY","nonce":"33","evt":null,"args":{"pid":1384,"activity":{"st
ate":"DIFFICULTY: STANDARD","details":"STYLE: 799","timestamps":{"start":1716054
213},"assets":{"large_image":"missing","large_text":"P-2: WAIT OF THE WORLD","sm
all_image":"rank_b","small_text":"Brutal"},"party":{},"secrets":{},"instance":tr
ue}}}E{"cmd":"SET_ACTIVITY","nonce":"34","evt":null,"args":{"pid":1384,"activi
ty":{"state":"DIFFICULTY: STANDARD","details":"STYLE: 815","timestamps":{"start"
:1716054213},"assets":{"large_image":"missing","large_text":"P-2: WAIT OF THE WO
RLD","small_image":"rank_b","small_text":"Brutal"},"party":{},"secrets":{},"inst
ance":true}}}E{"cmd":"SET_ACTIVITY","nonce":"35","evt":null,"args":{"pid":1384
,"a"
Failed to write to socket: -32
Writing 1024 bytes to unix pipe: "ctivity":{"state":"DIFFICULTY: STANDARD","deta
ils":"STYLE: 839","timestamps":{"start":1716054213},"assets":{"large_image":"mis
sing","large_text":"P-2: WAIT OF THE WORLD","small_image":"rank_b","small_text":
"Brutal"},"party":{},"secrets":{},"instance":true}}}E{"cmd":"SET_ACTIVITY","no
nce":"36","evt":null,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDAR
D","details":"STYLE: 848","timestamps":{"start":1716054213},"assets":{"large_ima
ge":"missing","large_text":"P-2: WAIT OF THE WORLD","small_image":"rank_b","smal
l_text":"Brutal"},"party":{},"secrets":{},"instance":true}}}E{"cmd":"SET_ACTIV
ITY","nonce":"37","evt":null,"args":{"pid":1384,"activity":{"state":"DIFFICULTY:
STANDARD","details":"STYLE: 857","timestamps":{"start":1716054213},"assets":{"l
arge_image":"missing","large_text":"P-2: WAIT OF THE WORLD","small_image":"rank_
b","small_text":"Brutal"},"party":{},"secrets":{},"instance":true}}}E{"cmd":"S
ET_ACTIVITY","nonce":"38","evt":null,"args":{"pid":1384,"activity":{"state":"DIF
FIC"
Failed to write to socket: -32
Writing 1024 bytes to unix pipe: "ULTY: STANDARD","details":"STYLE: 866","timest
amps":{"start":1716054213},"assets":{"large_image":"missing","large_text":"P-2:
WAIT OF THE WORLD","small_image":"rank_b","small_text":"Brutal"},"party":{},"sec
rets":{},"instance":true}}}E{"cmd":"SET_ACTIVITY","nonce":"39","evt":null,"arg
s":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE: 884"
,"timestamps":{"start":1716054213},"assets":{"large_image":"missing","large_text
":"P-2: WAIT OF THE WORLD","small_image":"rank_b","small_text":"Brutal"},"party"
:{},"secrets":{},"instance":true}}}E{"cmd":"SET_ACTIVITY","nonce":"40","evt":n
ull,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STY
LE: 893","timestamps":{"start":1716054213},"assets":{"large_image":"missing","la
rge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_b","small_text":"Brutal"}
,"party":{},"secreEOF
ts":{},"instance":true}}}E{"cmd":"SET_ACTIVITY","nonce":"41","evt":null,"args"
:{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details""
Failed to write to socket: -32
Writing 1024 bytes to unix pipe: ":"STYLE: 902","timestamps":{"start":1716054213
},"assets":{"large_image":"missing","large_text":"P-2: WAIT OF THE WORLD","small
_image":"rank_b","small_text":"Brutal"},"party":{},"secrets":{},"instance":true}
}}E{"cmd":"SET_ACTIVITY","nonce":"42","evt":null,"args":{"pid":1384,"activity"
:{"state":"DIFFICULTY: STANDARD","details":"STYLE: 911","timestamps":{"start":17
16054213},"assets":{"large_image":"missing","large_text":"P-2: WAIT OF THE WORLD
","small_image":"rank_b","small_text":"Brutal"},"party":{},"secrets":{},"instanc
e":true}}}E{"cmd":"SET_ACTIVITY","nonce":"43","evt":null,"args":{"pid":1384,"a
ctivity":{"state":"DIFFICULTY: STANDARD","details":"STYLE: 920","timestamps":{"s
tart":1716054213},"assets":{"large_image":"missing","large_text":"P-2: WAIT OF T
HE WORLD","small_image":"rank_b","small_text":"Brutal"},"party":{},"secrets":{},
"instance":true}}}E{"cmd":"SET_ACTIVITY","nonce":"44","evt":null,"args":{"pid"
:1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE: 929","timesta
mps"
Failed to write to socket: -32
Writing 183 bytes to unix pipe: "":{"start":1716054213},"assets":{"large_image":
"missing","large_text":"P-2: WAIT OF THE WORLD","small_image":"rank_b","small_te
xt":"Brutal"},"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
Writing 335 bytes to unix pipe: "G{"cmd":"SET_ACTIVITY","nonce":"45","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 929","timestamps":{"start":1716054213},"assets":{"large_image":"missing","larg
e_text":"P-2: WAIT OF THE WORLD","small_image":"rank_a","small_text":"Anarchic"}
,"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
Writing 672 bytes to unix pipe: "H{"cmd":"SET_ACTIVITY","nonce":"46","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1064","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_a","small_text":"Anarchic"
},"party":{},"secrets":{},"instance":true}}}H{"cmd":"SET_ACTIVITY","nonce":"47
","evt":null,"args":{"pid":1384,"activity":{"state":"DIFEOF
FICULTY: STANDARD","details":"STYLE: 1097","timestamps":{"start":1716054213},"as
sets":{"large_image":"missing","large_text":"P-2: WAIT OF THE WORLD","small_imag
e":"rank_a","small_text":"Anarchic"},"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
Writing 336 bytes to unix pipe: "H{"cmd":"SET_ACTIVITY","nonce":"48","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1119","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_a","small_text":"Anarchic"
},"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
Writing 334 bytes to unix pipe: "F{"cmd":"SET_ACTIVITY","nonce":"49","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1119","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_b","small_text":"Brutal"},
"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
Writing 334 bytes to unix pipe: "F{"cmd":"SET_ACTIVITY","nonce":"50","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1084","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_b","small_text":"Brutal"},
"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
EOF
Writing 336 bytes to unix pipe: "H{"cmd":"SET_ACTIVITY","nonce":"51","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1084","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_a","small_text":"Anarchic"
},"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
Writing 336 bytes to unix pipe: "H{"cmd":"SET_ACTIVITY","nonce":"52","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1345","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_a","small_text":"Anarchic"
},"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
EOF
Writing 336 bytes to unix pipe: "H{"cmd":"SET_ACTIVITY","nonce":"53","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1532","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_a","small_text":"Anarchic"
},"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
Writing 670 bytes to unix pipe: "G{"cmd":"SET_ACTIVITY","nonce":"54","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1532","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_s","small_text":"Supreme"}
,"party":{},"secrets":{},"instance":true}}}G{"cmd":"SET_ACTIVITY","nonce":"55"
,"evt":null,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","detai
ls":"STYLE: 1657","timestamps":{"start":1716054213},"assets":{"large_image":"mis
sing","large_text":"P-2: WAIT OF THE WORLD","small_image":"rank_s","small_text":
"Supreme"},"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
Writing 335 bytes to unix pipe: "G{"cmd":"SET_ACTIVITY","nonce":"56","evt":nul
l,"args":{"pid":1384,"activity":{"state":"DIFFICULTY: STANDARD","details":"STYLE
: 1828","timestamps":{"start":1716054213},"assets":{"large_image":"missing","lar
ge_text":"P-2: WAIT OF THE WORLD","small_image":"rank_s","small_text":"Supreme"}
,"party":{},"secrets":{},"instance":true}}}"
Failed to write to socket: -32
EOF count exceeded
Failed to write to socket: -32
means broken pipe
I guess the buffer is too small? Try this build:
bridge.zip
And let me know if the issue is fixed.
After some testing, I haven't encountered an error for a long while 👍
I've just had an idea to support installing in the wine prefix on MacOS. You said it was not possible due to the $TMPDIR folder changing each reboot. What if there was a simple bash script that launched with launchctl every reboot, and that symlinked the $TMPDIR folder to a static path? If you don't know how to do that on Mac, I would be glad to help.
After some tinkering, I managed to make it work! Here's a bare bone fix. Basically, you have to use the macos.sh
bash script to create a launchd agent that will symlink the $TMPDIR
folder to /tmp/rpc-bridge/tmpdir
. This allows to use the service in MacOS. Here's the release: https://github.com/OrigamingWasTaken/rpc-bridge-macos-fix/releases/tag/0.0.1
Oh wow! I didn't know about launchd agent. I will look in your code and integrate the patches, if that is okay.
If you want, I can make a pull request once you're done reviewing the code. Some things may be strange because I don't know C very well.
Yes, the code is okay, you can make a pull request.
I made a pull request :D https://github.com/EnderIce2/rpc-bridge/pull/3
I made a pull request :D https://github.com/EnderIce2/rpc-bridge/pull/3
I don't know if this is the right place to ask but I really can't get it to work on macOS 15.0.1 on my m2 mac air with whisky
What are you having trouble with?
I can't get the bridge working. I have done the extra steps for macOS for the launch agent and I have followed the documentation but I just can't get my game activity in whisky to show on my discord (modded with vencord). The rpc-bridge just won't work for me.
Macbook air m2 macOS 15.0.1 and 15.1.
Does this directory exist for you?
/tmp/rpc-bridge/tmpdir
It does yes.
Have you opened the bridge.exe file manually at least once?
I have yes
Does RPC work if you uninstall the windows service (by opening the bridge.exe and clicking Remove), start the bridge manually, and start your game? If it doesn't, what program are you trying to get working?
I swear I tried that and it didn't work. Now it works if I just start the service. It only works for rain world though. If I try little nightmares 1 it won't show the rpc.
Will I have to just start the service manually everytime I play a game?
Will I have to just start the service manually everytime I play a game?
No you shouldn't have to. @EnderIce2 It's been a long time since I looked at your code, could you guide us on where to find the logs and maybe other debugging information?
Sure, the logs are in C:\windows\logs\bridge.log
.
Will I have to just start the service manually everytime I play a game?
The service should start by itself if it's installed using the GUI. Weird...
I think I got it working with the install option instead of "start" option. I can get it to work when I have my games located in ~/documents/games/...
I couldn't get it to work with steams default directory for game installation files. I do not know why it didn't work before. I can say that I somehow was able to get it working.
It is possible to add support for Darwin systems? I may have done a mistake in setting up the bridge but I am not certain.