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
single_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.single_mfact
The size of a single centered master window, when center_single_master is set.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.
All configuration variables are also usable as workspace rule layout options. Just prefix the setting name with 'nstack-'
workspace=2,layoutopt:nstack-stacks:2,layoutopt:nstack-single_mfact:0.85
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
- Run
hyprpm add https://github.com/zakk4223/hyprNStack
and wait for hyprpm to build the plugin. - Run
hyprpm enable hyprNStack
- Set your hyprland layout to
nstack
.
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 w