hyprland-wiki/pages/Configuring/Monitors.md

209 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

# Table of contents
2022-09-24 15:32:40 +02:00
{{< toc format=html >}}
# General
2022-09-24 15:32:40 +02:00
The general config of a monitor looks like this
2022-09-24 16:03:37 +02:00
```ini
2022-11-23 15:38:14 +01:00
monitor=name,resolution,position,scale
2022-09-24 15:32:40 +02:00
```
A common example:
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
monitor=DP-1,1920x1080@144,0x0,1
```
will tell Hyprland to make the monitor on `DP-1` a `1920x1080` display, at 144Hz,
`0x0` off from the top left corner, with a scale of 1 (unscaled).
2022-11-23 15:38:14 +01:00
Monitors are positioned on a virtual "layout". The `position` is the position of
2022-11-05 17:47:33 +01:00
said display in the layout. (calculated from the top-left corner)
For example:
```ini
monitor=DP-1, 1920x1080, 0x0, 1
monitor=DP-2, 1920x1080, 1920x0, 1
```
will tell hyprland to make DP-1 on the _left_ of DP-2, while
```ini
monitor=DP-1, 1920x1080, 1920x0, 1
monitor=DP-2, 1920x1080, 0x0, 1
```
will tell hyprland to make DP-1 on the _right_.
{{< hint type=tip >}}
2022-09-24 15:32:40 +02:00
2022-11-23 15:38:14 +01:00
The position is calculated with the scaled (and transformed) resolution, meaning if
2022-09-24 15:32:40 +02:00
you want your 4K monitor with scale 2 to the left of your 1080p one, you'd use
2022-11-23 15:38:14 +01:00
the position `1920x0` for the second screen. (3840 / 2)
If the monitor is also rotated 90 degrees (vertical) you'd use `1080x0`.
2022-09-24 15:32:40 +02:00
{{</ hint >}}
Leaving the name empty will define a fallback rule to use when no other rules
match.
You can use `preferred` as a resolution to use the display's preferred size, and
2022-11-23 15:38:14 +01:00
`auto` as a position to let Hyprland decide on a position for you.
2022-09-24 15:32:40 +02:00
2022-12-14 18:58:35 +01:00
You can also use `auto` as a scale to let Hyprland decide on a scale for you. These
depend on the PPI of the monitor.
2022-09-24 15:32:40 +02:00
Recommended rule for quickly plugging in random monitors:
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
monitor=,preferred,auto,1
```
Will make any monitor that was not specified with an explicit rule automatically
placed on the right of the other(s) with its preferred resolution.
Alternatively you can use the `highres` or `highrr` rules in order to get the
2022-09-24 16:37:22 +02:00
best possible resolution or refreshrate mix.
2022-09-24 15:32:40 +02:00
for a focus on refreshrate use this:
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
monitor=,highrr,auto,1
```
for a focus on resolution this:
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
monitor=,highres,auto,1
```
2022-10-05 11:24:22 +02:00
For more specific rules, you can also use the output's description
(see `hyprctl monitors`) like this:
```
2022-10-27 15:49:50 +02:00
monitor=desc:SDC 0x4154,preferred,auto,1.5
2022-10-05 11:24:22 +02:00
```
2022-10-27 15:49:50 +02:00
remember to remove the (portname)!
2022-09-24 15:32:40 +02:00
## Disabling a monitor
To disable a monitor, use
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
monitor=name,disable
```
2022-11-23 11:07:51 +01:00
{{< hint type=tip >}}
Disabling a monitor will literally remove it from the layout, moving all windows and workspaces
to any remaining ones. If you want to disable your monitor in a screensaver style (just turn
off the monitor) use the `dpms` [dispatcher](../Dispatchers).
{{</ hint >}}
# Custom reserved area
2022-09-24 15:32:40 +02:00
If your workflow requires custom reserved area, you can add it with
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
monitor=name,addreserved,TOP,BOTTOM,LEFT,RIGHT
```
Where `TOP` `BOTTOM` `LEFT` `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.
2022-10-27 14:26:44 +02:00
# Extra args
## Mirrored displays
2022-09-24 15:32:40 +02:00
If you want to mirror a display, add a `,mirror,[NAME]` at the end of the monitor
rule, examples:
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
monitor=DP-3,1920x1080@60,0x0,1,mirror,DP-2
monitor=,preferred,auto,1,mirror,DP-1
```
Please remember that mirroring displays will not "re-render" everything for your
2022-09-24 16:37:22 +02:00
second monitor, so if mirroring a 1080p screen onto a 4K one, the resolution
will still be 1080p on the 4K display. This also means squishing and stretching
2022-09-24 15:32:40 +02:00
will occur on non-matching resolutions.
2022-10-27 14:26:44 +02:00
## 10 bit support
If you want to enable 10 bit support for your display, add a `,bitdepth,10` at the
end of the monitor rule, e.g.:
```ini
monitor=eDP-1,2880x1800@90,0x0,1,bitdepth,10
```
Please be aware that colors registered in Hyprland (e.g. the border color) do _not_
support 10 bit.
# Rotating and the default workspace
2022-09-24 15:32:40 +02:00
{{< hint type=important >}}
The monitor transform and workspace keywords depend on a monitor rule set
specifically for the targeted monitor, and **_MUST_** be after it.
2022-09-24 15:32:40 +02:00
2022-11-21 14:46:56 +01:00
e.g.:
```ini
monitor=,preferred,auto,1
workspace=DP-3,1 # invalid
monitor=DP-3,preferred,auto,1
workspace=DP-3,1 # valid
```
2022-09-24 15:32:40 +02:00
{{< /hint >}}
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
workspace=name,number
```
for example:
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
workspace=DP-1,1
```
will tell Hyprland to make the default workspace on DP-1 a number 1.
If you want to rotate a monitor, use
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
monitor=NAME,transform,TRANSFORM
```
where `NAME` is the name, and `TRANSFORM` is an integer, from 0 to 7,
corresponding to your transform of choice.
2022-09-24 16:03:37 +02:00
```ini
2022-10-16 23:03:01 +02:00
normal (no transforms) -> 0
90 degrees -> 1
180 degrees -> 2
270 degrees -> 3
flipped -> 4
flipped + 90 degrees -> 5
flipped + 180 degrees -> 6
flipped + 270 degrees -> 7
2022-09-24 15:32:40 +02:00
```
# Binding workspaces to a monitor
2022-09-24 15:32:40 +02:00
A workspace can be bound to a monitor, meaning by default it will ALWAYS open
on the selected monitor. You can do this with
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
wsbind=WORKSPACE,MONITOR
```
for example:
2022-09-24 16:03:37 +02:00
```ini
2022-09-24 15:32:40 +02:00
wsbind=5,DP-1
wsbind=name:secret,DP-2
```