<adamcstephens>
river[39293]: error(text_input): inactive text input tried to commit an update, client bug?
<adamcstephens>
where do i start with this?
<adamcstephens>
or can turn it off? i'm getting it with every keypress in ghostty :/
eShaev9z_ has joined #river
eShaev9z has quit [Ping timeout: 255 seconds]
adamcstephens has quit [Remote host closed the connection]
adamcstephens has joined #river
angry_vincent has joined #river
tiosgz has joined #river
<tiosgz>
adamcstephens: if this only happens with ghostty, it may very well be their bug
<tiosgz>
analyzing a short WAYLAND_DEBUG log of both ghostty and the input method may reveal something
winter has joined #river
leviathan has joined #river
<tiosgz>
ifreund: did i understand corretly that we should act as if the wiki were world-writable? (except for obvious bad changes, of course)
<leon-p>
I don't think it is word writable? Not everyone has merge access
<tiosgz>
i meant in the sense that we should just merge everything
<leon-p>
ah, I see
<leon-p>
well, I personally wouldn't be super comfortable merging information I can not confirm
<leon-p>
btw, super happy about the river organisation officially assimilating the previously inofficial members :]
<leviathan>
Guys, I have a simple technical question: how do I get a surface's parent?
<leviathan>
I know I can get the layerSurface by using wlr.LayerSurfaceV1.tryFromWlrSurface, but what if the parent isn't a layerSurface?
<leviathan>
It could be a View or something else? How should I go about obtaining this object?
<leon-p>
Have you checked the pointer movement handler? It has to get the View from a surface for focus-follows-cursor
<leon-p>
you can get the View from the scene node if you have that: SceneNodeData.fromNode(node).?.data can be .view
<leviathan>
Thank you, I just went to check the code in the Cursor.zig file
<leviathan>
I found that this is done by obtaining the corresponding view through the result of server.root.at(x, y), essentially maybe via the current coordinates?
<leviathan>
But what I'm trying to implement is an ime_popup, where only a surface object is available for use.
<leviathan>
I can only determine the parent's position based on this surface to then set the popup's position.
<leviathan>
This is quite puzzling to me. I went on to read Sway's code, and I found that they implemented their own view_from_wlr_surface.
<leon-p>
yeah for that you don't want to use that, I remembered the innards wrongly or things got changed since I last touched cursor code
<leviathan>
Before that, I also read through some PRs in dwl, where I found they have a toplevel_from_wlr_surface
<leviathan>
However, I don't think River needs to implement a similar functionality just to use it once in ime_popup
<leviathan>
So, I've been thinking that maybe my understanding of the code isn't sufficient, which is why I'm asking here, looking forward to everyone's help.
<tiosgz>
XdgToplevel sets the .data fields on some wlroots structs. this suggests it's also used somewhere
<tiosgz>
generally if you only need to do this "conversion" once, you can inline it, otherwise a function makes sense (or this is how i remember it)
<leon-p>
wlr.Surface has .data, but I have no idea /what/ it is set to...
<leon-p>
there is wlr_xdg_toplevel_try_from_wlr_surface(), which gets xdg_surface via wlr_xdg_surface_try_from_wlr_surface(wlr_surface)
<leon-p>
from the toplevel I think the View is rather easy to get
<leviathan>
Thank you very, very much. I'll give it a try as soon as possible :)
<leon-p>
I don't think zig-wlroots exposes that though, at least I could not find it. So use XdgSurface.tryFromWlrSurface(), which returns ?.*wlr.XdgSurface and move on from there
<leon-p>
Maybe we should document all that pointer soup eventually...
mohan43u has quit [Quit: WeeChat 4.2.1]
<leviathan>
Indeed, I might have gotten too excited. I just checked the code for zig-wlroots, and it indeed doesn't have this method.
<tiosgz>
if you need it, you can bind it (and send a pull request). the fact it isn't bound means only that no-one has needed it yet
mohan43u has joined #river
<leviathan>
Thank you very much. I'll give it a try.
tiosgz has quit [Quit: tiosgz]
leopoldek has quit [Remote host closed the connection]
leviathan has quit [Quit: Client closed]
winter has quit [Ping timeout: 250 seconds]
<ifreund>
tiosgz: Yeah, Id say think of it as world writable with basic quality control :)
<ifreund>
I wouldn't stress too much about accidentally merging something slightly incorrect
lbia has quit [Quit: lbia]
mrfoxpro has joined #river
<mrfoxpro>
Hi. How can I programmatically set view tags?
tiosgz has joined #river
<tiosgz>
ifreund: thanks :)
<tiosgz>
mrfoxpro: could you expand your question? right now i can only point you to riverctl manpage and point out that tags are given in base-10, but the numbers are treated as bitmasks
rdbo has joined #river
<mrfoxpro>
tiosgz I have a rule for view with tag. While working, I can accidentially move view to another tag. And I want to make script that will move window to it initial / correct tag instead of killing and reopening it.
<mrfoxpro>
There's known app-id and title of that view
<mrfoxpro>
In manual I found only way to set tag for current focused view.
<tiosgz>
ah. this is definitely not possible with riverctl. i don't know if the foreign-toplevel-management is capable of this and if river supports the necessary part of it
mrfoxpro has quit [Ping timeout: 250 seconds]
mrfoxpro has joined #river
mrfoxpro has quit [Quit: Client closed]
mrfoxpro has joined #river
mrfoxpro has quit [Client Quit]
mrfoxpro has joined #river
<mrfoxpro>
Do I understand that this is wayland restriction and can't be done by river?
<adamcstephens>
tiosgz: looks like kitty also reports the same text_input error
<adamcstephens>
i can capture a WAYLAND_DEBUG, but i'm not sure what i'm looking for
<tiosgz>
mrfoxpro: not strictly wayland. it's just that river doesn't have a command for this. as i've said, you can try looking at foreign-toplevel-management
<tiosgz>
adamcstephens: neither do i know. i just suppose that if time-related messages can be found and compared to the protocol, it may possibly give some info
<tiosgz>
this log is only ghostty, right?
<mrfoxpro>
well, seems like foreign-toplevel-management is supported by river, but how can I change internal river state (view tags) with it?
<adamcstephens>
tiosgz: yes, only ghostty. it does include some of its own output tho
<tiosgz>
mrfoxpro: ah, apologies. i thought the protocol has the means to do this, but now i see it doesn't.
<tiosgz>
adamcstephens: i meant it as "the error comes from something the input method did, so the input method's log is more important here"
tiosgz has quit [Quit: nyaa~]
mrfoxpro has quit [Ping timeout: 250 seconds]
leviathan has joined #river
kotto has joined #river
leviathan has quit [Quit: Client closed]
h3at has joined #river
h3at has quit [Client Quit]
alexherbo2 has joined #river
kotto has quit [Quit: WeeChat 4.2.1]
leopoldek has joined #river
kotto has joined #river
angry_vincent has quit [Read error: Connection reset by peer]
winter has joined #river
alexherbo2 has quit [Remote host closed the connection]