This plugin is a modified version of Hyprland's Master layout.
The primary change is that it allows an arbitrary number of non-master 'stacks'. This can be changed dynamically per-workspace.
The layout is sort of a combination of XMonad's 'MultiColumns' and Hyprland's Master layout.
Default values are meant to produce a similar experience to the existing Master layout.
plugin {
nstack {
layout {
orientation=left
new_on_top=0
new_is_master=1
no_gaps_when_only=0
special_scale_factor=0.8
inherit_fullscreen=1
stacks=2
center_single_master=0
mfact=0.5
}
}
}
stacks
The number of total stacks, including the master.mfact
If this is set to 0 the master is the same size as the stacks. So if there is one master and 2 stacks they are all 1/3rd of the screen width(or height). Master and 3 stacks they are all 1/4th etc.center_single_master
When there is a single window on the screen it is centered instead of taking up the entire monitor. This replaces the existingalways_center_master
and has slightly different behavior.
Two new dispatchers
resetsplits
Reset all the window splits to default sizes.setstackcount
Change the number of stacks for the current workspace. Windows will be re-tiled to fit the new stack count.
Two new-ish orientations
orientationhcenter
Master is horizontally centered with stacks to the left and right.orientationvcenter
Master is vertically centered with stacks on the top and bottom.orientationcenter
An alias fororientationhcenter
Hyprland plugins basically have to be user-compiled and loaded. You probably need to compile and install hyprland yourself (if not using a package that exports the headers, e.g. the one on Arch's official repos).
If your package does not export headers, see the this part of the hyprland wiki
Then:
- Build hyprNStack
make
- Copy the resulting nstackLayoutPlugin.so to some place
cp nstackLayoutPlugin.so ~/.config/hypr/plugins
- Modify your hyprland.conf to load the plugin
exec-once=hyprctl plugin load $HOME/.config/hypr/plugins/nstackLayoutPlugin.so
- Set your hyprland layout to
nstack
.
- Improve mouse resizing of stacks
- Improve drag and drop rearranging of windows in and between stacks
- Allow resizing of single master window