Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use layoutmsg dispatcher #130

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ejiek
Copy link

@ejiek ejiek commented Oct 14, 2023

With Hyperland v0.30.0 and this lib at v0.3.12 orientation dispatchers for master layout are failing with the following error:

A dispatcher retrurned a non `ok`, value which is probably a error: Invalid dispatcher was returned by it

While other dispatchers work just fine. I've tested with Exec.
The issue seems to be that layout specific discpathers have layoutmsg part. Dwindle | Master.

Futhermore, some general dispatcher are dublicated in layout specific ones. cyclenext is awaylable with layoutmsg and without.

ps. there are some layout specific dispatchers that are currently missing and they are not part of this PR as of now. I want to figure out if I'm on a right track to fix existing ones.

Copy link
Member

@yavko yavko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, and sorry for the late response. I will approve as soon as I get confirmation everything works 😛.

Comment on lines +538 to +539
SwapWithMaster(param) => format!("layoutmsg swapwithmaster{sep}{param}"),
FocusMaster(param) => format!("layoutmsg focusmaster{sep}{param}"),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just want to ask if you could make sure this works with the binding code found in config.rs:

dispatcher = gen_dispatch_str(binding.dispatcher, false)?

Since it adds a sep (,). Which when using regular IPC isn't added. This is weird, but it saves a lot of boilerplate.

hyprland-rs/src/dispatch.rs

Lines 468 to 470 in a8ca325

pub(crate) fn gen_dispatch_str(cmd: DispatchType, dispatch: bool) -> crate::Result<CommandContent> {
use DispatchType::*;
let sep = if dispatch { " " } else { "," };

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've tried the following with different all the available params:

Dispatch::call(DispatchType::SwapWithMaster(
           hyprland::dispatch::SwapWithMasterParam::Child
         )).unwrap();

and

Dispatch::call(DispatchType::FocusMaster(
          hyprland::dispatch::FocusMasterParam::Master
        )).unwrap();

Both seem to work fine, though I haven't figured difference between child, master and auto while running my tests from a terminal.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, but I mean creating a keybind with hyprland-rs, as it uses the same dispatcher code, just replaces the formatting because IPC and binds have a different format.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry, I've tried to test it with bindings but was not able to get even the binding from the example working:

hyprland::bind!(SUPER, Key, "t" => ToggleFloating, None).unwrap();

It returns Ok(()) but there is nothing new in hyprctl binds or an actual behavior.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sorry, I've tried to test it with bindings but was not able to get even the binding from the example working:

hyprland::bind!(SUPER, Key, "t" => ToggleFloating, None).unwrap();

It returns Ok(()) but there is nothing new in hyprctl binds or an actual behavior.

I'm sorry if this is too much to ask, but could you maybe add a println to check the command it's generating, and trying it with hyprctl since I'm not on hyprland at the moment. I really only want to merge this, if the binding works, as binding layout commands is pretty essential imo.

@yavko yavko added the enhancement New feature or request label Feb 3, 2024
@yavko yavko added this to the 0.4.0 milestone Feb 3, 2024
@yavko yavko added the help wanted Extra attention is needed label Feb 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants