<the_metalune>
I'm trying to compile/install river on my arch-based system, but I've never worked with zig before and I fail to understand the error messages
<leon-p>
the_metalune: upload them somewhere and post the link
<leon-p>
although If i had to guess, you hit the libc linking issue
<the_metalune>
so... is there any way to reload the river configuration in-place?
<leon-p>
config is just an executable. if you want to change settings, just run the commands
<the_metalune>
:O
<the_metalune>
awesome.
<leon-p>
it also means you can configure river in whatever language you like. the most obvious choice is of course a shell script, but you could also use python, C, or anything else.
<the_metalune>
no doubt that river is really awesome
<the_metalune>
I see the inspiration from bspwm now
<the_metalune>
now I just need to get used to Dynamic Tiling again
<the_metalune>
kinda funny, when I moved from dwm to sway, I was like "what the hell is gonna happen when I move this window" and now I feel the same when going from sway to river
<leon-p>
you'll get used to it. Since it is highly deterministic, you'll quickly develop a sense for what happens when windows spawn / are closed
<the_metalune>
yeah, I'm excited
<the_metalune>
:)
<leon-p>
you could also use it as a stacking compositor, if you don't run a layout generator
<leon-p>
and write your own layouts in any language with Wayland bindings
<the_metalune>
no no no thanks
<the_metalune>
I want to use it for the dynamic tiling, for the default :)
<the_metalune>
but that's surely an awesome option
<the_metalune>
oh sorry, I shouldn't mention competiton names here, right?
<the_metalune>
:P
<leon-p>
I think X WMs occupy a different niche, so not really competition :D
<the_metalune>
fair enough
<leon-p>
interestingly, wayland compositors are closer to both minimalism and "it just works" at the same time.
<the_metalune>
true
<the_metalune>
well
<the_metalune>
somewhat
<the_metalune>
from what I understand at least
<leon-p>
it's also less hacky. Either a usecase is supported by extensions, in which case it will work really well, or it is unsupported. No mucking around with xdotool / xrandr scripts
<the_metalune>
yeah
<the_metalune>
overall, I'm excited for the emove to Wayland
<the_metalune>
and it really seems to be happening
<leon-p>
You are early enough that you can still be part of the decission making. In other words, some things are still missing, but if you invest some work you can make them happen.
<the_metalune>
"early"
<the_metalune>
13 years in
<the_metalune>
:P
<the_metalune>
btw, how do I change the gaps?
<the_metalune>
I want to remove them
<leon-p>
the gaps are created by rivertile
<leon-p>
the size is passed as a command arg
<leon-p>
you'll have to kill rivertile and restart it with different args
<the_metalune>
oh alirght
gspe has joined #river
<the_metalune>
weird, qutebrowser tends to hang a lot it seems
<waleee-cl>
the_metalune: does other qt-apps have the same issue?
the_metalune has quit [Quit: Lost terminal]
the_metalune has joined #river
<the_metalune>
Hei
<the_metalune>
soooo
<the_metalune>
how do I bind something to $mod F6
<leon-p>
riverctl map normal $mod F6 <command>
<the_metalune>
doesn't work
<the_metalune>
"invalid modifier F6"
<leon-p>
that means your $mod variable is empty
<the_metalune>
ohhhhhhh
<the_metalune>
yeah makes sense
<the_metalune>
I was trying to execute it from the terminal
<the_metalune>
works now, thx xD
the_metalune has quit [Quit: Lost terminal]
metalune has joined #river
<metalune>
So... river is using 4% of my CPU according to htop
<metalune>
which is just too much
<metalune>
is there any way to diagnose which part of river is slowing it down in particular?
<leon-p>
yes, there is no damage tracking yet
<metalune>
damage tracking?
<metalune>
what is that?
<leon-p>
it is a method used by display servers to draw less
<metalune>
uhu ok
<leon-p>
river currently is drawing _everything_ multiple times a seccond
<metalune>
oh darn
<leon-p>
but it does not actually need to
<metalune>
yeah yeah makes sense
<metalune>
why would you need to refresh a window that didn't change, right?
<leon-p>
with damage tracking, river would only update the parts of the screan that actually changed
<leon-p>
right
<leon-p>
problem is that it is not exactly trivial to implement.
<metalune>
so... is this like.. in-progress or something?
<leon-p>
I don't hack on the graphics part of river, so I wouldn't know
<metalune>
oh ok
<metalune>
I thought maybe there's a PR in progress or something
<leon-p>
nah, not yet
<metalune>
:/
<leon-p>
we focused on other things for now
<metalune>
there seems to be so much rough about river, yet there is no good alternative to it ;-;
<leon-p>
river does not have a release yet, so that is to be expected
<emersion>
maybe considering giving river a hand then :)
<leon-p>
yeah, contributions are always welcome
<leon-p>
although I should note that damage tracking is non trivial, especially if you aren't already familiar with the rest of the code
<emersion>
yeah. maybe start with smaller tasks
<emersion>
ifreund: reminder that if you're interested in adding things that would help with damage tracking in wlroots, i can help
<emersion>
possibly scene-graph
<ifreund>
emersion: noted, I'll need to spend some time looking at the details of what wlroots currently provides for damage tracking before I'll know what approach I want to take and if I can do some of it in wlroots or not
<ifreund>
scene-graph sounds kinda scary to me, but mostly because I don't know what all that would entail
<ifreund>
adding code to wlroots to keep river (and other compositors) simpler would be nice though
yyp has joined #river
<emersion>
scen-graph would mean giving up on rendering everything yourself, and instead let wlroots do it for you in the most optimized way possible
<emersion>
basically, replace imperative style with declarative style
<emersion>
instead of "please render this texture at 54,24, then this other texture over it at 84,21"
<emersion>
with two calls
<emersion>
the scene-graph would be something like "here's a data structure with the textures i want rendered, and their positions"
<emersion>
"please do it, kthx"
<leon-p>
scene graph not existing yet was the main reason my compositor project own died, which is why I am now in the river camp, lol
<emersion>
ahah
<metalune>
I would love contributing, but I can't find the motivation nor the skills :/
<ifreund>
alright, and how would this interact with stuff like atomic layout updates?
<metalune>
nor the time, actually
<ifreund>
would wlroots just handle them for us?
<ifreund>
that would require a very high-level api aware of xdg and xwayland surfaces though
<ifreund>
and potentially layer shell as well in the future
<emersion>
i don't really want to go that far yet
maringuu has quit [Ping timeout: 276 seconds]
<emersion>
maybe we should eventually, with optional scene-graph addons for each shell
<emersion>
but this doesn't seem too tied to atomic layout
<emersion>
you can update the scene-graph data structure when an atomic layout change is applied (made current)
<ifreund>
yeah, but then it would just hold buffers I guess so how would it help with damage tracking if it's not aware of surfaces?
<emersion>
in the current draft, it's aware of wlr_surface (but not shells)
maringuu has joined #river
<emersion>
it could also work fine with wlr_buffer, the compositor would just need to have more boilerplate
<ifreund>
ok, but you can also override the surface and tell it to render the texture of a stashed buffer?
<ifreund>
(to implement atomic layout updates)
<emersion>
yeah, for this case you'd disable the wlr_surface in the scene-graph, and enable a wlr_buffer
metalune has left #river ["Disconnected: closed"]
<emersion>
maybe it would be better to just go with wlr_buffer at first, letting the compositor handle the boilerplate (indicate damage, handle commits, etc)
<emersion>
and see what we can do for wlr_surface later
<emersion>
or…
<emersion>
actually there's a better plan for all of this
<emersion>
this can allow the compositor to "freeze" a surface state, preventing new commits from being applied
<emersion>
using this sounds nice because compositors can trust the surface current state again, they won't need to stash all of it somewhere anymore
<emersion>
(i assume you're saving the wlr_buffer and a bunch of coords somewhere right now)
<emersion>
still not 100% sure this can all work out, would need to try to do it in sway and see
<ifreund>
yep, right now I store a list of wlr_client_buffer, box, and output transform for each view
<ifreund>
using that new cached surface states feature sounds a lot cleaner though
yyp has quit [Ping timeout: 252 seconds]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
yyp has quit [Read error: Connection reset by peer]
yyp has joined #river
gspe has quit [Quit: gspe]
<novakane[m]>
the `always render floating views above layout views ` commit is really cool for thing like merge/replace popup with a gui file manager
<novakane[m]>
not like I often use a gui file manager but still, it's better than before :)
<ifreund>
yeah, it made the UX around popups and what not significantly better in all cases I've seen so far :)
<novakane[m]>
yeah I don't really have a lot of case for this, but gui file manager was the only time I found popup annoying
<ifreund>
For me it's mostly firefox download popups and gpg2 pinentry things
<novakane[m]>
yep same but this two never really annoyed me more than that, the thing with gui FM is that it opens 2 popups, so I had one above and the other one hidden
<novakane[m]>
I think I made all shitty things you can do with damage tracking :P
<novakane[m]>
like right now it only render a view if you open an other view :D
snakedye has joined #river
snakedye has quit [Quit: Connection closed]
leon-p has quit [Ping timeout: 252 seconds]
<novakane[m]>
ifreund: is that intended that this doesn't have a 'pub const...' ?