diff --git a/pages/Configuring/Advanced-config.md b/pages/Configuring/Advanced-config.md
index 453e0bb..c58392a 100644
--- a/pages/Configuring/Advanced-config.md
+++ b/pages/Configuring/Advanced-config.md
@@ -1,5 +1,4 @@
-This page documents all of the more advanced config options. Binds, curves,
-execs, etc.
+This page documents all of the more advanced config options.
{{< hint type=important >}}
@@ -22,348 +21,6 @@ three_param_keyword=A,B, # OK
# Table of contents
{{< toc format=html >}}
-# Monitors
-
-```plain
-monitor=name,res,offset,scale
-```
-
-for example:
-
-```plain
-monitor=DP-1,1920x1080@144,0x0,1
-```
-
-will tell Hyprland to make the monitor on DP-1 a 1920x1080 display, at 144Hz,
-0x0 off from the beginning and a scale of 1.
-
-Please use the offset for its intended purpose before asking stupid questions
-about "fixing" monitors being mirrored.
-
-Please remember the offset is calculated with the scaled resolution, meaning if
-you want your 4K monitor with scale 2 to the left of your 1080p one, you'd use
-the offset `1920x0` for the second screen. (3840 / 2)
-
-Leaving the name empty will define a fallback rule to use when no other rules
-match.
-
-You can use `preferred` as a resolution to use the display's preferred size, and
-`auto` as an offset to let Hyprland decide on an offset for you.
-
-Recommended rule for easy and quick plugging in of random monitors:
-
-```plain
-monitor=,preferred,auto,1
-```
-
-Will make any monitor that was not specified with an explicit rule automatically
-placed in a sensible location with its preferred resolution.
-
-Alternatively you can use the highrr or highres rules in order to get the best possible
-resolution or refreshrate mix.
-
-for a focus on refreshrate use this:
-
-```plain
-monitor=,highrr,auto,1
-```
-
-for a focus on resolution this:
-
-```plain
-monitor=,highres,auto,1
-```
-
-## Disabling a monitor
-
-To disable a monitor, use
-
-```plain
-monitor=name,disable
-```
-
-## Custom reserved area
-
-If your workflow requires custom reserved area, you can add it with
-
-```plain
-monitor=name,addreserved,TOP,BOTTOM,LEFT,RIGHT
-```
-
-Where `TOP` `BOTTOM` `LEFT` `RIGHT` are integers in pixels of the reserved area
-to add. This does stack on top of the calculated one, (e.g. bars) but you may
-only use one of these rules per monitor in the config.
-
-## Mirrored displays
-
-If you want to mirror a display, add a `,mirror,[NAME]` at the end of the monitor
-rule, examples:
-```
-monitor=DP-3,1920x1080@60,0x0,1,mirror,DP-2
-monitor=,preferred,auto,1,mirror,DP-1
-```
-
-Please remember that mirroring displays will not "re-render" everything for your
-second monitor, so if mirroring a 1080p screen onto a 4K one, the resolution will
-still be 1080p on the 4K display. This also means squishing and stretching
-will occur on non-matching resolutions.
-
-## Rotating and the default workspace
-
-{{< hint type=important >}}
-The monitor transform and workspace keywords depend on a monitor rule set specifically for the targeted monitor,
-and ***MUST*** be after it.
-{{< /hint >}}
-
-```plain
-workspace=name,number
-```
-
-for example:
-
-```plain
-workspace=DP-1,1
-```
-
-will tell Hyprland to make the default workspace on DP-1 a number 1.
-
-If you want to rotate a monitor, use
-
-```plain
-monitor=NAME,transform,TRANSFORM
-```
-
-where `NAME` is the name, and `TRANSFORM` is an integer, from 0 to 7,
-corresponding to your transform of choice.
-
-
-```
-WL_OUTPUT_TRANSFORM_NORMAL = 0
-WL_OUTPUT_TRANSFORM_90 = 1
-WL_OUTPUT_TRANSFORM_180 = 2
-WL_OUTPUT_TRANSFORM_270 = 3
-WL_OUTPUT_TRANSFORM_FLIPPED = 4
-WL_OUTPUT_TRANSFORM_FLIPPED_90 = 5
-WL_OUTPUT_TRANSFORM_FLIPPED_180 = 6
-WL_OUTPUT_TRANSFORM_FLIPPED_270 = 7
-```
-
-## Binding workspaces to a monitor
-A workspace can be bound to a monitor, meaning by default it will ALWAYS open
-on the selected monitor. You can do this with
-```
-wsbind=WORKSPACE,MONITOR
-```
-
-for example:
-```
-wsbind=5,DP-1
-wsbind=name:secret,DP-2
-```
-
-# Binds
-
-## Basic
-
-```
-bind=MOD,key,dispatcher,params
-```
-
-for example,
-
-```
-bind=SUPERSHIFT,Q,exec,firefox
-```
-
-will bind opening firefox to SUPER + SHIFT + Q
-
-{{< hint type=tip >}}
-For binding keys without a modkey, leave it empty:
-```
-bind=,Print,exec,grim
-```
-{{< /hint >}}
-
-*For a complete mod list, see [The basic configuring page](https://wiki.hyprland.org/Configuring/Basic-Config/#variable-types).*
-
-## Uncommon syms / binding with a keycode
-
-See the
-[xkbcommon-keysyms.h header](https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h)
-for all the keysyms. The name you should use is the one after XKB_KEY\_, written
-in all lowercase.
-
-If you are unsure of what your key's name is, or what it shifts into, you can
-use `xev` or `wev` to find that information.
-
-If you want to bind by a keycode, you can just input it in the KEY position,
-e.g.:
-
-```
-bind=SUPER,28,exec,amongus
-```
-
-Will bind SUPER + T. (T is keycode 28.) - You can also use `xev` or `wev` to find
-keycodes.
-
-## Misc
-
-You can also unbind with `unbind`, e.g.:
-
-```
-unbind=SUPER,O
-```
-
-May be useful for dynamic keybindings with `hyprctl`.
-
-You can also bind mouse buttons, by prefacing the mouse keycode with `mouse:`,
-for example:
-
-```
-bind=SUPER,mouse:272,exec,amongus
-```
-
-will bind it to SUPER + LMB.
-
-For binding only modkeys, you need to use the TARGET modmask (with the
-activating mod) and the `r` flag, e.g.:
-
-```
-bindr=SUPERALT,Alt_L,exec,amongus
-```
-
-You can also bind the mouse wheel with `mouse_up` and `mouse_down`:
-```
-bind=SUPER,mouse_down,workspace,e-1
-```
-(control the reset time with `binds:scroll_event_delay`)
-
-## Bind flags
-
-bind supports flags in this format:
-
-```
-bind[flags]=...
-```
-
-e.g.:
-
-```
-bindrl=MOD,KEY,exec,amongus
-```
-
-flags:
-
-```
-l -> locked, aka. works also when an input inhibitor is active
-r -> release, will trigger on release of a key
-e -> repeat, will repeat when held.
-m -> mouse, see below
-```
-
-## Mouse Binds
-Mouse binds are binds that heavily rely on a mouse, usually its movement.
-They will have one less arg, and look for example like this:
-
-```
-bindm=ALT,mouse:272,movewindow
-```
-
-this will create a bind with ALT + LMB to move the window
-with your mouse.
-
-*Available mouse binds*:
-
-| name | description |
-| -----|------------ |
-| movewindow | moves the active window |
-| resizewindow | resizes the active window |
-
-*Common mouse buttons' codes:*
-```
-LMB -> 272
-RMB -> 273
-```
-
-*for more, you can of course use `wev` to check.*
-
-{{< hint type=tip >}}
-Mouse binds, despite their name, behave like normal binds. You are free to use
-whatever keys / mods you please. When held, the mouse function will be activated.
-{{< /hint >}}
-
-## Binding mods
-
-You can bind a mod alone like this:
-
-```
-bindr=ALT,Alt_L,exec,amongus
-```
-
-## General dispatcher list
-
-Please keep in mind some layout-specific dispatchers will be listed in the
-layout pages (See the sidebar)
-
-
-*Some confusing params explained:*
-
-| param type | description |
-| --- | --- | --- |
-| window | a window. Any of the following: Class regex, `title:` and a title regex, `pid:` and the pid, `address:` and the address |
-| workspace | see below. |
-| direction | `l` `r` `u` `d` left right up down |
-| monitor | One of: direction, ID, name, `current` |
-| resizeparams | Pixel delta vec2 (e.g. `10 -10`) or `exact` followed by exact vec2, e.g. `exact 1280 720`) |
-| floatdelta | a float value delta, e.g `-0.2` or `+0.2`. |
-| workspaceopt | see below. |
-
-*Dispatchers:*
-
-| dispatcher | description | params |
-|---|---|---|
-| exec | executes a shell command | command |
-| pass | passes the key (with mods) to a specified window. Can be used as a workaround to global keybinds not working on Wayland. | window |
-| killactive | closes (not kills, unlike the name, i know) the active window | none |
-| closewindow | closes a specified window | `window` |
-| workspace | changes the workspace | workspace |
-| movetoworkspace | moves the focused window to a workspace | workspace OR `workspace,window` for a specific window |
-| movetoworkspacesilent | same as above, but doesnt switch to the workspace | workspace OR `workspace,window` for a specific window |
-| togglefloating | toggles the current window's floating state | left empty / `active` for current, or `window` for a specific window |
-| fullscreen | toggles the focused window's fullscreen state | 0 - real fullscreen (takes your entire screen), 1 - "maximize" fullscreen (keeps the gaps and bar(s)) |
-| dpms | sets all monitors' DPMS status. Do not use with a keybind directly. | `on` or `off` |
-| pseudo | toggles the focused window's pseudo mode | none |
-| pin | pins the active window (will be on top regardless of workspace changes) *note: floating only* | none |
-| movefocus | moves the focus in a direction | direction |
-| movewindow | moves the active window in a direction or to a monitor | direction or `mon:` and a monitor |
-| resizeactive | resizes the active window | resizeparams |
-| moveactive | moves the active window | resizeparams |
-| resizewindowpixel | resizes a selected window | `resizeparams,window`, e.g. `100 100,^(kitty)$ |
-| movewindowpixel | moves a selected window | `resizeparams,window` |
-| cyclenext | focuses the next window on a workspace | none (for next) or `prev` (for previous) |
-| swapnext | swaps the focused window with the next window on a workspace | none (for next) or `prev` (for previous) |
-| focuswindow | focuses the first window matching | window |
-| focusmonitor | focuses a monitor | monitor |
-| splitratio | changes the split ratio | floatdelta |
-| toggleopaque | toggles the current window to always be opaque | none |
-| movecursortocorner | moves the cursor to the corner of the active window | direction, 0 - 3, bottom left - 0, bottom right - 1, top right - 2, top left - 3 |
-| workspaceopt | toggles a workspace option for the active workspace. | workspaceopt |
-| exit | exits the compositor with no questions asked. | none |
-| forcerendererreload | forces the renderer to reload all resources and outputs | none |
-| movecurrentworkspacetomonitor | Moves the active workspace to a monitor | monitor |
-| moveworkspacetomonitor | Moves a workspace to a monitor | workspace and a monitor separated by a space |
-| swapactiveworkspaces | Swaps the active workspaces between two monitors | two monitors separated by a space |
-| togglespecialworkspace | toggles the special workspace on/off | none |
-
-{{< hint type=warning >}}
-it is NOT recommended to set DPMS with a keybind directly, as it
-might cause undefined behavior. Instead, consider something like
-
-```
-bind = MOD,KEY,exec,sleep 1 && hyprctl dispatch dpms off
-```
-{{< /hint >}}
-
## Workspaces
You have seven choices:
@@ -403,43 +60,6 @@ allfloat -> makes all new windows floating (also floats/unfloats windows on togg
allpseudo -> makes all new windows pseudo (also pseudos/unpseudos on toggle)
```
-# Global Keybinds
-Yes, you heard this right, Hyprland does support global keybinds for ALL apps,
-including OBS, Webcord, Firefox, etc.
-
-See the `pass` dispatcher for keybinds.
-
-e.g.:
-
-I've set the "Start/Stop Recording" keybind in OBS to SUPER+F10, and I want it
-to be global.
-
-Simple, add
-```plain
-bind = SUPER,F10,pass,^(com\.obsproject\.Studio)$
-```
-to your config and you're done.
-
-`pass` will pass the PRESS and RELEASE events by itself, no need for a `bindr`.
-This also means that push-to-talk will work flawlessly with one pass, e.g.:
-
-```
-bind=,mouse:276,pass,^(TeamSpeak 3)$
-```
-
-Will pass MOUSE5 to TeamSpeak3.
-
-{{< hint type=important >}}
-XWayland is a bit wonky. Make sure that what you're passing is a "global Xorg keybind",
-otherwise passing from a different XWayland app may not work.
-
-It works flawlessly with all native Wayland applications though.
-
-*Side note*: **OBS** on Wayland really dislikes keybinds with modifiers. If they don't work, try
-removing mods and binding them to e.g. F1. Combining this with a submap should yield
-neat and usable results.
-{{< /hint >}}
-
# Executing
you can execute a shell script on startup of the compositor or on each time it's
@@ -457,167 +77,6 @@ script (`exec-once=~/myscript.sh` and do `myapp &` in the script)
`exec=command` will execute on each reload
-# Window Rules
-
-You can set window rules for various actions. These are applied on window open!
-
-```
-windowrule=RULE,WINDOW
-```
-
-`RULE` is a rule (and a param if applicable)
-
-`WINDOW` is a RegEx, either:
-
-- plain regex (for matching a window class)
-- `title:` followed by a regex (for matching a window's title)
-
-you can get both by inspecting `hyprctl clients`
-
-Examples:
-
-```
-windowrule=float,^(kitty)$
-windowrule=move 0 0,title:^(Firefox)(.*)$
-```
-
-## Window Rules V2
-
-In order to allow more flexible rules, while also not breaking compatibility with the above
-rule system, window rules v2 were implemented.
-
-In V2, you are allowed to match multiple variables.
-
-the `RULE` field is unchanged, but in the `WINDOW` field, you can put regexes for multiple values like so:
-```
-windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
-```
-
-For now, the supported fields are:
-```
-class - class regex
-title - title regex
-xwayland - 0/1
-floating - 0/1
-```
-
-Keep in mind you do *not* need to define all of them, but you need to define at least one.
-
-## Rules
-
-| rule | description |
-| --- | --- |
-| float | floats a window |
-| tile | tiles a window |
-| fullscreen | fullscreens a window |
-| move \[x\] \[y\] | moves a floating window (x,y -> int or %, e.g. 20% or 100) |
-| size \[x\] \[y\] | resizes a floating window (x,y -> int or %, e.g. 20% or 100) |
-| center | if the window is floating, will center it on the monitor |
-| pseudo | pseudotiles a window |
-| monitor \[id\] | sets the monitor on which a window should open |
-| workspace \[w\] | sets the workspace on which a window should open (for workspace syntax, see [binds->workspaces](../Advanced-config#workspaces)). You can also make \[w\] to `unset`, will unset all previous workspace rules applied to this window. You can also add `silent` after the workspace to make the window open silently. |
-| opacity \[a\] | additional opacity multiplier. Options for a: `float` -> sets an opacity OR `float float` -> sets activeopacity and inactiveopacity respectively |
-| opaque | forces the window to be opaque (can be toggled with the toggleopaque dispatcher) |
-| animation \[style\] (\[opt\]) | forces an animation onto a window, with a selected opt. Opt is optional. |
-| rounding \[x\] | forces the application to have X pixels of rounding, ignoring the set default (in `decoration:rounding`). Has to be an int. |
-| noblur | disables blur for the window |
-| nofocus | disables focus to the window |
-| forceinput | forces an XWayland window to receive input, even if it requests not to do so. (Might fix issues like e.g. Game Launchers not receiving focus for some reason) |
-| pin | pins the window *note: floating only* |
-
-*Examples*:
-```
-windowrule = move 100 100,^(kitty)$
-windowrule = animation popin,^(kitty)$
-windowrule = noblur,^(firefox)$
-```
-
-{{< hint type=tip >}}
-
-Opacity is always a PRODUCT of all opacities. E.g. active_opacity to
-0.5 and windowrule opacity to 0.5 will result in a total opacity 0.25. You are
-allowed to set opacities over 1, but any opacity product over 1 will cause
-graphical glitches. E.g. 0.5 * 2 = 1, and it will be fine, 0.5 * 4 will cause
-graphical glitches.
-
-{{< /hint >}}
-
-# Animations
-
-animations are declared with the `animation` keyword.
-
-```
-animation=NAME,ONOFF,SPEED,CURVE,STYLE
-or
-animation=NAME,ONOFF,SPEED,CURVE
-```
-
-for example:
-
-```
-animation=workspaces,1,8,default
-animation=windows,1,10,myepiccurve,slide
-```
-
-`ONOFF` can be either 0 or 1, 0 to disable, 1 to enable.
-
-`SPEED` is the amount of ds (1ds = 100ms) the animation will take
-
-`CURVE` is the bezier curve name, see [curves](https://wiki.hyprland.org/Configuring/Advanced-config/#curves).
-
-`STYLE` (optional) is the animation style
-
-The animations are a tree. If an animation is unset, it will inherit its
-parent's values.
-
-_Animation tree:_
-
-```
-global
- ↳ windows - styles: slide, popin
- ↳ windowsIn - window open
- ↳ windowsOut - window close
- ↳ windowsMove - everything in between, moving, dragging, resizing.
- ↳ fade
- ↳ fadeIn - fade in (open) -> layers and windows
- ↳ fadeOut - fade out (close) -> layers and windows
- ↳ fadeSwitch - fade on changing activewindow and its opacity
- ↳ fadeShadow - fade on changing activewindow for shadows
- ↳ fadeDim - the easing of the dimming of inactive windows
- ↳ border
- ↳ workspaces - styles: slide, slidevert, fade
- ↳ specialWorkspace - styles: same as workspaces
-```
-
-### Extras
-
-For animation style `popin` in `windows`, you can specify a minimum percentage
-to start from. For example:
-
-```
-animation=windows,1,8,default,popin 80%
-```
-
-will make the animation 80% -> 100% of the size.
-
-# Curves
-
-Defining your own Bezier curve can be done with the `bezier` keyword:
-
-```
-bezier=NAME,X0,Y0,X1,Y1
-```
-
-where `NAME` is the name, and the rest are two points for the Cubic Bezier. A
-good website to design your bezier can be found
-[here, on cssportal.com](https://www.cssportal.com/css-cubic-bezier-generator/).
-
-Example curve:
-
-```
-bezier=overshot,0.05,0.9,0.1,1.1
-```
-
# Defining variables
@@ -667,34 +126,6 @@ Use something like
`hyprctl` if you want to expand Hyprland's gestures beyond what's offered in
Basic Configuring.
-# Submaps
-
-If you want keybind submaps, for example if you press ALT+R, you can enter a
-"resize" mode, resize with arrow keys, and leave with escape, do it like this:
-
-```
-bind=ALT,R,submap,resize # will switch to a submap called resize
-
-submap=resize # will start a submap called "resize"
-
-binde=,right,resizeactive,10 0
-binde=,left,resizeactive,-10 0
-binde=,up,resizeactive,0 -10
-binde=,down,resizeactive,0 10
-
-bind=,escape,submap,reset # use reset to go back to the global submap
-
-submap=reset # will reset the submap, meaning end the current one and return to the global one.
-
-# keybinds further down will be global again...
-```
-
-**IMPORTANT:** do not forget a keybind to reset the keymap while inside it! (In
-this case, `escape`)
-
-If you get stuck inside a keymap, you can use `hyprctl dispatch submap reset` to
-go back. If you do not have a terminal open, tough luck buddy. I warned you.
-
# Per-device input configs
Per-device config options will overwrite your options set in the `input`
diff --git a/pages/Configuring/Animations.md b/pages/Configuring/Animations.md
new file mode 100644
index 0000000..36b5344
--- /dev/null
+++ b/pages/Configuring/Animations.md
@@ -0,0 +1,78 @@
+## Table of contents
+{{< toc >}}
+
+## General
+
+Animations are declared with the `animation` keyword.
+
+```
+animation=NAME,ONOFF,SPEED,CURVE,STYLE
+or
+animation=NAME,ONOFF,SPEED,CURVE
+```
+
+for example:
+
+```
+animation=workspaces,1,8,default
+animation=windows,1,10,myepiccurve,slide
+```
+
+`ONOFF` can be either 0 or 1, 0 to disable, 1 to enable.
+
+`SPEED` is the amount of ds (1ds = 100ms) the animation will take
+
+`CURVE` is the bezier curve name, see [curves](#curves).
+
+`STYLE` (optional) is the animation style
+
+The animations are a tree. If an animation is unset, it will inherit its
+parent's values.
+
+_Animation tree:_
+
+```
+global
+ ↳ windows - styles: slide, popin
+ ↳ windowsIn - window open
+ ↳ windowsOut - window close
+ ↳ windowsMove - everything in between, moving, dragging, resizing.
+ ↳ fade
+ ↳ fadeIn - fade in (open) -> layers and windows
+ ↳ fadeOut - fade out (close) -> layers and windows
+ ↳ fadeSwitch - fade on changing activewindow and its opacity
+ ↳ fadeShadow - fade on changing activewindow for shadows
+ ↳ fadeDim - the easing of the dimming of inactive windows
+ ↳ border
+ ↳ workspaces - styles: slide, slidevert, fade
+ ↳ specialWorkspace - styles: same as workspaces
+```
+
+## Extras
+
+For animation style `popin` in `windows`, you can specify a minimum percentage
+to start from. For example:
+
+```
+animation=windows,1,8,default,popin 80%
+```
+
+will make the animation 80% -> 100% of the size.
+
+## Curves
+
+Defining your own Bezier curve can be done with the `bezier` keyword:
+
+```
+bezier=NAME,X0,Y0,X1,Y1
+```
+
+where `NAME` is the name, and the rest are two points for the Cubic Bezier. A
+good website to design your bezier can be found
+[here, on cssportal.com](https://www.cssportal.com/css-cubic-bezier-generator/).
+
+Example curve:
+
+```
+bezier=overshot,0.05,0.9,0.1,1.1
+```
diff --git a/pages/Configuring/Binds.md b/pages/Configuring/Binds.md
new file mode 100644
index 0000000..8525a2a
--- /dev/null
+++ b/pages/Configuring/Binds.md
@@ -0,0 +1,206 @@
+
+## Table of contents
+{{< toc >}}
+
+## Basic
+
+```
+bind=MODS,key,dispatcher,params
+```
+
+for example,
+
+```
+bind=SUPER_SHIFT,Q,exec,firefox
+```
+
+will bind opening firefox to SUPER + SHIFT + Q
+
+{{< hint type=tip >}}
+For binding keys without a modkey, leave it empty:
+```
+bind=,Print,exec,grim
+```
+{{< /hint >}}
+
+*For a complete mod list, see [The basic configuring page](https://wiki.hyprland.org/Configuring/Basic-Config/#variable-types).*
+
+## Uncommon syms / binding with a keycode
+
+See the
+[xkbcommon-keysyms.h header](https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h)
+for all the keysyms. The name you should use is the one after `XKB_KEY_`,
+written in all lowercase.
+
+If you are unsure of what your key's name is, or what it shifts into, you can
+use `xev` or `wev` to find that information.
+
+If you want to bind by a keycode, you can just input it in the KEY position,
+e.g.:
+
+```
+bind=SUPER,28,exec,amongus
+```
+
+Will bind SUPER + T. (T is keycode 28.) - You
+can also use `xev` or `wev` to find keycodes.
+
+## Misc
+
+You can also unbind with `unbind`, e.g.:
+
+```
+unbind=SUPER,O
+```
+
+May be useful for dynamic keybindings with `hyprctl`.
+
+You can also bind mouse buttons, by prefacing the mouse keycode with `mouse:`,
+for example:
+
+```
+bind=SUPER,mouse:272,exec,amongus
+```
+
+will bind it to SUPER + LMB.
+
+For binding only modkeys, you need to use the TARGET modmask (with the
+activating mod) and the `r` flag, e.g.:
+
+```
+bindr=SUPERALT,Alt_L,exec,amongus
+```
+
+You can also bind the mouse wheel with `mouse_up` and `mouse_down`:
+```
+bind=SUPER,mouse_down,workspace,e-1
+```
+(control the reset time with `binds:scroll_event_delay`)
+
+## Bind flags
+
+bind supports flags in this format:
+
+```
+bind[flags]=...
+```
+
+e.g.:
+
+```
+bindrl=MOD,KEY,exec,amongus
+```
+
+flags:
+
+```
+l -> locked, aka. works also when an input inhibitor is active
+r -> release, will trigger on release of a key
+e -> repeat, will repeat when held.
+m -> mouse, see below
+```
+
+## Mouse Binds
+Mouse binds are binds that heavily rely on a mouse, usually its movement.
+They will have one less arg, and look for example like this:
+
+```
+bindm=ALT,mouse:272,movewindow
+```
+
+this will create a bind with ALT + LMB to move the window
+with your mouse.
+
+*Available mouse binds*:
+
+| name | description |
+| -----|------------ |
+| movewindow | moves the active window |
+| resizewindow | resizes the active window |
+
+*Common mouse buttons' codes:*
+```
+LMB -> 272
+RMB -> 273
+```
+
+*for more, you can of course use `wev` to check.*
+
+{{< hint type=tip >}}
+Mouse binds, despite their name, behave like normal binds. You are free to use
+whatever keys / mods you please. When held, the mouse function will be activated.
+{{< /hint >}}
+
+## Binding mods
+
+You can bind a mod alone like this:
+
+```
+bindr=ALT,Alt_L,exec,amongus
+```
+
+## Global Keybinds
+Yes, you heard this right, Hyprland does support global keybinds for ALL apps,
+including OBS, Discord, Firefox, etc.
+
+See the `pass` dispatcher for keybinds.
+
+e.g.:
+
+I've set the "Start/Stop Recording" keybind in OBS to SUPER +
+F10, and I want it to be global.
+
+Simple, add
+```plain
+bind = SUPER,F10,pass,^(com\.obsproject\.Studio)$
+```
+to your config and you're done.
+
+`pass` will pass the PRESS and RELEASE events by itself, no need for a `bindr`.
+This also means that push-to-talk will work flawlessly with one pass, e.g.:
+
+```
+bind=,mouse:276,pass,^(TeamSpeak 3)$
+```
+
+Will pass MOUSE5 to TeamSpeak3.
+
+{{< hint type=important >}}
+XWayland is a bit wonky. Make sure that what you're passing is a "global Xorg
+keybind", otherwise passing from a different XWayland app may not work.
+
+It works flawlessly with all native Wayland applications though.
+
+*Side note*: **OBS** on Wayland really dislikes keybinds with modifiers. If
+they don't work, try removing mods and binding them to e.g. F1.
+Combining this with a submap should yield neat and usable results.
+{{< /hint >}}
+
+## Submaps
+
+If you want keybind submaps, for example if you press ALT +
+R, you can enter a "resize" mode, resize with arrow keys, and leave
+with escape, do it like this:
+
+```
+bind=ALT,R,submap,resize # will switch to a submap called resize
+
+submap=resize # will start a submap called "resize"
+
+binde=,right,resizeactive,10 0
+binde=,left,resizeactive,-10 0
+binde=,up,resizeactive,0 -10
+binde=,down,resizeactive,0 10
+
+bind=,escape,submap,reset # use reset to go back to the global submap
+
+submap=reset # will reset the submap, meaning end the current one and return to the global one.
+
+# keybinds further down will be global again...
+```
+
+**IMPORTANT:** do not forget a keybind to reset the keymap while inside it! (In
+this case, `escape`)
+
+If you get stuck inside a keymap, you can use `hyprctl dispatch submap reset` to
+go back. If you do not have a terminal open, tough luck buddy. I warned you.
diff --git a/pages/Configuring/Dispatchers.md b/pages/Configuring/Dispatchers.md
new file mode 100644
index 0000000..decb230
--- /dev/null
+++ b/pages/Configuring/Dispatchers.md
@@ -0,0 +1,60 @@
+Please keep in mind some layout-specific dispatchers will be listed in the
+layout pages (See the sidebar).
+
+## Parameter explanation
+
+| Param type | Description |
+| ---------- | ----------- |
+| window | a window. Any of the following: Class regex, `title:` and a title regex, `pid:` and the pid, `address:` and the address |
+| workspace | see below. |
+| direction | `l` `r` `u` `d` left right up down |
+| monitor | One of: direction, ID, name, `current` |
+| resizeparams | Pixel delta vec2 (e.g. `10 -10`) or `exact` followed by exact vec2, e.g. `exact 1280 720`) |
+| floatdelta | a float value delta, e.g `-0.2` or `+0.2`. |
+| workspaceopt | see below. |
+
+## Dispatchers:
+
+| Dispatcher | Description | Params |
+| ---------- | ----------- | ------ |
+| exec | executes a shell command | command |
+| pass | passes the key (with mods) to a specified window. Can be used as a workaround to global keybinds not working on Wayland. | window |
+| killactive | closes (not kills) the active window | none |
+| closewindow | closes a specified window | window |
+| workspace | changes the workspace | workspace |
+| movetoworkspace | moves the focused window to a workspace | workspace OR `workspace,window` for a specific window |
+| movetoworkspacesilent | same as above, but doesnt switch to the workspace | workspace OR `workspace,window` for a specific window |
+| togglefloating | toggles the current window's floating state | left empty / `active` for current, or `window` for a specific window |
+| fullscreen | toggles the focused window's fullscreen state | 0 - fullscreen (takes your entire screen), 1 - maximize (keeps gaps and bar(s)) |
+| dpms | sets all monitors' DPMS status. Do not use with a keybind directly. | `on` or `off` |
+| pseudo | toggles the focused window's pseudo mode | none |
+| pin | pins the active window (shown on all workspaces) *note: floating only* | none |
+| movefocus | moves the focus in a direction | direction |
+| movewindow | moves the active window in a direction or to a monitor | direction or `mon:` and a monitor |
+| resizeactive | resizes the active window | resizeparams |
+| moveactive | moves the active window | resizeparams |
+| resizewindowpixel | resizes a selected window | `resizeparams,window`, e.g. `100 100,^(kitty)$` |
+| movewindowpixel | moves a selected window | `resizeparams,window` |
+| cyclenext | focuses the next window on a workspace | none (for next) or `prev` (for previous) |
+| swapnext | swaps the focused window with the next window on a workspace | none (for next) or `prev` (for previous) |
+| focuswindow | focuses the first window matching | window |
+| focusmonitor | focuses a monitor | monitor |
+| splitratio | changes the split ratio | floatdelta |
+| toggleopaque | toggles the current window to always be opaque | none |
+| movecursortocorner | moves the cursor to the corner of the active window | direction, 0 - 3, bottom left - 0, bottom right - 1, top right - 2, top left - 3 |
+| workspaceopt | toggles a workspace option for the active workspace. | workspaceopt |
+| exit | exits the compositor with no questions asked. | none |
+| forcerendererreload | forces the renderer to reload all resources and outputs | none |
+| movecurrentworkspacetomonitor | Moves the active workspace to a monitor | monitor |
+| moveworkspacetomonitor | Moves a workspace to a monitor | workspace and a monitor separated by a space |
+| swapactiveworkspaces | Swaps the active workspaces between two monitors | two monitors separated by a space |
+| togglespecialworkspace | toggles the special workspace on/off | none |
+
+{{< hint type=warning >}}
+it is NOT recommended to set DPMS with a keybind directly, as it
+might cause undefined behavior. Instead, consider something like
+
+```
+bind = MOD,KEY,exec,sleep 1 && hyprctl dispatch dpms off
+```
+{{< /hint >}}
diff --git a/pages/Configuring/Monitors.md b/pages/Configuring/Monitors.md
new file mode 100644
index 0000000..e6881e4
--- /dev/null
+++ b/pages/Configuring/Monitors.md
@@ -0,0 +1,150 @@
+## Table of contents
+
+{{< toc format=html >}}
+
+## General
+
+The general config of a monitor looks like this
+```plain
+monitor=name,resolution,offset,scale
+```
+
+A common example:
+
+```plain
+monitor=DP-1,1920x1080@144,0x0,1
+```
+
+will tell Hyprland to make the monitor on `DP-1` a `1920x1080` display, at 144Hz,
+`0x0` off from the top left corner, with a scale of 1 (unscaled).
+
+{{< hint >}}
+
+The offset is calculated with the scaled resolution, meaning if
+you want your 4K monitor with scale 2 to the left of your 1080p one, you'd use
+the offset `1920x0` for the second screen. (3840 / 2)
+
+{{ hint >}}
+
+Please use the offset for its intended purpose before asking stupid questions
+about "fixing" monitors being mirrored.
+
+Leaving the name empty will define a fallback rule to use when no other rules
+match.
+
+You can use `preferred` as a resolution to use the display's preferred size, and
+`auto` as an offset to let Hyprland decide on an offset for you.
+
+Recommended rule for quickly plugging in random monitors:
+
+```plain
+monitor=,preferred,auto,1
+```
+
+Will make any monitor that was not specified with an explicit rule automatically
+placed on the right of the other(s) with its preferred resolution.
+
+Alternatively you can use the `highrr` or `highres` rules in order to get the best possible
+resolution or refreshrate mix.
+
+for a focus on refreshrate use this:
+
+```plain
+monitor=,highrr,auto,1
+```
+
+for a focus on resolution this:
+
+```plain
+monitor=,highres,auto,1
+```
+
+## Disabling a monitor
+
+To disable a monitor, use
+
+```plain
+monitor=name,disable
+```
+
+## Custom reserved area
+
+If your workflow requires custom reserved area, you can add it with
+
+```plain
+monitor=name,addreserved,TOP,BOTTOM,LEFT,RIGHT
+```
+
+Where `TOP` `BOTTOM` `LEFT` `RIGHT` are integers in pixels of the reserved area
+to add. This does stack on top of the calculated one, (e.g. bars) but you may
+only use one of these rules per monitor in the config.
+
+## Mirrored displays
+
+If you want to mirror a display, add a `,mirror,[NAME]` at the end of the monitor
+rule, examples:
+```
+monitor=DP-3,1920x1080@60,0x0,1,mirror,DP-2
+monitor=,preferred,auto,1,mirror,DP-1
+```
+
+Please remember that mirroring displays will not "re-render" everything for your
+second monitor, so if mirroring a 1080p screen onto a 4K one, the resolution will
+still be 1080p on the 4K display. This also means squishing and stretching
+will occur on non-matching resolutions.
+
+## Rotating and the default workspace
+
+{{< hint type=important >}}
+
+The monitor transform and workspace keywords depend on a monitor rule set
+specifically for the targeted monitor, and ***MUST*** be after it.
+
+{{< /hint >}}
+
+```plain
+workspace=name,number
+```
+
+for example:
+
+```plain
+workspace=DP-1,1
+```
+
+will tell Hyprland to make the default workspace on DP-1 a number 1.
+
+If you want to rotate a monitor, use
+
+```plain
+monitor=NAME,transform,TRANSFORM
+```
+
+where `NAME` is the name, and `TRANSFORM` is an integer, from 0 to 7,
+corresponding to your transform of choice.
+
+
+```
+WL_OUTPUT_TRANSFORM_NORMAL = 0
+WL_OUTPUT_TRANSFORM_90 = 1
+WL_OUTPUT_TRANSFORM_180 = 2
+WL_OUTPUT_TRANSFORM_270 = 3
+WL_OUTPUT_TRANSFORM_FLIPPED = 4
+WL_OUTPUT_TRANSFORM_FLIPPED_90 = 5
+WL_OUTPUT_TRANSFORM_FLIPPED_180 = 6
+WL_OUTPUT_TRANSFORM_FLIPPED_270 = 7
+```
+
+## Binding workspaces to a monitor
+
+A workspace can be bound to a monitor, meaning by default it will ALWAYS open
+on the selected monitor. You can do this with
+```
+wsbind=WORKSPACE,MONITOR
+```
+
+for example:
+```
+wsbind=5,DP-1
+wsbind=name:secret,DP-2
+```
diff --git a/pages/Configuring/Window-Rules.md b/pages/Configuring/Window-Rules.md
new file mode 100644
index 0000000..ac4dee6
--- /dev/null
+++ b/pages/Configuring/Window-Rules.md
@@ -0,0 +1,88 @@
+## Table of contents
+{{< toc >}}
+
+## Window Rules V1
+
+You can set window rules for various actions. These are applied on window open!
+
+```
+windowrule=RULE,WINDOW
+```
+
+`RULE` is a rule (and a param if applicable)
+
+`WINDOW` is a RegEx, either:
+
+- plain regex (for matching a window class)
+- `title:` followed by a regex (for matching a window's title)
+
+you can get both by inspecting `hyprctl clients`
+
+Examples:
+
+```
+windowrule=float,^(kitty)$
+windowrule=move 0 0,title:^(Firefox)(.*)$
+```
+
+## Window Rules V2
+
+In order to allow more flexible rules, while also not breaking compatibility with the above
+rule system, window rules v2 were implemented.
+
+In V2, you are allowed to match multiple variables.
+
+the `RULE` field is unchanged, but in the `WINDOW` field, you can put regexes for multiple values like so:
+```
+windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
+```
+
+For now, the supported fields are:
+```
+class - class regex
+title - title regex
+xwayland - 0/1
+floating - 0/1
+```
+
+Keep in mind you do *not* need to define all of them, but you need to define at least one.
+
+## Rules
+
+| Rule | Description |
+| ---- | ----------- |
+| float | floats a window |
+| tile | tiles a window |
+| fullscreen | fullscreens a window |
+| move \[x\] \[y\] | moves a floating window (x,y -> int or %, e.g. 20% or 100) |
+| size \[x\] \[y\] | resizes a floating window (x,y -> int or %, e.g. 20% or 100) |
+| center | if the window is floating, will center it on the monitor |
+| pseudo | pseudotiles a window |
+| monitor \[id\] | sets the monitor on which a window should open |
+| workspace \[w\] | sets the workspace on which a window should open (for workspace syntax, see [binds->workspaces](../Advanced-config#workspaces)). You can also make \[w\] to `unset`, will unset all previous workspace rules applied to this window. You can also add `silent` after the workspace to make the window open silently. |
+| opacity \[a\] | additional opacity multiplier. Options for a: `float` -> sets an opacity OR `float float` -> sets activeopacity and inactiveopacity respectively |
+| opaque | forces the window to be opaque (can be toggled with the toggleopaque dispatcher) |
+| animation \[style\] (\[opt\]) | forces an animation onto a window, with a selected opt. Opt is optional. |
+| rounding \[x\] | forces the application to have X pixels of rounding, ignoring the set default (in `decoration:rounding`). Has to be an int. |
+| noblur | disables blur for the window |
+| nofocus | disables focus to the window |
+| forceinput | forces an XWayland window to receive input, even if it requests not to do so. (Might fix issues like e.g. Game Launchers not receiving focus for some reason) |
+| pin | pins the window *note: floating only* |
+
+*Examples*:
+```
+windowrule = move 100 100,^(kitty)$
+windowrule = animation popin,^(kitty)$
+windowrule = noblur,^(firefox)$
+```
+
+{{< hint type=tip >}}
+
+Opacity is always a PRODUCT of all opacities. E.g. active_opacity to
+0.5 and windowrule opacity to 0.5 will result in a total opacity 0.25. You are
+allowed to set opacities over 1, but any opacity product over 1 will cause
+graphical glitches. E.g. 0.5 * 2 = 1, and it will be fine, 0.5 * 4 will cause
+graphical glitches.
+
+{{< /hint >}}
+