<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]>
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]