Floating - bakkeby/dusk GitHub Wiki
A window that is floating is freely placed and resized by the end user. In other words it is a window that is not tiled by the window manager.
A client window can switch between floating and tiled mode via the togglefloating function unless the window is also fixed (i.e. not resizeable).
A floating window can be moved or resized using the mouse. The floating size and position of the client is automatically saved when moved or resized.
Floating windows can overlap. The MOD+left mouse click
keybinding will bring a floating window on
top.
A floating window will always stay on top of tiled windows unless the FocusedOnTop functionality is enabled, which allows for a tiled window to display on top of a floating window as long as it has focus.
The Floating flag is commonly used in client rules to make a client window start as floating.
The size and position of a window that starts out as floating depends on the size hints provided by the application. If there are no size hints or the size hints are outside of the window drawing area then the window will be placed in the top left corner of the window drawing area.
The position of a floating window can be overridden by either the Centered flag, which positions the floating window in the center of the window drawing area, or by the floatpos client rule option allowing more fine-grained control over the size and position of the window.
The window titles for floating clients are by default show separately in a secondary bar at the
bottom of the screen. If you prefer to show floating windows in the main bar along other windows
then you can set the weight of floating windows to 1
.
static int flexwintitle_floatweight = 0; // floating window title weight
See flexwintitle for more details.
Here is a list of functions relating to floating windows.
Function | Description |
---|---|
floatpos | Used to control the size and position of floating windows |
maximize | Maximize a window in the window area |
maximizevert | Maximize a window vertically in the window area |
maximizehorz | Maximize a window horizontally in the window area |
movemouse | Move floating windows around using the mouse |
moveorplace | Move or place the window depending on whether it is floating or not |
resizemouse | Change the size of floating windows using the mouse |
resizeorcfacts | Resize the window depending on whether it if floating or not |
rioresize | Resize the current window using slop |
unfloatvisible | Makes all floating windows on the current workspace tiled |
togglefloating | Makes clients switch between tiled and floating mode |
togglesticky | Toggles the Sticky flag for the selected client |
Here is a list of functionality that is directly related to floating windows.
Functionality | Description |
---|---|
SnapToGaps | Allows a floating window to snap to the outer gaps of the workspace when moved |
SnapToWindows | Allows a floating window to snap to other floating windows when moved |
Here is a list of client flags relating to floating windows.
Flag | Description |
---|---|
AlwaysOnTop | Client window is intended to always display on top (even above floating windows) |
Floating | The client is floating (i.e. not tiled) |
MoveResize | Used internally to indicate that the client is being moved or resized |
MovePlace | Used internally to indicate that the client is being moved within stack |
Floating windows will get the _IS_FLOATING window property set to 1 which a compositor can take advantage of.
Here is an example configuration for picom which lets you have shadows for floating windows, but no shadow for tiled windows.
shadow-exclude = [
"_IS_FLOATING@:32c = 0"
];
In practice the above is saying to exclude shadows where the _IS_FLOATING property is explicitly
set to 0. One could also use "! _IS_FLOATING@:32c = 1"
, but the side effect of this is that it
will remove shadows from context menus as well.
Also see the Tiled topic.
Back to Features.