Do you wish you could run different window tiling layouts on individual workspaces? This plugin makes it possible!
Note
If you would like to see per-workspace layouts implemented in hyprland itself, please add a reaction (👍) to the corresponding issue.
- Run
hyprpm add https://github.com/zakk4223/hyprWorkspaceLayoutsand wait for hyprpm to build the plugin. - Run
hyprpm enable hyprWorkspaceLayouts
Using hyprload
Add the line "zakk4223/hyprWorkspaceLayouts", to your hyprload.toml config, like this
plugins = [
"zakk4223/hyprWorkspaceLayouts",
]Then update via the hyprload,update dispatcher.
Add this flake to your inputs, note that using a mismatched/unsupported Hyprland release will fail to build or load the plugin:
inputs = {
hyprland.url = "github:hyprwm/Hyprland"; # follows development branch of hyprland
hyprWorkspaceLayouts = {
url = "github:zakk4223/hyprWorkspaceLayouts";
inputs.hyprland.follows = "hyprland"; # to make sure that the plugin is built for the correct version of hyprland
};
};Then, in your home-manager config, add the plugin:
wayland.windowManager.hyprland = {
enable = true;
plugins = [ inputs.hyprWorkspaceLayouts.packages.${pkgs.system}.default ];
};- Build the plugin
make all
- Load the plugin however you load other Hyprland plugins.
exec-once = hyprctl plugin load <ABSOLUTE PATH TO workspaceLayoutPlugin.so>
Set a default layout to use for workspaces you don't specifically configure:
plugin {
wslayout {
default_layout=master
}
}
If you don't set one, "dwindle" is used.
Set your global layout to 'workspacelayout'
general {
layout=workspacelayout
}
Configure workspace specific layouts
workspace=1,layoutopt:wslayout-layout:master #workspace id
workspace=name:badanime,layoutopt:wslayout-layout:dwindle #named workspace
workspace=special,layoutopt:wslayout-layout:dwindle #special
workspace=special:hiddenyaoi,layoutopt:wslayout-layout:nstack #named special
You can dynamically change the layout of the currently active workspace via a dispatcher.
hyprctl dispatch layoutmsg setlayout dwindle
If you want to configure a layout for each monitor, consider using one of my other plugins: hyprland-workspace-rules