Available since LÖVE 0.9.0
Moved from

Sets the display mode and properties of the window.

If width or height is 0, setMode will use the width and height of the desktop.

Changing the display mode may have side effects: for example, canvases will be cleared and values sent to shaders with Shader:send will be erased. Make sure to save the contents of canvases beforehand or re-draw to them afterward if you need to.



success = love.window.setMode( width, height, flags )


number width
Display width.
number height
Display height.
table flags
The flags table with the options:
boolean fullscreen (false)
Fullscreen (true), or windowed (false).
FullscreenType fullscreentype ("desktop")
The type of fullscreen to use. This defaults to "normal" in 0.9.0 through 0.9.2 and to "desktop" in 0.10.0 and older.
boolean vsync (true)
True if LÖVE should wait for vsync, false otherwise.
number msaa (0)
The number of antialiasing samples.
boolean stencil (true)
Whether a stencil buffer should be allocated. If true, the stencil buffer will have 8 bits.
number depth (0)
The number of bits in the depth buffer.
boolean resizable (false)
True if the window should be resizable in windowed mode, false otherwise.
boolean borderless (false)
True if the window should be borderless in windowed mode, false otherwise.
boolean centered (true)
True if the window should be centered in windowed mode, false otherwise.
number display (1)
The index of the display to show the window in, if multiple monitors are available.
number minwidth (1)
The minimum width of the window, if it's resizable. Cannot be less than 1.
number minheight (1)
The minimum height of the window, if it's resizable. Cannot be less than 1.
boolean highdpi (false)
True if high-dpi mode should be used on Retina displays in macOS and iOS. Does nothing on non-Retina displays. Added in 0.9.1.
number x (nil)
The x-coordinate of the window's position in the specified display. Added in 0.9.2.
number y (nil)
The y-coordinate of the window's position in the specified display. Added in 0.9.2.
boolean srgb (false)
Removed in 0.10.0 (set t.gammacorrect in conf.lua instead). True if sRGB gamma correction should be applied when drawing to the screen. Added in 0.9.1.


boolean success
True if successful, false otherwise.


If fullscreen is enabled and the width or height is not supported (see love.window.getFullscreenModes), the window may be resized to the closest available resolution and a resize event will be triggered.

If the fullscreen type is "desktop", then the window will be automatically resized to the desktop resolution.

If you have disabled the window in conf.lua (i.e. t.window = false) and use this function to manually create the window, then you must not call any other* function before this one. Doing so will result in undefined behavior and/or crashes because OpenGL cannot function properly without a window.

Transparent backgrounds are currently not supported.


Make the window resizable with vsync disabled and a minimum width and height set.

function love.load()
    love.window.setMode(800, 600, {resizable=true, vsync=false, minwidth=400, minheight=300})

See Also

Other Languages