-
-
Notifications
You must be signed in to change notification settings - Fork 27
Home
FancyWM is a dynamic tiling window manager for Windows. It runs as a process in the background, listens to windowing events, and applies its own logic to position them on the screen.
FancyWM uses two key chord system by default, but is configurable. Triggering an action involves pressing an Activation Hotkey (a chord of two keys, Shift + Win
by default), and then pressing another key (or keys).
For example, the default keybinding move focus left is Shift + Win
, then Left
. A single chord can be registered for frequently used actions (Win + Alt + Left
), by checking the "Use without Activation Hotkey" checkbox in the settings. Note however, that that can clash with application or OS-level hotkeys.
AutoHotkey can also be used to trigger actions and set up custom keybindings - go to Settings > Scripting.
All windows managed by FancyWM belong in a panel, which dictates the type of layout used.
Three panel types are available:
- Vertical panel
+=====V====+
| Window 1 |
+----------+
| Window 2 |
+----------+
| Window 3 |
+==========+
- Horizontal panel [insert screenshot]
+==========+=====H====+==========+
| Window 1 | Window 2 | Window 3 |
+==========+==========+==========+
- Stack panel
+====S=====+
+---Tabs---+
| Window 1 |
+==========+
The default panel depends on the display size - a wider display will use a horizontal panel, a tall display will use a vertical panel.
Useful shortcut to quickly open some wndow while learning FancyWM:
Win + E
(open File Explorer)
Limitation: Stack panels cannot contain other panels.
Opened windows are automatically assigned to the panel containing the currently focused window, if any, or to the top-level panel otherwise.
As with most things in FancyWM, panels can be created either via the mouse or using keybindings.
The default keybindings assigned to Activation
followed by H
/V
/S
, for Horizontal, Vertical and Stack panels, respectively.
Through the UI, panels can be created from the Actions dropdown, by moving slightly over and beyond the top border of a window, and back down.
Created panels wrap the focused window. If you have the General > Tiling behaviour > Reserve space in empty panels option enabled, the focused window will be resized.
Because new windows are assigned to the panel containing the focused window, the very next window you open will be tiled according to the panel type created.
Closing the window can be done as usual or using the x
in the containing panel.
Panels are removed automatically when the last window in the panel is closed or removed.
FancyWM supports only three types of panels, but these can be nested to achieve more complex layouts.
For example, the following layout can be achieved by nesting a vertical panel inside the top-level/default panel.
+=====V====+========+
| Chrome | |
+----------+ VSCode |
| Obsidian | |
+==========+========+
Windows can be moved using the mouse as usual, in which case they are reordered between their neighbouring windows.
Windows can also be swapped with their neighbours using the mouse while holding Shift
.
The same can be achieved using keybindings:
- Move window (
Activation, Arrow
) - Swap window (
Activation, Shift + Arrow
)
Swapping (hold Shift
) may be preferable if the intention is to preserve the window layout.
Imagine Notepad is focused and side-by-side a stack panel containing some N windows. By performing a Swap Left action, the top window in the stack panel will exchange places with Notepad, and the number of windows in the stack panel will remain N.
+=========+============+
| | |
| Notepad | StackPanel |
| | |
+=========+============+
In contrast, moving Notepad into the stack panel (without holding Shift
), will result in the stack panel containing one more window and will cause it to take up the screen real estate previously occupied by the Notepad window.
Windows can be resized using the mouse as usual or by using a configured resizing keybinding.
The resize keybindings increase the size of the window in increments.
FancyWM manages all windows in the active workspace, unless they are:
- minimised/maximised/fullscreen
- topmost windows (always show on top)
- child or popup windows
- pinned to a particular virtual desktop
- ignored by a floating rule (Settings > Rules)
- running with a higher priviledge level (Settings > General > Run with administrator priviledges)
Restoring/unmaximising a window puts it back into it's former panel and dimensions.
FancyWM interoperates with the built-in Virtual Desktop feature in Windows 10 and 11.