Hi Kareem, Thank you for your recommendation. Really nice to hear that somebody likes it. I have already asked Michael to add it on i3 ipc web page. And actually, it is already there:
http://build.i3wm.org/docs/ipc.html#_see_also_existing_libraries But that is still the latest development doc. I am not aware when it will be moved to the main stream. Thanks, Vitalii On Mon, Aug 3, 2015 at 5:14 PM, Kareem <kark...@gmail.com> wrote: > Hi all, > > Vitalii Elenhaupt pointed me to this i3 IPC library for ruby: > > https://github.com/veelenga/i3ipc-ruby > > which is a fork of the i3-ipc library mentioned on the i3 website. > > I would like to recommend that veelenga/i3ipc-ruby be added to the i3 > website, and badboy/i3-ipc be removed or at least marked as > unmaintained. veelenga/i3ipc-ruby is more featureful than badboy's > one, including the ability to subscribe to events. > > Kareem > > On 2015-06-02 1514, Tony Crisci wrote: > > This is a known bug with i3. Any command that does not include a > > `restart` should work correctly. Try to use `reload` whenever you > > can. If `reload` does not do something you think it should do that > > `restart` does, make an issue on github. > > > > https://github.com/i3/i3/issues/1581 > > > > On 06/02/2015 05:20 PM, Kareem Khazem wrote: > > > Hi all, wondering if somebody could tell me what's wrong with my > > > script that's trying to talk with i3's IPC. > > > > > > Whenever I try to read a reply from the socket, I apparently just > > > get an empty string. > > > > > > I've already read the warning about using a library and not > > > implementing my own, thanks, but the Ruby library is unmaintained > > > and doesn't include recent IPC features. > > > > > > I'm doing this: > > > > > > ___________________ 8>< snip ><8 > > > _____________________________________ #!/usr/bin/env ruby require > > > 'socket' socket = Socket.unix(`i3 --get-socketpath`.strip) > > > > > > payload = "restart" type = 0 length = payload.length > > > > > > bytes = socket.write("i3-ipc#{[length, > > > type].pack("LL")}#{payload}") > > > > > > response = socket.read.unpack("L") > > > ______________________________________________________________________ > > > > > > > > > `bytes' gets the number of bytes written, as expected, and i3 does > > > indeed restart, so the message was successful. But `response' > > > seems to be nil. If I just ask for socket.read, I just get the > > > empty string. > > > > > > Can anyone help? thanks! >