Skip to content
Config options

Config options

This page documents all Hyprland configuration options except layout-specific ones. Those are documented on their respective layout pages instead.

For binds, monitors, animations, etc., see the other pages in Core.

Syntax

Update many options at once with:

hl.config({
  category1 = {
    option = value,
  },
  category2 = {
    option1 = value1,
    option2 = value2,
  },
})

Or only a few with:

hl.config({ ["path.option"] = value })

Multiple hl.config() invocations can be used to set options, since each call will only update what was passed into it.

Beware that if there are multiple instances of the same config option being set, the latest line will always shadow all previous lines!

This also means you can update options at runtime, without adding them to your configuration file, using hyprctl eval 'hl.config(...)'. In this case, they will return to their default values the next time you reload (or relaunch) Hyprland.

Tip

Before continuing, make sure you’ve read and understood the naming conventions used in this wiki.

Options are described using tables:

NameDescriptionTypeDefaultLimits
stringstringdata typeDefaultLimit

Default can be one of:

  • Value with respect to type
  • [[Empty]]
  • [[Auto]]

Limit can be one of:

  • Value range
  • None

If literal None is specified in the limit field, it means that there is no limit set for that option. If the value of an option exceeds its limits, Hyprland will throw a config error.

Sections

General

Path: general

NameDescriptionTypeDefaultLimits
allow_tearingMaster switch for allowing tearing to occur. See the Tearing pageboolfalse
border_sizeSize of the border around windowsint1[0 - 20]
extend_border_grab_areaExtends the area around the border where you can click and drag on, only used when general.resize_on_border is onint15[0 - 100]
float_gapsGaps between windows and monitor edges for floating windows -1 means defaultcss_gaps0
gaps_inGaps between windowscss_gaps5
gaps_outGaps between windows and monitor edgescss_gaps20
gaps_workspacesGaps between workspaces. Stacks with gaps_outint0[0 - 100]
hover_icon_on_borderShow a cursor icon when hovering over borders, only used when general.resize_on_border is onbooltrue
layoutWhich layout to use. Options: "dwindle"/"master"/"scrolling"/"monocle"string"dwindle"
localeOverrides the system locale, e.g. "en_US", "es"string[[Empty]]
modal_parent_blockingWhether parent windows of modals will be interactivebooltrue
no_focus_fallbackIf true, will not fall back to the next available window when moving focus in a direction where no window was foundboolfalse
resize_cornerForce floating windows to use a specific corner when being resized (1-4 going clockwise from top left, 0 to disable)int0[0 - 4]
resize_on_borderEnables resizing windows by clicking and dragging on borders and gapsboolfalse

General colors

Path: general.col

NameDescriptionTypeDefaultLimits
active_borderBorder color for the active windowgradient0xffffffff
inactive_borderBorder color for inactive windowsgradient0xff444444
nogroup_borderBorder color for inactive windows that cannot be added to a groupgradient0xffffaaff
nogroup_border_activeBorder color for the active window that cannot be added to a groupgradient0xffff00ff

Snap

Path: general.snap

NameDescriptionTypeDefaultLimits
enabledEnable snapping for floating windowsboolfalse
border_overlapIf enabled, windows snap such that only one border’s worth of space is between themboolfalse
respect_gapsIf enabled, snapping will respect gaps between windows (set in general:gaps_in)boolfalse
monitor_gapMinimum gap in pixels between window and monitor edges before snappingint10[0 - 100]
window_gapMinimum gap in pixels between windows before snappingint10[0 - 100]

Decoration

Path: decoration

NameDescriptionTypeDefaultLimits
active_opacityOpacity of active windowsfloat1.0[0.0 - 1.0]
border_part_of_windowWhether the window border should be a part of the windowbooltrue
dim_aroundHow much the dim_around window rule should dim byfloat0.4[0.0 - 1.0]
dim_inactiveEnables dimming of inactive windowsboolfalse
dim_modalEnables dimming of parents of modal windowsbooltrue
dim_specialHow much to dim the rest of the screen by when a special workspace is open. [0.0 - 1.0]float0.2
dim_strengthHow much inactive windows should be dimmedfloat0.5[0.0 - 1.0]
fullscreen_opacityOpacity of fullscreen windowsfloat1.0[0.0 - 1.0]
inactive_opacityOpacity of inactive windowsfloat1.0[0.0 - 1.0]
roundingRounded corners’ radius (in layout px)int0[0 - 100]
rounding_powerAdjusts the curve used for rounding corners, larger is smoother, 1.0 is a triangular corner, 2.0 is a circle, 4.0 is a squirclefloat2.0[1.0 - 10.0]
screen_shaderA path to a custom shader to be applied at the end of rendering. See examples/screenShader.frag for an examplestring[[Empty]]

Opacity

Opacity is a product of all opacities. Use " override" after an opacity value to set it as an exact value rather than a multiplier.

For example, setting active_opacity to 0.5 and opacity window rule to 0.5 results in a total of 0.25.

Important

Opacity level over 1.0 is allowed, but any product over 1.0 will cause graphical glitches.

Examples
-- Active 0.8, inactive 0.8, fullscreen 1.0 regardless of other rules:
hl.window_rule({
  match   = { class = "kitty" },
  opacity = "0.8 override 0.8 override 1.0 override",
})

Blur

Path: decoration.blur

NameDescriptionTypeDefaultLimits
enabledEnable kawase window background blurbooltrue
brightnessBrightness modulation for blurfloat1[0.0 - 2.0]
contrastContrast modulation for blurfloat0.8916[0.0 - 2.0]
ignore_opacityMake the blur layer ignore the opacity of the windowbooltrue
input_methodsWhether to blur input methods, e.g. fcitx5boolfalse
input_methods_ignorealphaWorks like ignore_alpha in layer rules. If pixel opacity is below the set value, will not blurfloat0.2[0.0 - 1.0]
new_optimizationsWhether to enable further optimizations to the blur. Recommended to leave on, as it will massively improve performancebooltrue
noiseHow much noise to applyfloat0.0117[0.0 - 1.0]
passesThe amount of passes to performint1[0 - 10]
popupsWhether to blur popups, e.g. right-click menusboolfalse
popups_ignorealphaWorks like ignore_alpha in layer rules. If pixel opacity is below the set value, will not blurfloat0.2[0.0 - 1.0]
sizeBlur size (distance)int8
specialWhether to blur behind the special workspace (note: expensive)boolfalse
variantBlur pattern variant. May significantly increase GPU and CPU usagestrkawasesee below
vibrancyIncrease saturation of blurred colorsfloat0.1696[0.0 - 1.0]
vibrancy_darknessHow strong the effect of vibrancy is on dark areasfloat0.0[0.0 - 1.0]
xrayIf enabled, floating windows will ignore tiled windows in their blur. Will reduce overhead on floating blur significantly. Disabled if new_optimizations = falseboolfalse

Note

blur.size and blur.passes have to be at least 1 to apply blur.

Increasing blur.passes is necessary to prevent blur looking wrong on higher blur.size values, but remember that higher blur.passes will place more strain on the GPU.

Blur variants

Some options may be reused by different blur methods.

Available variants:

  • kawase - default
  • acrylic - similar to liquid glass
  • aurora - aurora-like light streaks
  • drops - rain on a window pane
  • fluid_jar - 2D fluid simulation
  • frost - cracked ice
  • haze - a different diffused effect
  • heat_shimmer - a small shimmer with aberration
  • prism - triangular refraction mask
  • ripple - ripple on click
  • water - ripple done with a heightmap
Acrylic

Used by: acrylic
Path: decoration.blur.acrylic

NameDescriptionTypeDefaultLimits
aberrationRelative chromatic separation in the acrylic lensfloat0.025[0.0 - 0.25]
bulbWidth of the curved acrylic edge in pixelsfloat48.0[4.0 - 256.0]
clarityAmount of sharp backdrop passing through the acrylic surfacefloat0.82[0.0 - 1.0]
refractionMaximum acrylic lens displacement in pixelsfloat24.0[0.0 - 48.0]
tintAcrylic tint color. Alpha channel controls optical absorptioncolor0x14EEF5FF
Aurora

Used by: aurora
Path: decoration.blur.aurora

NameDescriptionTypeDefaultLimits
color1First aurora curtain color. Alpha controls its contributioncolor0x29F0A0FF
color2Second aurora curtain color. Alpha controls its contributioncolor0x7A4DFFFF
intensityStrength of the aurora color contributionfloat0.35[0.0 - 1.0]
speedAnimation speed. 0 freezes the animationfloat1.0[0.0 - 10.0]
Drops

Used by: drops
Path: decoration.blur.drops

NameDescriptionTypeDefaultLimits
speedAnimation speed. 0 disables the animationfloat3.0[0.0 - 10.0]
Fluid jar

Used by: fluid_jar
Path: decoration.blur.fluid_jar

NameDescriptionTypeDefaultLimits
colorFluid colorcolor0xCC3399FF
distortionFluid refraction distortion multiplierfloat8.0[0.0 - 10.0]
fill_amountFill level for of the fluidfloat0.5[0.0 - 1.0]
massFluid’s Inertial massfloat1.4[0.1 - 10.0]
precisionFluid simulation precision multiplier. 2x is a good compromise. 4x is expensive. 8x is extreme and unnecessaryfloat2.0[0.5 - 8.0]
speedAnimation speedfloat3.7[0.0 - 10.0]
turbulenceInterior fluid turbulence multiplierfloat1.2[0.0 - 5.0]
Glass

Used by: aurora, drops, heat_shimmer, prism
Path: decoration.blur.glass

NameDescriptionTypeDefaultLimits
refractionMaximum refraction displacement for glass blur types in pixelsfloat20.0[0.0 - 20.0]
roughnessStrength of the glass relief shadingfloat1.0[0.0 - 1.0]
sizePattern size for glass blur types in pixelsfloat40.0[4.0 - 512.0]
Haze

Used by: haze
Path: decoration.blur.haze

NameDescriptionTypeDefaultLimits
intensityStrength of the haze pearlescent sheenfloat0.35[0.0 - 1.0]
iridescenceStrength of the haze pearlescent color shiftfloat0.7[0.0 - 1.0]
Heat shimmer

Used by: heat_shimmer
Path: decoration.blur.heat_shimmer

NameDescriptionTypeDefaultLimits
speedAnimation speed. 0 disables the animationfloat1.0[0.0 - 10.0]
Ripple

Used by: ripple
Path: decoration.blur.ripple

NameDescriptionTypeDefaultLimits
durationDuration in secondsfloat0.45[0.05 - 5.0]
radiusMaximum radius in pixelsfloat400.0[1.0 - 1000.0]
strengthMaximum refraction displacement in pixelsfloat30.0[0.0 - 32.0]
widthWidth of waves in pixelsfloat32.0[1.0 - 200.0]
Water

Used by: water
Path: decoration.blur.water

NameDescriptionTypeDefaultLimits
dampingDecay dampingfloat0.95[0.0 - 1.0]
durationMaximum duration in secondsfloat12.0[0.5 - 60.0]
radiusPointer radius in pixelsfloat20.0[1.0 - 1000.0]
speedPropagation speedfloat0.76[0.0 - 10.0]
strengthMaximum refraction displacement and injection strength in pixelsfloat32.0[0.0 - 32.0]

Shadow

Path: decoration.shadow

NameDescriptionTypeDefaultLimits
enabledEnable drop shadows on windowsbooltrue
colorActive window shadow’s color. Alpha dictates the opacitycolor/gradient0xee1a1a1a
color_inactiveInactive window shadow’s color. If not set, will fall back to colorcolor/gradientunset
offsetShadow’s rendering offsetvec2{0, 0}
rangeShadow range (size) in pixelsint4[0 - 100]
render_powerIn what power to render the falloff. More power, the faster the falloffint3[1 - 4]
scaleShadow’s scalefloat1.0[0.05 - 2.0]
sharpIf enabled, will make the shadows sharp, akin to an infinite render powerboolfalse

Glow

Path: decoration.glow

NameDescriptionTypeDefaultLimits
enabledEnable inner glow on windowsboolfalse
colorActive window glow’s color. Alpha dictates opacitycolor0xee1a1a1a
color_inactiveInactive window glow’s color. If not set, will fall back to colorcolorunset
rangeGlow range (size) in pixelsint10[0 - 100]
render_powerIn what power to render the falloff. More power, the faster the falloffint3[1 - 4]

Motion blur

Path: decoration.motion_blur

NameDescriptionTypeDefaultLimits
enabledenable motion blur on moving/resizing windowsboolfalse
samplesThe amount of samples to render. More will mean clearer blur, at the cost of more computeint7[1 - 64]

Wobble

Path: decoration.wobble

NameDescriptionTypeDefaultLimits
enabledenable wobble on moving/resizing windowsboolfalse
meshamount of wobble mesh vertices per edgeint12[2 - 32]
stiffnessspring stiffness for wobble deformationfloat200[0.0001 - 1000]
dampingspring damping for wobble deformationfloat12[0 - 1000]
massspring mass for wobble deformationfloat1[0.0001 - 1000]
intensitywobble deformation impulse multiplierfloat0.2[0 - 3]
value_epsilonposition epsilon below which wobble is considered stablefloat0.25[0 - 100]
velocity_epsilonvelocity epsilon below which wobble is considered stablefloat2[0 - 1000]

Animations

Path: animations

NameDescriptionTypeDefaultLimits
enabledEnable animationsbooltrue
workspace_wraparoundEnable workspace wraparound, causing directional workspace animations to animate as if the first and last workspaces were adjacentboolfalse

More about animations can be read here.

Input

Path: input

NameDescriptionTypeDefaultLimits
accel_profileSets the cursor acceleration profile. See the note below. Leave empty to use libinput’s default mode for your input device. libinput#pointer-acceleration. Options: "adaptive"/"flat"/"custom"string[[Empty]]
emulate_discrete_scrollEmulates discrete scrolling from high resolution scrolling events. 0 disables it, 1 enables handling of non-standard events only, and 2 force enables all scroll wheel events to be handledint1[0 - 2]
float_switch_override_focusIf 1/2 focus will change to the window under the cursor when changing from tiled-to-floating and vice versa. If 2, focus will also follow mouse on float-to-float switches. 0 means disabledint1[0 - 2]
focus_on_closeControls the window focus behavior when a window is closed. When set to 0, focus will shift to the next window candidate. When set to 1, focus will shift to the window under the cursor. When set to 2, focus will shift to the most recently used/active windowint0[0 - 2]
follow_mouseSpecify if and how cursor movement should affect window focus. See the note belowint1[0 - 3]
follow_mouse_shrinkShrinks the inactive window hitboxes used for focus detection by the specified number of pixels. This creates a dead zone in gaps between windows where moving the cursor will not change focus. Works only with follow_mouse set to 1int0[0 - 300]
follow_mouse_thresholdThe smallest distance in logical pixels the mouse needs to travel for the window under it to get focused. Works only with follow_mouse set to1float0.0
force_no_accelForce no cursor acceleration. This bypasses most of your pointer settings to get as raw of a signal as possible. Enabling this is not recommended due to potential cursor desynchronization.boolfalse
kb_fileIf you prefer, you can use a path to your custom .xkb filestring[[Empty]]
kb_layoutAppropriate XKB keymap parameterstring"us"
kb_modelAppropriate XKB keymap parameter. See the note belowstring[[Empty]]
kb_optionsAppropriate XKB keymap parameterstring[[Empty]]
kb_rulesAppropriate XKB keymap parameterstring[[Empty]]
kb_variantAppropriate XKB keymap parameterstring[[Empty]]
left_handedSwitches RMB and LMBboolfalse
mouse_refocusIf enabled, mouse focus will switch to the hovered window when the pointer crosses a window boundary. Works only with follow_mouse set to 1booltrue
natural_scrollInverts scrolling direction. When enabled, scrolling moves content directly, rather than manipulating a scrollbarboolfalse
numlock_by_defaultEnable numlock by defaultboolfalse
off_window_axis_eventsHandles axis events around (gaps/border for tiled, dragarea/border for floated) a focused window. 0 ignores axis events 1 sends out-of-bound coordinates 2 fakes pointer coordinates to the closest point inside the window 3 warps the cursor to the closest point inside the windowint1[0 - 3]
repeat_delayDelay before a held-down key is repeated, in millisecondsint600[0 - 2000]
repeat_rateThe repeat rate for held-down keys, in repeats per secondint25[0 - 200]
resolve_binds_by_symDetermines how keybinds act when multiple layouts are used. If false, keybinds will always act as if the first specified layout is active. If true, keybinds specified by symbols are activated when you type the respective symbol with the current layoutboolfalse
rotationSets the rotation of a device in degrees clockwise off the logical neutral positionint0[0 - 359]
scroll_buttonSets the scroll button. Check wev for the ID. 0 means defaultint0[0 - 300]
scroll_button_lockIf the scroll button lock is enabled, the button does not need to be held down. Pressing and releasing the button toggles the button lock, which logically holds the button down or releases it. While the button is logically held down, motion events are converted to scroll eventsboolfalse
scroll_pointsSets the scroll acceleration profile, when accel_profile is set to "custom". Has to be in the form "<step> <points>". Leave empty to have a flat scroll curvestring[[Empty]]
scroll_methodSets the scroll method. Additional info: libinput#scrolling. Options: "2fg"/"edge"/"on_button_down"/"no_scroll" (2fg - 2 fingers)string[[Empty]]
scroll_factorMultiplier added to scroll movement for external mice. Note that there is a separate setting for touchpad scroll_factorfloat1.0[0 - 2]
sensitivitySets the mouse input sensitivity. Additional info: libinput#pointer-accelerationfloat0.0[-1.0 - 1.0]
special_fallthroughif enabled, having only floating windows in the special workspace will not block focusing windows in the regular workspaceboolfalse
XKB keymap params

You can find a list of models, layouts, variants and options in /usr/share/X11/xkb/rules/evdev.lst. Alternatively, you can use the localectl command to discover what is available on your system.

For switchable keyboard configurations, take a look at the binds page entry.

follow mouse
  • 0 - Cursor movement will not change focus.
  • 1 - Cursor movement will always change focus to the window under the cursor.
  • 2 - Cursor focus will be detached from keyboard focus. Clicking on a window will move keyboard focus to that window.
  • 3 - Cursor focus will be completely separate from keyboard focus. Clicking on a window will not change keyboard focus.
accel profile

custom <step> <points...>

Example: custom 200 0.0 0.5

scroll points

<step> <points...>

Example: 0.2 0.0 0.5 1 1.2 1.5

See the libinput doc for more insights on how this works.

To mimic the Windows acceleration curves, take a look at this script.

Touchpad

Path: input.touchpad

NameDescriptionTypeDefaultLimits
clickfinger_behaviorButton presses with 1, 2, or 3 fingers will be mapped to LMB, RMB, and MMB respectively. This disables interpretation of clicks based on location on the touchpad. Additional info: libinput#clickfinger-behaviorboolfalse
disable_while_typingDisable the touchpad while typingbooltrue
drag_3fgEnables three finger drag. Additional info: libinput#drag-3fgint0[0 - 2]
drag_lockWhen enabled, lifting the finger off while dragging will not drop the dragged item. 0 - disabled, 1 - enabled with timeout, 2 - enabled sticky. Additional info: libinput#tap-and-dragint0[0 - 2]
flip_xInverts the horizontal movement of the touchpadboolfalse
flip_yInverts the vertical movement of the touchpadboolfalse
middle_button_emulationSending LMB and RMB simultaneously will be interpreted as a middle click. This disables any touchpad area that would normally send a middle click based on location. Additional info: libinput#middle-button-emulationboolfalse
natural_scrollInverts scrolling direction. When enabled, scrolling moves content directly, rather than manipulating a scrollbarboolfalse
scroll_factorMultiplier applied to the amount of scroll movementfloat1.0[0.0 - 2.0]
tap_and_dragSets the tap and drag mode for the touchpadbooltrue
tap_button_mapSets the tap button mapping for touchpad button emulation. When empty, defaults to "lrm". L - Left, M - Middle, R - Rightstring[[Empty]]“lrm”/“lmr”
tap_to_clickTapping on the touchpad with 1, 2, or 3 fingers will send LMB, RMB, and MMB respectivelybooltrue

Touchdevice

Path: input.touchdevice

NameDescriptionTypeDefaultLimits
enabledWhether input is enabled for touch devicesbooltrue
outputThe monitor to bind touch devices. The default is auto-detection. To stop auto-detection, use an empty stringstring[[Auto]]
transformTransform the input from touchdevices. The possible transformations are the same as those of the monitorsint0[0 - 6]

Virtualkeyboard

Path: input.virtualkeyboard

NameDescriptionTypeDefaultLimits
release_pressed_on_closeRelease all pressed keys by virtual keyboard on closeboolfalse
share_statesUnify key down states and modifier states with other keyboards. 0 - no, 1 - yes, 2 - yes unless IME clientint2[0 - 2]

Tablet

Path: input.tablet

NameDescriptionTypeDefaultLimits
outputThe monitor to bind tablets. Can be "current" or a monitor name. Leave empty to map across all monitorsstring[[Empty]]
transformTransform the input from tablets. The possible transformations are the same as those of the monitorsint0[0 - 6]
absolute_region_positionWhether to treat the region_position as an absolute position in monitor layout. Only applies when output is emptyboolfalse
active_area_positionPosition of the active area in mmvec2{0, 0}
active_area_sizeSize of tablet’s active area in mmvec2{0, 0}
left_handedIf enabled, the tablet will be rotated 180 degreesboolfalse
region_positionPosition of the mapped region in monitor layout relative to the top left corner of the bound monitor or all monitorsvec2{0, 0}
region_sizeSize of the mapped region. When this variable is set, tablet input will be mapped to the region. {0, 0} or invalid size means unsetvec2{0, 0}
relative_inputWhether the input should be relativeboolfalse

Tablettool

Path: input.tablettool

NameDescriptionTypeDefaultLimits
eraser_button_modeChange the eraser button behavior on the tool. When set to 0, use the default hardware behavior of the tool. When set to 1, the eraser button on the tool sends a button event insteadint0[0 - 6]
eraser_button_overrideSet a button to be button event when eraser_button_mode is set to 1. Must be a valid button (e.g., BTN_STYLUS) excluding fake buttons (e.g., BTN_TOOL_*) and keys (KEY_*). Check wev for the ID. 0 means defaultint0[0 - …]
pressure_range_minSet the minimum pressure range for the tool. Negative values mean it will use device defaults. Usually it is 0.0float-1.0[-1.0 - 1.0]
pressure_range_maxSet the maximum pressure range for the tool. Negative values mean it will use device defaults. Usually it is 1.0float-1.0[-1.0 - 1.0]

Per-device input config

Described here.

Gestures

Path: gestures

NameDescriptionTypeDefaultLimits
close_max_timeoutThe timeout for a window to close when using a 1:1 gesture, in msint1000[10 - 2000]
workspace_swipe_cancel_ratioHow much the swipe has to proceed in order to commence it. Example, when set to 0.7: if more than 70% of the distance is covered, switch; else, cancel the gesturefloat0.5[0.0 - 1.0]
workspace_swipe_create_newWhether a swipe right on the last workspace should create a new onebooltrue
workspace_swipe_direction_lockIf enabled, switching direction will be locked when you swipe past the direction_lock_threshold (touchpad only)booltrue
workspace_swipe_direction_lock_thresholdIn pixels, the distance to swipe before direction lock activates (touchpad only)int10[0 - 200]
workspace_swipe_distanceIn pixels, the distance of the touchpad gestureint300[0 - 2000]
workspace_swipe_foreverIf enabled, swiping will not clamp at the neighboring workspaces but continue to the further onesboolfalse
workspace_swipe_invertInvert the swipe direction (touchpad only)booltrue
workspace_swipe_min_speed_to_forceMinimum speed in pixels per timepoint to force the change ignoring cancel_ratio. 0 means disabledint30[0 - 200]
workspace_swipe_touchEnable workspace swiping from the edge of a touchscreenboolfalse
workspace_swipe_touch_invertInvert the swipe direction (touchscreen only)boolfalse
workspace_swipe_use_rIf enabled, swiping will use the r prefix instead of the m prefix for finding workspacesboolfalse

Scrolling

Path: gestures.scrolling

NameDescriptionTypeDefaultLimits
move_snap_to_gridWhen releasing the scroll move gesture, whether it should try to snap to the gridbooltrue
move_snap_cursorWhen releasing the scroll move gesture, whether it should snap the cursor to the newly focused windowbooltrue

Group

Path: group

NameDescriptionTypeDefaultLimits
auto_groupWhether new windows will be automatically grouped into the focused unlocked group. Note: if you want to disable auto_group only for specific windows, use the “group barred” window rule insteadbooltrue
drag_into_groupWhether dragging a window into an unlocked group will merge them. 0 - disabled, 1 - enabled, 2 - only when dragging into a groupbarint1[0 - 2]
focus_removed_windowWhether Hyprland should focus on the window that has just been moved out of the groupbooltrue
group_on_movetoworkspaceWhether using hl.dsp.window.move({ workspace }) will merge the window into the workspace’s solitary unlocked groupboolfalse
insert_after_currentWhether new windows in a group spawn after current or at group tailbooltrue
merge_floated_into_tiled_on_groupbarWhether dragging a floating window into a tiled window groupbar will merge themboolfalse
merge_groups_on_dragWhether window groups can be dragged into other groupsbooltrue
merge_groups_on_groupbarWhether one group will be merged with another when dragged into its groupbar. Note: enabling this option only works when combined with drag_into_group = 2 and merge_groups_on_drag = truebooltrue

Group colors

Path: group.col

NameDescriptionTypeDefaultLimits
border_activeActive group border colorgradient0x66ffff00
border_inactiveInactive group border colorgradient0x66777700
border_locked_activeActive locked group border colorgradient0x66ff5500
border_locked_inactiveInactive locked group border colorgradient0x66775500

Groupbar

Path: group.groupbar

NameDescriptionTypeDefaultLimits
enabledEnables groupbarsbooltrue
blurApplies blur to the groupbar indicators and gradientsboolfalse
disable_when_onlyDisable groupbar if it contains a single windowboolfalse
font_familyFont used to display groupbar titles, use misc.font_family if not specifiedstring[[Empty]]
font_sizeFont size of groupbar titleint8[2 - 64]
font_weight_activeFont weight of active groupbar titlefont_weight"normal"
font_weight_inactiveFont weight of inactive groupbar titlefont_weight"normal"
gaps_inGap size between gradientsint2[0 - 20]
gaps_outGap size between gradients and windowint2[0 - 20]
gradientsEnables gradientsboolfalse
gradient_round_only_edgesRound only the gradient edges of the entire groupbarbooltrue
gradient_roundingHow much to round the gradientsint2[0 - 100]
gradient_rounding_powerAdjusts the curve used for rounding gradient corners, larger is smoother, 1.0 is a triangular corner, 2.0 is a circle, 4.0 is a squirclefloat2.0[1.0 - 10.0]
heightHeight of the groupbarint14[0 - 64]
indicator_gapHeight of gap between groupbar indicator and titleint0[0 - 64]
indicator_heightHeight of the groupbar indicatorint3[0 - 64]
keep_upper_gapAdd or remove upper gapbooltrue
middle_click_closeWhether middle clicking the groupbar closes the clicked windowbooltrue
prioritySets the decoration priority for groupbarsint3[0 - 6]
render_titlesWhether to render titles in the group bar decorationbooltrue
round_only_edgesRound only the indicator edges of the entire groupbarbooltrue
roundingHow much to round the indicatorint1[0 - 40]
rounding_powerAdjusts the curve used for rounding groupbar corners, larger is smoother, 1.0 is a triangular corner, 2.0 is a circle, 4.0 is a squirclefloat2.0[1.0 - 10.0]
scrollingWhether scrolling in the groupbar changes group active windowbooltrue
stackedRender the groupbar as a vertical stackboolfalse
text_colorColor for window titles in the groupbarcolor0xffffffff
text_color_inactiveColor for inactive windows’ titles in the groupbar (if unset, defaults to text_color)colorunset
text_color_locked_activeColor for the active window’s title in a locked group (if unset, defaults to text_color)colorunset
text_color_locked_inactiveColor for inactive windows’ titles in locked groups (if unset, defaults to text_color_inactive)colorunset
text_offsetAdjust vertical position for titlesint0[-20 - 20]
text_paddingSet horizontal padding for titlesint0[0 - 22]
Groupbar colors

Path: group.groupbar.col

NameDescriptionTypeDefaultLimits
activeActive group bar background colorgradient0x66ffff00
inactiveInactive (out of focus) group bar background colorgradient0x66777700
locked_activeActive locked group bar background colorgradient0x66ff5500
locked_inactiveInactive locked group bar background colorgradient0x66775500

Misc

Path: misc

NameDescriptionTypeDefaultLimits
allow_session_lock_restoreIf true, will allow you to restart a lock screen app in case it crashesboolfalse
always_follow_on_dndWill make mouse focus follow the mouse when dragging and dropping. Recommended to leave it enabled, especially for people using focus follows mouse at 0booltrue
animate_manual_resizesIf true, will animate manual window resizes/movesboolfalse
animate_mouse_windowdraggingIf true, will animate windows being dragged by mouse, note that this can cause weird behavior on some curvesboolfalse
anr_missed_pingsNumber of missed pings before showing the ANR dialogint5[1 - 20]
background_colorChange the background color (requires enabled disable_hyprland_logo)color0x111111
bell_soundPath to custom wav/ogg system bell. “none” or an empty string mutes it. “default” uses the system’s current onestring"default"
close_special_on_emptyClose the special workspace if the last window is removedbooltrue
disable_autoreloadIf true, the config will not reload automatically on save, and instead needs to be reloaded with hyprctl reload. Might save on batteryboolfalse
disable_hyprland_guiutils_checkDisable the warning if hyprland-guiutils is not installedboolfalse
disable_hyprland_logoDisables the random Hyprland logo/anime girl background. :(boolfalse
disable_scale_notificationDisables notification popup when a monitor fails to set a suitable scaleboolfalse
disable_splash_renderingDisables the Hyprland splash rendering (requires a monitor reload to take effect)boolfalse
disable_watchdog_warningDisables the warning about not using start-hyprlandboolfalse
disable_xdg_env_checksDisable the warning if XDG environment is externally managedboolfalse
enable_anr_dialogWhether to enable the ANR (app not responding) dialog when your apps hangbooltrue
enable_swallowEnable window swallowingboolfalse
exit_window_retains_fullscreenWhether closing a fullscreen window makes the next focused window to be fullscreened. 0 - disabled, 1 - enabled, 2 - only when closing a grouped window, 3 - only when closing a non-grouped windowint0[0 - 3]
float_force_onscreenwhether/how existing floating windows should be constrained to stay on-screen. 0 - no constraints, 1 - must be partially onscreen, 2 - must be fully onscreenint0[0 - 2]
new_float_force_onscreensame as float_force_onscreen, but specifically for newly-spawned floating windowsint2[0 - 2]
focus_on_activateWhether Hyprland should focus an app that requests to be focused (an activate request)boolfalse
font_familySets the global default font used to render textstring"Sans"
force_default_wallpaperEnforce any of the 3 default wallpapers. 0 - disables the anime background, 1 - disables the anime background, 2 - enables anime background, -1 - randomint-1[-1 - 2]
initial_workspace_token_timeoutthe time in seconds a window has to open on its invoked workspace before the tracking token expires.int10[1 - 3600]
initial_workspace_trackingIf enabled, windows will open on the workspace they were invoked on. 0 - disabled, 1 - single-shot, 2 - persistent (all children too)int1
key_press_enables_dpmsIf DPMS is set to off, wake up the monitors if a key is pressedboolfalse
layers_hog_keyboard_focusIf true, will make keyboard-interactive layers keep their focus on mouse move, e.g. wofi, bemenubooltrue
lockdead_screen_delayDelay in ms after which the “lockdead” screen will appear in case a locks creen app fails to cover all the outputsint1000[0 - 5000]
middle_click_pasteWhether to enable middle-click-paste (aka primary selection)booltrue
mouse_move_enables_dpmsIf DPMS is set to off, wake up the monitors if the mouse movesboolfalse
mouse_move_focuses_monitorWhether mouse moving into a different monitor should focus itbooltrue
name_vk_after_procName virtual keyboards after the processes that create them, e.g. /usr/bin/fcitx5 will have hl-virtual-keyboard-fcitx5booltrue
on_focus_under_fullscreenIf there is a fullscreen or maximized window, decide whether a tiled window requested to focus should replace it, stay behind or disable the fullscreen/maximized state. 0 - ignore focus request (keep focus on fullscreen window), 1 - takes over, 2 - unfullscreen/unmaximizeint2[0 - 2]
render_unfocused_fpsThe maximum limit for render_unfocused windows’ FPS in the background (see also Window-Rules, e.g. render_unfocused)int15[1 - 120]
screencopy_force_8bForces 8 bit screencopybooltrue
session_lock_blurEnables blur for lock screen. session_lock_xray must be enabledboolfalse
session_lock_xrayIf true, keep rendering workspaces below your lock screenboolfalse
size_limits_tiledWhether to apply min_size and max_size rules to tiled windowsboolfalse
splash_font_familyChanges the font used to render the splash text, selected from system fonts (requires a monitor reload to take effect)string[[Empty]]
swallow_exception_regexThe title regex to be used for windows that should not be swallowed by the windows specified in swallow_regex, e.g. wev. The regex is matched against the parent, e.g. Kitty, window’s title on the assumption that it changes to whatever process it’s runningstring[[Empty]]
swallow_regexThe class regex to be used for windows that should be swallowed (usually, a terminal)string[[Empty]]
vrrControls the VRR (Adaptive Sync) of your monitors. 0 - off, 1 - on, 2 - fullscreen only, 3 - fullscreen with video or game content typeint0[0 - 3]

Path: misc.col

NameDescriptionTypeDefaultLimits
splashChanges the color of the splash text (requires a monitor reload to take effect)color0x55ffffff

Layout

Path: layout

NameDescriptionTypeDefaultLimits
single_window_aspect_ratioWhenever only a single window is shown on a screen, add padding so that it conforms to the specified aspect ratio. A value like 4 3 on a 16:9 screen will make it a 4:3 window in the middle with padding to the sidesvec2{0, 0}
single_window_aspect_ratio_toleranceSets a tolerance for single_window_aspect_ratio, so that if the padding that would have been added is smaller than the specified fraction of the height or width of the screen, it will not attempt to adjust the window sizefloat0.1[0.0 - 1.0]

Binds

Path: binds

NameDescriptionTypeDefaultLimits
allow_pin_fullscreenIf enabled, allow fullscreen to pinned windows, and restore their pinned status afterwardsboolfalse
allow_workspace_cyclesIf enabled, workspaces don’t forget their previous workspace, so cycles can be created by switching to the first workspace in a sequence, then endlessly going to the previous workspaceboolfalse
disable_keybind_grabbingIf enabled, apps that request keybinds to be disabled, e.g. VMs, will not be able to do soboolfalse
drag_thresholdMovement threshold in pixels for window dragging and click/drag bind flags. 0 means disabledint0[0 - …]
focus_preferred_methodSets the preferred focus finding method when using hl.dsp.focus({ direction })/hl.dsp.window.move({ direction })/etc. 0 - most recent active window has priority, 1 - longer shared edges have priority)int0[0 - 1]
hide_special_on_workspace_changeIf enabled, changing the active workspace (including to itself) will hide the special workspace on the monitor where the newly active workspace residesboolfalse
ignore_group_lockIf enabled, dispatchers like hl.dsp.window.move({ into_group }) and hl.dsp.window.move({ out_of_group }) will ignore lock per groupboolfalse
movefocus_cycles_fullscreenIf enabled, when on a fullscreen window, hl.dsp.focus({ direction }) will cycle fullscreen, else, it will move the focus in a directionboolfalse
movefocus_cycles_groupfirstIf enabled, when in a grouped window, hl.dsp.focus({ direction }) will cycle windows in the groups first, then at each ends of the tabs, it’ll move on to other windows/groupsboolfalse
pass_mouse_when_boundIf enabled, will pass the mouse events to apps/dragging windows around if a keybind has been triggeredboolfalse
scroll_event_delayIn ms, how many ms to wait after a scroll event to allow passing another one for the bindsint300[0 - 2000]
window_direction_monitor_fallbackIf enabled, moving a window or focus over the edge of a monitor with a direction will move it to the next monitor in that directionbooltrue
workspace_back_and_forthIf enabled, an attempt to switch to the currently focused workspace will instead switch to the previous workspace, akin to i3’s _auto_back_and_forth_boolfalse
workspace_center_onWhether switching workspaces should center the cursor on the workspace (0) or on the last active window for that workspace (1)int1[0 - 1]

Xwayland

Path: xwayland

NameDescriptionTypeDefaultLimits
enabledAllow running applications using X11booltrue
create_abstract_socketCreate the abstract Unix domain socket for Xwayland connections. Xwayland restart is required for changes to take effect; Linux onlyboolfalse
force_zero_scalingForces a scale of 1 on Xwayland windows on scaled displaysboolfalse
use_nearest_neighborUses the nearest neighbor filtering for Xwayland apps, making them pixelated rather than blurrybooltrue

OpenGL

Path: opengl

NameDescriptionTypeDefaultLimits
nvidia_anti_flickerReduces flickering on NVIDIA at the cost of possible frame drops on lower-end GPUs. On non-NVIDIA, this is ignoredbooltrue

Render

Path: render

NameDescriptionTypeDefaultLimits
cm_auto_hdrAuto-switch to HDR in fullscreen when needed. 0 - disabled, 1 - switch to hdr, 2 - switch to hdredidint1[0 - 2]
cm_enabledWhether the color management pipeline should be enabled or not. Requires restartbooltrue
cm_sdr_eotfDefault transfer function for displaying SDR apps. default - Use default value (sRGB), gamma22 - treat unspecified as Gamma 2.2, gamma22force - treat unspecified and sRGB as Gamma 2.2, srgb - treat unspecified as sRGB. Options: "default"/"gamma22"/"gamma22force"/"srgb"string"default"
ctm_animationWhether to enable a fade animation for CTM changes (hyprsunset). 2 means “auto” which disables them on NVIDIAint2[0 - 2]
commit_timing_enabledEnable commit timing proto. Requires restartbooltrue
direct_scanoutEnables direct scanout. Direct scanout attempts to reduce lag when there is only one fullscreen application on a screen (game). It is also recommended to set this to false if the fullscreen application shows graphical glitches. 0 - disabled, 1 - enabled, 2 - auto (enabled with content type ‘game’)int0[0 - 2]
expand_undersized_texturesWhether to expand undersized textures along the edge, or rather stretch the entire texturebooltrue
fp16_sdr_tfInternal workbuffer transfer function for fp16 in SDR mode. 0 - monitor, 1 - linearint0[0 - 1]
icc_vcgt_enabledEnable sending VCGT ramps to KMS with ICC profilesbooltrue
keep_unmodified_copyKeep unmodified SDR frame copy for screensharing. 0 - disabled, 1 - enabled, 2 - auto (enabled in HDR with SDR modifiers). Set to 1 if screenshots are transparentint2[0 - 2]
new_render_schedulingAutomatically uses triple buffering when needed, improves FPS on underpowered devicesboolfalse
not_shown_fifo_lockControl fifo locking for not shown surfaces. always - use fifo lock for any surface, ignore_unfocused - ignore render_unfocused windows, never - skip locking invisible surfacesint0[0 - 2]
non_shader_cmEnable CM without shader. 0 - disable, 1 - whenever possible, 2 - DS and passthrough only, 3 - disable and ignore CM issues. Options: [0 - 3]int2[0 - 3]
non_shader_cm_interop0 - external ctm (hyprsunset, etc.) is disabled in fullscreen, 1 - external ctm is enabled in fullscreen, 2 - external ctm is disabled for fullscreen photo/video/game content typesint2[0 - 2]
send_content_typeReport content type to allow monitor profile autoswitch (may result in a black screen during the switch)booltrue
use_fp16Use FP16 buffers internally. 0 - disabled, 1 - enabled, 2 - enabled in HDR modeint2[0 - 2]
use_shader_blur_blendUse experimental blurred bg blending (glitched on rotated screens). Set to true if blur is missing with fp16 or keep_unmodified_copyboolfalse
xp_modeDisables back buffer and bottom layer renderingboolfalse

cm_auto_hdr requires the --target-colorspace-hint-mode=source mpv option to work with mpv versions greater than v0.40.0.

Cursor

Path: cursor

NameDescriptionTypeDefaultLimits
default_monitorThe name of a default monitor for the cursor to be set to on startup (see hyprctl monitors for names)string[[Empty]]
enable_hyprcursorWhether to enable hyprcursor supportbooltrue
hide_on_key_pressHides the cursor when you press any key until the mouse is movedboolfalse
hide_on_tabletHides the cursor when the last input was a tablet input until a mouse input is doneboolfalse
hide_on_touchHides the cursor when the last input was a touch input until a mouse input is donebooltrue
hotspot_paddingThe padding, in logical px, between screen edges and the cursorint0[0 - 20]
inactive_timeoutIn seconds, after how many seconds of cursor’s inactivity to hide it. Set to 0 for neverfloat0[0 - 20]
invisibleDon’t render cursorsboolfalse
min_refresh_rateMinimum refresh rate for cursor movement when no_break_fs_vrr is active. Set to minimum supported refresh rate or higherint24[10 - 500]
no_break_fs_vrrDisables scheduling new frames on cursor movement for fullscreen apps with VRR enabled to avoid framerate spikes (may require no_hardware_cursors set to 1). 0 - disabled, 1 - enabled, 2 - auto (enabled with content type ‘game’)int2[0 - 2]
no_hardware_cursorsDisables hardware cursors. 0 - use hw cursors if possible, 1 - don’t use hw cursors, 2 - auto (disable when tearing)int2[0 - 2]
no_warpsIf true, will not warp the cursor in many cases (focusing, keybinds, etc.)boolfalse
persistent_warpsWhen a window is refocused, the cursor returns to its last position relative to that window, rather than to the centreboolfalse
sync_gsettings_themeSync XCursor theme with GSettings. It applies cursor-theme and cursor-size on theme load to GSettings making most CSD GTK based clients use the same XCursor theme and sizebooltrue
use_cpu_bufferMakes HW cursors use a CPU buffer. Required on NVIDIA to have HW cursors. 0 - disabled, 1 - enabled, 2 - auto (enabled with NVIDIA)int2[0 - 2]
warp_back_after_non_mouse_inputWarp the cursor back to where it was after using a non-mouse input to move it, and then returning back to the mouseboolfalse
warp_on_change_workspaceMove the cursor to the last focused window after changing the workspace. 0 - Disabled, 1 - Enabled, 2 - Force (ignores cursor:no_warps option)int0[0 - 2]
warp_on_monitor_changeMove the cursor to the last focused window when focusing a different monitor. -1 - follow value of cursor:warp_on_change_workspace, 0 - disabled, 1 - enabled, 2 - force even if cursor:no_warpsint-1[-1 - 2]
warp_on_toggle_specialMove the cursor to the last focused window when toggling a special workspace. 0 - Disabled, 1 - Enabled, 2 - Force (ignores cursor:no_warps option)int0[0 - 2]
zoom_detached_cameraDetach the camera from the mouse when zoomed in, only ever moving the camera to keep the mouse in view when it goes past the screen edgesbooltrue
zoom_disable_aaDisable antialiasing when zooming, which means things will be pixelated instead of blurryboolfalse
zoom_factorThe factor to zoom by around the cursor. Like a magnifying glass. Minimum 1.0 (meaning no zoom)float1.0[1 - 10]
zoom_rigidWhether the zoom should follow the cursor rigidly (cursor is always centered if it can be) or looselyboolfalse

Ecosystem

Path: ecosystem

NameDescriptionTypeDefaultLimits
enforce_permissionsWhether to enable permission controlboolfalse
no_donation_nagDisable the popup that shows up twice a year encouraging to donateboolfalse
no_update_newsDisable the popup that shows up when you update Hyprland to a new versionboolfalse

Quirks

Path: quirks

NameDescriptionTypeDefaultLimits
prefer_hdrReport HDR mode as preferred. 0 - disabled, 1 - always, 2 - gamescope onlyint0[0 - 1]
skip_non_kms_dmabuf_formatsdo not report dmabuf formats which cannot be imported into KMSboolfalse

Some clients expect the monitor to be in HDR mode prior to the client start. This breaks auto HDR activation and can cause whitescreen and flickering. Use prefer_hdr to fix it.

Input Capture

Path: input-capture

NameDescriptionTypeDefaultLimits
capture_modifiersif enabled, modifiers are also captured and sent to the programboolfalse
enforce_barriersif enabled, throw a Wayland error when an invalid barrier is receivedbooltrue

Debug

Warning

These settings are intended only for development and testing. You do not want to change them in your normal config.

Path: debug

NameDescriptionTypeDefaultLimits
colored_stdout_logsEnables colors in the stdout logsbooltrue
damage_blink(epilepsy warning!) Flash areas updated with damage trackingboolfalse
damage_trackingRedraw only the needed bits of the display. Do not change. None - 0, monitor - 1, full - 2int2[0 - 2]
disable_logsDisable logging to a filebooltrue
disable_scale_checksDisables verification of the scale factors. Will result in pixel alignment and rounding errorsboolfalse
disable_timeDisables time loggingbooltrue
ds_handle_same_bufferspecial case for direct scanout with unmodified bufferbooltrue
ds_handle_same_buffer_fifospecial case for direct scanout with unmodified buffer unlocks fifobooltrue
enable_stdout_logsEnables logging to stdoutboolfalse
error_limitLimits the number of displayed config file parsing errorsint5[0 - 20]
error_positionSets the position of the error bar. 0 - top, 1 bottomint0[0 - 1]
fifo_pending_workaroundfifo workaround for empty pending listboolfalse
full_cm_protoClaims support for all cm proto features (requires restart)boolfalse
gl_debuggingEnables OpenGL debugging with glGetError and EGL_KHR_debug, requires a restart after changingboolfalse
invalidate_buffersAllow buffer invalidation (invalidation increases performance but produces glitches on some systems). 0 - not allowed, 1 - allowedint1[0 - 1]
log_damageEnables logging the damageboolfalse
manual_crashSet to 1 and then back to 0 to crash Hyprlandint0[0 - 1]
overlayPrint the debug performance overlay. Disable VFR for accurate resultsboolfalse
passEnables render pass debuggingboolfalse
render_solitary_wo_damagerender solitary window with empty damageboolfalse
suppress_errorsIf enabled, Hyprland will not display config file parsing errorsboolfalse
vfrControls the VFR status of Hyprland. Heavily recommended to leave enabled to conserve resourcesbooltrue

Experimental

Path: experimental

NameDescriptionTypeDefaultLimits
wp_cm_1_2allow wp-cm-v1 version 2boolfalse

More

There are more config options described on other pages, which are layout- or circumstance-specific. See the sidebar for more pages, especially layout ones.

Last updated on