Configure_



Content:



This is just a basic config documentation, for a more detailed one, visit our github page .



Welcome to Hyprland, now that you've done completing the install, hop onto Hyprland by selecting "Hyprland" on your desired display manager.



On your first launch, Hyprland should automatically make a config file for you, and you should see something like this -




If it doesn't, you've probly messed up,


Make sure the default config hyprland.conf exists at ~/.config/hypr.



If it doesn't, follow along -


mkdir ~/.config/hypr

Then copy the code linked below to ~/.config/hypr/hyprland.conf.




If it still does not work, something must be wrong with your install, try installing Hyprland again or asking our community in our discord server.




Removing that bothersome yellow message
on top




Change the autogenerated=1to 0.

autogenerated=0

Starting your favorite apps




exec = the TERMINAL command used to start in up.

exec-once = the TERMINAL command used to start in up.

Where execwill execute the command on every startup as-well-as every reload whereas-in exec-oncewill only execute the command on startup, avoiding to run during reload(s).



Eg.

exec = swaybg -i ~/.config/hypr/wallpapers/wall-1.png

exec-once = waybar

Setting up a wallpaper




Install Hyprpaper* on your system then type the following command-


Hyprpaper is controlled by the config, like this:


~/.config/hypr/hyprpaper.conf

preload = /path/to/image.png

# .. more preloads

wallpaper = monitor,/path/to/image.png

# .. more monitors

Preload will tell Hyprland to load a particular image (supported formats: png, jpg, jpeg). Wallpaper will apply the wallpaper to the selected output (monitor is the monitor's name, easily can be retrieved with hyprctl monitors)


You may add contain: before the file path in wallpaper= to set the mode to contain instead of cover:

wallpaper = monitor,contain:/path/to/image.jpg

A Wallpaper cannot be applied without preloading. The config is not reloaded dynamically.

*NOTE: Legacy X11 wallpaper managers like feh and nitrogen may not work on Wayland Compositor(s) such as Hyprland.



Setting up your monitor(s)




Your monitor can be configured by changing the monitor = line on top of your hyprland.conffile.

monitor = name,res,offset,scale

eg.

monitor = DP-1,1920x1080@240,0x0,1

will tell Hyprland to make the monitor on DP-1with resolution 1920x1080capped at 240 hz, 0x0off from the beginning at a scale of 1.


Increasing the scale will make everything large.



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)


To disable a monitor,

monitor = NAME, disable

If your workflow requires custom reserved area, you can add it with

monitor = NAME, ADDRESERVED, TOP, BOTTOM, LEFT, RIGHT

Where Top BOTTOM LEFT and 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.




workspace = NAME, NUMBER

Will tell Hyprland where to make the default workspace of a specific monitor





If you want to rotate a monitor,

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

Configuring keybindings




bind = SUPER, key, dispatcher, params

SUPER (or MOD) = Win/Alt Key

SUPERSHIFT = Win/Alt + Shift*

SUPERCTRL = Win/Alt + Ctrl*

ALT = Alt key (independent of the mod key)

You can even use functional keys

fx= function key where x is your 1st-12th key
eg. f5




Introduction 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.

How to use flags?

bind[Flag] = ...

Eg.

bindrl=MOD,KEY,exec,amongus

For a full list of dispacters, click here.



Workspaces




workspace args are unified. You have six choices:
ID: e.g. 1, 2, or 3
Relative ID: e.g. +1, -3 or +100
Relative workspace on monitor: e.g. m+1, m-1 or m+3
Relative open workspace: e.g. e+1 or e-10
Name: e.g. name:Web, name:Anime or name:Better anime
Special Workspace: special Warning: special is supported ONLY on movetoworkspace. Any other dispatcher will result in undocumented behavior.



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:


You can get both by typing hyprctl clientsin your terminal.


A full list of rules can be found here.


Eg.

windowrule=float,kitty

windowrule=monitor 0,Firefox

windowrule=opacity 0.8,Discord

Animations



Animations are declared with the animation keyword

animation=NAME,ONOFF,SPEED,CURVE,STYLE

NAME can be either 0 or 1, 0 to disable, 1 to enable.

ONOFF is the amount of ds (1ds = 100ms) the animation will take

CURVE is the bezier curve name, see curves above.

STYLE (optional) is the animation style


Eg.

animation=workspaces,1,8,default

animation=windows,1,10,myepiccurve,slide

The animations are a tree. If an animation is unset, it will inherit its' parent's values.



Defining Variables



You can define your own custom variables like this:

$VAR = value

Then, to use them, simply use them. For example:

col.active_border=$MyColor

Sourcing (multi-files)




Use the source keyword to source another file.


For example, in your hyprland.conf you can:

source=~/.config/hypr/myColors.conf

Please note it's LINEAR. Meaning lines above the source= will be parsed first, then lines inside ~/.config/hypr/myColors.conf, then lines below.



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"


bind=,right,resizeactive,10 0

bind=,left,resizeactive,-10 0

bind=,up,resizeactive,0 -10

bind=,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




Warning: Some configs, notably touchpad ones, require a Hyprland restart.


Per-device config options will overwrite your options set in the input section. It's worth noting that ONLY values explicitly changed will be overwritten.


In order to apply per-device config options, make a new category like this:

device:name {

}

the name can be easily obtained by doing hyprctl devices.


Inside of it, put your config options. All options from the input category (and all subcategories, e.g. input:touchpad) can be put inside, EXCEPT:


force_no_accel, follow_mouse

For example:

device:ROYUAN Akko Multi-modes Keyboard-B {
repeat_rate=50
repeat_delay=500
middle_button_emulation=0
}

remember about the space after the end of the device's name (before the {)!



Blurring layerSurfaces




LayerSurfaces are not windows. These are for example: Your wallpapers, notification overlays, bars, etc.


If you really want to blur them, use blurls=

blurls=NAMESPACE

where NAMESPACE is the namespace of the layerSurface. (You can get it from hyprctl layers )


to remove a namespace from being blurred (useful in dynamic situations) use:


blurls=remove,NAMESPACE