ifreund changed the topic of #river to: river - a dynamic tiling wayland compositor - https://github.com/ifreund/river - channel logs: https://freenode.irclog.whitequark.org/river/
<leon-p> considering how often the layout topic comes up here, I decided to write an article about that. I am open to any additional suggestions what it should contain.
_whitelogger_ has joined #river
_whitelogger_ has joined #river
_whitelogger_ has quit [Remote host closed the connection]
_whitelogger_ has joined #river
_whitelogger_ has joined #river
yyp has joined #river
yyp has joined #river
_whitelogger_ has quit [Remote host closed the connection]
_whitelogger_ has joined #river
_whitelogger_ has joined #river
_whitelogger_ has quit [Remote host closed the connection]
_whitelogger_ has joined #river
_whitelogger_ has joined #river
_whitelogger_ has quit [Remote host closed the connection]
<novakane[m]> a lexicon, like views, main, secondary, windows, etc... I know some of these terms are optional but if people like me are looking at rivertile as an example, it seems like they need to be defined
<leon-p> actually, I decided to keep out all wayland specific terminology :D
<leon-p> but that is certainly worth considering
_whitelogger_ has joined #river
_whitelogger_ has joined #river
<novakane[m]> haha ok, well I know main/secondary views confused me at first,
<novakane[m]> haha ok, well I know main/secondary views confused me at first,
<novakane[m]> but something with simple terminology could be cool too
<novakane[m]> but something with simple terminology could be cool too
<leon-p> well, those are totally arbitrary values used by rivertile, river doesn't actually know about them.
<leon-p> well, those are totally arbitrary values used by rivertile, river doesn't actually know about them.
<leon-p> so while rivertile uses them, your own layout generator does not have to
<leon-p> so while rivertile uses them, your own layout generator does not have to
<novakane[m]> yeah I know that now, but I didn't get it at the begining because I was following rivertile as a model
<novakane[m]> yeah I know that now, but I didn't get it at the begining because I was following rivertile as a model
<leon-p> I see
<leon-p> I see
<leon-p> I'll probably add something among those lines, then
<leon-p> I'll probably add something among those lines, then
<novakane[m]> But then maybe if you provide an article on the layout system people will have less need to look into rivertile
<novakane[m]> But then maybe if you provide an article on the layout system people will have less need to look into rivertile
<leon-p> its not a tutorial, just a high-level orverview of the theory, which I feel like is what people struggle most with
<leon-p> its not a tutorial, just a high-level orverview of the theory, which I feel like is what people struggle most with
<novakane[m]> yep I thnk so, this was the case for me at least,
<novakane[m]> yep I thnk so, this was the case for me at least,
<leon-p> well, I have finished everything /but/ the section about the layout protocol :D
<leon-p> well, I have finished everything /but/ the section about the layout protocol :D
<novakane[m]> nice, I read this right away
<novakane[m]> nice, I read this right away
<novakane[m]> typo in 'What even are Layouts?' first sentence 'one for each outpu'
<novakane[m]> typo in 'What even are Layouts?' first sentence 'one for each outpu'
<leon-p> yeah, i noticed. until now I was way to lazy to set up a spell checker for kakoune :P
<leon-p> yeah, i noticed. until now I was way to lazy to set up a spell checker for kakoune :P
<novakane[m]> well a spell checker when writing note about coding can be really annoying, too much word it doesn't know haha
<novakane[m]> well a spell checker when writing note about coding can be really annoying, too much word it doesn't know haha
maringuu has quit [Ping timeout: 244 seconds]
maringuu has quit [Ping timeout: 244 seconds]
maringuu has joined #river
maringuu has joined #river
<novakane[m]> It's reaaly great 👍️
<novakane[m]> It's reaaly great 👍️
<leon-p> I am glad to hear that.
<leon-p> I am glad to hear that.
<novakane[m]> I can't wait for you to make one on river-options :P
<novakane[m]> I can't wait for you to make one on river-options :P
<leon-p> there really is not much about river-options. That one section already describes it pretty much in its entirety (at least as far as users are concerned). I should probably add that river-options are very generic and that layout parameters are just one out of many possible use cases though
<leon-p> there really is not much about river-options. That one section already describes it pretty much in its entirety (at least as far as users are concerned). I should probably add that river-options are very generic and that layout parameters are just one out of many possible use cases though
<novakane[m]> Yeah I was talking more about an other article about river-options protocol haha
<novakane[m]> Yeah I was talking more about an other article about river-options protocol haha
<leon-p> not sure that would make much sense, tbh. But I'll keep it in mind.
<leon-p> not sure that would make much sense, tbh. But I'll keep it in mind.
<novakane[m]> I was playing a bit whith it yesterday, can it return all value options set?
<novakane[m]> I was playing a bit whith it yesterday, can it return all value options set?
<leon-p> an option can only have a single value.
<leon-p> an option can only have a single value.
<leon-p> or do you mean getting a list of all options? Because not yet.
<leon-p> or do you mean getting a list of all options? Because not yet.
<novakane[m]> Making a list of all options
<novakane[m]> Making a list of all options
<leon-p> yeah, not yet.
<leon-p> yeah, not yet.
<leon-p> although I would certainly have liked that for testing
<leon-p> although I would certainly have liked that for testing
<novakane[m]> I tried to make something like lswt but returning like a json with all options name and their value
<novakane[m]> I tried to make something like lswt but returning like a json with all options name and their value
<novakane[m]> So I guess it's no possible
<novakane[m]> So I guess it's no possible
<leon-p> the protocol currently does not support "discovering" options, sadly.
<leon-p> the protocol currently does not support "discovering" options, sadly.
<novakane[m]> Well ok too bad, I could tried a long time then haha
<novakane[m]> Well ok too bad, I could tried a long time then haha
<leon-p> you could propose a protocol change, though
<leon-p> you could propose a protocol change, though
<novakane[m]> I'm not sure my knowledge is enough for this but I can look into it
<novakane[m]> I'm not sure my knowledge is enough for this but I can look into it
<leon-p> basically you'd want to add a request for the options_manager, which makes it advertise all options somehow using a new event
<leon-p> basically you'd want to add a request for the options_manager, which makes it advertise all options somehow using a new event
<novakane[m]> how do you make a protocol, you write your funcionts in river_options_*.zig and then you write the xml file?
<novakane[m]> how do you make a protocol, you write your funcionts in river_options_*.zig and then you write the xml file?
<leon-p> no need to edit any *.zig file. Just edit the xml
<leon-p> no need to edit any *.zig file. Just edit the xml
<leon-p> the scanner will autmagically turn events and requests into functions
<leon-p> the scanner will autmagically turn events and requests into functions
<leon-p> That is the great thing about Wayland protocols: They are totally language and implementation agnostic. All you need to do is write a scanner.
<leon-p> That is the great thing about Wayland protocols: They are totally language and implementation agnostic. All you need to do is write a scanner.
<novakane[m]> oh ok, that's cool
<novakane[m]> oh ok, that's cool
<leon-p> And different Wayland implementations could work totally different. The default libwayland for C, as an example, implements events as a struct full of function pointer. zig-wayland instead uses a single function with an Event type you can switch() on.
<leon-p> And different Wayland implementations could work totally different. The default libwayland for C, as an example, implements events as a struct full of function pointer. zig-wayland instead uses a single function with an Event type you can switch() on.
<novakane[m]> I thought you still needed to write an .zig file or whatever and the scanner just translate in another language if needed, good to know
<novakane[m]> I thought you still needed to write an .zig file or whatever and the scanner just translate in another language if needed, good to know
<skuzzymiglet> how could you use xmodmap with river?
<skuzzymiglet> how could you use xmodmap with river?
<skuzzymiglet> (I need to remap caps lock to control)
<skuzzymiglet> (I need to remap caps lock to control)
<yyp> skuzzymiglet: set XKB_DEFAULT_OPTIONS=...
<yyp> skuzzymiglet: set XKB_DEFAULT_OPTIONS=...
<leon-p> skuzzymiglet: river actually uses the same library for handling key events as X: xkbcommon. As such, all those keyboard remapping files and env vars are compatible
<leon-p> skuzzymiglet: river actually uses the same library for handling key events as X: xkbcommon. As such, all those keyboard remapping files and env vars are compatible
<yyp> XKB_DEFAULT_OPTIONS=caps:ctrl_modifier
<yyp> XKB_DEFAULT_OPTIONS=caps:ctrl_modifier
<leon-p> we probably want a nicer way to set that, but for now the env vars will work perfectly fine
<leon-p> we probably want a nicer way to set that, but for now the env vars will work perfectly fine
<skuzzymiglet> can I change xkb stuff after starting river or is it fixed?
<skuzzymiglet> can I change xkb stuff after starting river or is it fixed?
<leon-p> rivrr does not implement any mechanism to change any xkb stuff at runtime, so I am pretty sure you have restart
<leon-p> rivrr does not implement any mechanism to change any xkb stuff at runtime, so I am pretty sure you have restart
<skuzzymiglet> works perfectly, thanks!
<skuzzymiglet> works perfectly, thanks!
yyp has quit [Ping timeout: 246 seconds]
yyp has quit [Ping timeout: 246 seconds]
yyp has joined #river
yyp has joined #river
yyp has quit [Quit: now it's safe to turn off your computer]
yyp has quit [Quit: now it's safe to turn off your computer]
yyp has joined #river
yyp has joined #river
snakedye has joined #river
snakedye has joined #river
yyp has quit [Quit: now it's safe to turn off your computer]
yyp has quit [Quit: now it's safe to turn off your computer]
<snakedye> how is a layout generator supposed to handle multiple output? should I just launch another instance on the another output?
<snakedye> how is a layout generator supposed to handle multiple output? should I just launch another instance on the another output?
<novakane[m]> I don't have multiple output but I guess just using `riverctl set-option -focused-output layout....` on both output or `riverctl -set-option -output OUTPUT_NAME... ` once you have launch the layout executable should work?
<novakane[m]> I don't have multiple output but I guess just using `riverctl set-option -focused-output layout....` on both output or `riverctl -set-option -output OUTPUT_NAME... ` once you have launch the layout executable should work?
<snakedye> mylayout generator is tied to the output it is first launched
<snakedye> mylayout generator is tied to the output it is first launched
<snakedye> i think i could maybe add a callback function to WlOutput but launching 2 instances also work fine
<snakedye> i think i could maybe add a callback function to WlOutput but launching 2 instances also work fine
<snakedye> btw I can't map a keybinding to mod-option or set-option (not recognized). I think this issue is also present on the master branch.
<snakedye> btw I can't map a keybinding to mod-option or set-option (not recognized). I think this issue is also present on the master branch.
snakedye has quit [Quit: Connection closed]
snakedye has quit [Quit: Connection closed]
yyp has joined #river
yyp has joined #river
yyp has quit [Quit: now it's safe to turn off your computer]
yyp has quit [Quit: now it's safe to turn off your computer]
yyp has joined #river
yyp has joined #river
snakedye has joined #river
snakedye has joined #river
snakedye has quit [Quit: Connection closed]
snakedye has quit [Quit: Connection closed]
snakedye has joined #river
snakedye has joined #river
snakedye has quit [Quit: Connection closed]
snakedye has quit [Quit: Connection closed]
yyp has quit [Quit: now it's safe to turn off your computer]
yyp has quit [Quit: now it's safe to turn off your computer]
snakedye has joined #river
snakedye has joined #river
skuzzymiglet has quit [Read error: Connection reset by peer]
skuzzymiglet has quit [Read error: Connection reset by peer]
skuzzymiglet has joined #river
skuzzymiglet has joined #river
snakedye has quit [Quit: Connection closed]
snakedye has quit [Quit: Connection closed]