mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-11-26 14:35:58 +01:00
overall formatting
This commit is contained in:
parent
75ae8c5c9f
commit
dbe62696d6
33 changed files with 450 additions and 292 deletions
|
@ -3,6 +3,8 @@
|
||||||
Welcome to the Hyprland Wiki! Here we store the wiki pages. They are automatically updated on the
|
Welcome to the Hyprland Wiki! Here we store the wiki pages. They are automatically updated on the
|
||||||
website whenever a change occurs, within a reasonable timeframe. (usually 1–2 minutes)
|
website whenever a change occurs, within a reasonable timeframe. (usually 1–2 minutes)
|
||||||
|
|
||||||
# Contributing
|
## Contributing to the Wiki
|
||||||
|
|
||||||
Feel free to open an issue or a PR. Make sure to clearly state the reason for the change.
|
Feel free to open an issue or a PR if you feel anything is necessary.
|
||||||
|
Make sure to clearly state the reason for the changes. If you have questions regarding the wiki,
|
||||||
|
you should consider joining our [Discord Server]() instead.
|
||||||
|
|
10
README.md.save
Normal file
10
README.md.save
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
PPPP# Hyprland Wiki
|
||||||
|
|
||||||
|
Welcome to the Hyprland Wiki! Here we store the wiki pages. They are automatically updated on the
|
||||||
|
website whenever a change occurs, within a reasonable timeframe. (usually 1–2 minutes)
|
||||||
|
|
||||||
|
## Contributing to the Wiki
|
||||||
|
|
||||||
|
Feel free to open an issue or a PR if you feel anything is necessary.
|
||||||
|
Make sure to clearly state the reason for the changes. If you have questions regarding the wiki,
|
||||||
|
you should consider joining our [Discord Server]() instead.
|
|
@ -1,4 +1,7 @@
|
||||||
|
# Animations
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
{{< toc >}}
|
{{< toc >}}
|
||||||
|
|
||||||
## General
|
## General
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
# Binds
|
||||||
|
|
||||||
|
## Table of Contents
|
||||||
|
|
||||||
## Table of contents
|
|
||||||
{{< toc >}}
|
{{< toc >}}
|
||||||
|
|
||||||
## Basic
|
## Basic
|
||||||
|
@ -18,14 +20,16 @@ will bind opening firefox to <key>SUPER</key> + <key>SHIFT</key> + <key>Q</key>
|
||||||
|
|
||||||
{{< hint type=tip >}}
|
{{< hint type=tip >}}
|
||||||
For binding keys without a modkey, leave it empty:
|
For binding keys without a modkey, leave it empty:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
bind=,Print,exec,grim
|
bind=,Print,exec,grim
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
*For a complete mod list, see [Variables](../Variables/#variable-types).*
|
_For a complete mod list, see [Variables](../Variables/#variable-types)._
|
||||||
|
|
||||||
*The dispatcher list can be found in [Dispatchers](../Dispatchers).*
|
_The dispatcher list can be found in [Dispatchers](../Dispatchers)._
|
||||||
|
|
||||||
## Uncommon syms / binding with a keycode
|
## Uncommon syms / binding with a keycode
|
||||||
|
|
||||||
|
@ -50,6 +54,7 @@ can also use `xev` or `wev` to find keycodes.
|
||||||
## Misc
|
## Misc
|
||||||
|
|
||||||
### Unbind
|
### Unbind
|
||||||
|
|
||||||
You can also unbind with `unbind`, e.g.:
|
You can also unbind with `unbind`, e.g.:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
|
@ -58,7 +63,12 @@ unbind=SUPER,O
|
||||||
|
|
||||||
May be useful for dynamic keybindings with `hyprctl`.
|
May be useful for dynamic keybindings with `hyprctl`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
hyprctl keyword unbind SUPER,O
|
||||||
|
```
|
||||||
|
|
||||||
### Mouse buttons
|
### Mouse buttons
|
||||||
|
|
||||||
You can also bind mouse buttons, by prefacing the mouse keycode with `mouse:`,
|
You can also bind mouse buttons, by prefacing the mouse keycode with `mouse:`,
|
||||||
for example:
|
for example:
|
||||||
|
|
||||||
|
@ -69,6 +79,7 @@ bind=SUPER,mouse:272,exec,amongus
|
||||||
will bind it to <key>SUPER</key> + <key>LMB</key>.
|
will bind it to <key>SUPER</key> + <key>LMB</key>.
|
||||||
|
|
||||||
### Only modkeys
|
### Only modkeys
|
||||||
|
|
||||||
For binding only modkeys, you need to use the TARGET modmask (with the
|
For binding only modkeys, you need to use the TARGET modmask (with the
|
||||||
activating mod) and the `r` flag, e.g.:
|
activating mod) and the `r` flag, e.g.:
|
||||||
|
|
||||||
|
@ -77,17 +88,23 @@ bindr=SUPERALT,Alt_L,exec,amongus
|
||||||
```
|
```
|
||||||
|
|
||||||
### Mouse wheel
|
### Mouse wheel
|
||||||
|
|
||||||
You can also bind the mouse wheel with `mouse_up` and `mouse_down`:
|
You can also bind the mouse wheel with `mouse_up` and `mouse_down`:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
bind=SUPER,mouse_down,workspace,e-1
|
bind=SUPER,mouse_down,workspace,e-1
|
||||||
```
|
```
|
||||||
|
|
||||||
(control the reset time with `binds:scroll_event_delay`)
|
(control the reset time with `binds:scroll_event_delay`)
|
||||||
|
|
||||||
### Switches
|
### Switches
|
||||||
|
|
||||||
Useful for binding e.g. the lid close/open event:
|
Useful for binding e.g. the lid close/open event:
|
||||||
|
|
||||||
```
|
```
|
||||||
bindl=,switch:[switch name],exec,swaylock
|
bindl=,switch:[switch name],exec,swaylock
|
||||||
```
|
```
|
||||||
|
|
||||||
check out your switches in `hyprctl devices`.
|
check out your switches in `hyprctl devices`.
|
||||||
|
|
||||||
## Bind flags
|
## Bind flags
|
||||||
|
@ -114,6 +131,7 @@ m -> mouse, see below
|
||||||
```
|
```
|
||||||
|
|
||||||
## Mouse Binds
|
## Mouse Binds
|
||||||
|
|
||||||
Mouse binds are binds that heavily rely on a mouse, usually its movement.
|
Mouse binds are binds that heavily rely on a mouse, usually its movement.
|
||||||
They will have one less arg, and look for example like this:
|
They will have one less arg, and look for example like this:
|
||||||
|
|
||||||
|
@ -124,20 +142,21 @@ bindm=ALT,mouse:272,movewindow
|
||||||
this will create a bind with <key>ALT</key> + <key>LMB</key> to move the window
|
this will create a bind with <key>ALT</key> + <key>LMB</key> to move the window
|
||||||
with your mouse.
|
with your mouse.
|
||||||
|
|
||||||
*Available mouse binds*:
|
_Available mouse binds_:
|
||||||
|
|
||||||
| Name | Description |
|
| Name | Description |
|
||||||
| -----|------------ |
|
| ------------ | ------------------------- |
|
||||||
| movewindow | moves the active window |
|
| movewindow | moves the active window |
|
||||||
| resizewindow | resizes the active window |
|
| resizewindow | resizes the active window |
|
||||||
|
|
||||||
*Common mouse buttons' codes:*
|
_Common mouse buttons' codes:_
|
||||||
|
|
||||||
```
|
```
|
||||||
LMB -> 272
|
LMB -> 272
|
||||||
RMB -> 273
|
RMB -> 273
|
||||||
```
|
```
|
||||||
|
|
||||||
*for more, you can of course use `wev` to check.*
|
_for more, you can of course use `wev` to check._
|
||||||
|
|
||||||
{{< hint type=tip >}}
|
{{< hint type=tip >}}
|
||||||
Mouse binds, despite their name, behave like normal binds. You are free to use
|
Mouse binds, despite their name, behave like normal binds. You are free to use
|
||||||
|
@ -153,10 +172,11 @@ bindr=ALT,Alt_L,exec,amongus
|
||||||
```
|
```
|
||||||
|
|
||||||
## Global Keybinds
|
## Global Keybinds
|
||||||
|
|
||||||
Yes, you heard this right, Hyprland does support global keybinds for ALL apps,
|
Yes, you heard this right, Hyprland does support global keybinds for ALL apps,
|
||||||
including OBS, Discord, Firefox, etc.
|
including OBS, Discord, Firefox, etc.
|
||||||
|
|
||||||
See the `pass` dispatcher for keybinds.
|
See the [`pass` dispatcher](./Dispatchers/#dispatchers) for keybinds.
|
||||||
|
|
||||||
e.g.:
|
e.g.:
|
||||||
|
|
||||||
|
@ -164,9 +184,11 @@ I've set the "Start/Stop Recording" keybind in OBS to <key>SUPER</key> +
|
||||||
<key>F10</key>, and I want it to be global.
|
<key>F10</key>, and I want it to be global.
|
||||||
|
|
||||||
Simple, add
|
Simple, add
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
bind = SUPER,F10,pass,^(com\.obsproject\.Studio)$
|
bind = SUPER,F10,pass,^(com\.obsproject\.Studio)$
|
||||||
```
|
```
|
||||||
|
|
||||||
to your config and you're done.
|
to your config and you're done.
|
||||||
|
|
||||||
`pass` will pass the PRESS and RELEASE events by itself, no need for a `bindr`.
|
`pass` will pass the PRESS and RELEASE events by itself, no need for a `bindr`.
|
||||||
|
@ -184,7 +206,7 @@ keybind", otherwise passing from a different XWayland app may not work.
|
||||||
|
|
||||||
It works flawlessly with all native Wayland applications though.
|
It works flawlessly with all native Wayland applications though.
|
||||||
|
|
||||||
*Side note*: **OBS** on Wayland really dislikes keybinds with modifiers. If
|
_Side note_: **OBS** on Wayland really dislikes keybinds with modifiers. If
|
||||||
they don't work, try removing mods and binding them to e.g. <key>F1</key>.
|
they don't work, try removing mods and binding them to e.g. <key>F1</key>.
|
||||||
Combining this with a submap should yield neat and usable results.
|
Combining this with a submap should yield neat and usable results.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
|
@ -6,11 +6,12 @@ autogenerated config.
|
||||||
By removing the line `autogenerated=1` you'll remove the yellow warning.
|
By removing the line `autogenerated=1` you'll remove the yellow warning.
|
||||||
|
|
||||||
There is no "reload" keybind. The config is reloaded the moment you save it.
|
There is no "reload" keybind. The config is reloaded the moment you save it.
|
||||||
|
However, some options may require a restart before taking effect.
|
||||||
|
|
||||||
Start a section with `name {` and end in `}` ***in separate lines!***
|
Start a section with `name {` and end in `}` **_in separate lines!_**
|
||||||
|
|
||||||
{{< hint type=important >}}
|
{{< hint type=important >}}
|
||||||
The default config is *very* barebones. Please refer to this wiki page and the pages
|
The default config is _very_ barebones. Please refer to this wiki page and the pages
|
||||||
linked further down here for full configuration instructions.
|
linked further down here for full configuration instructions.
|
||||||
|
|
||||||
**Make sure to read the "Variables" page as well**. It covers all the
|
**Make sure to read the "Variables" page as well**. It covers all the
|
||||||
|
@ -19,7 +20,7 @@ toggleable / numerical options.
|
||||||
|
|
||||||
# Line style
|
# Line style
|
||||||
|
|
||||||
every config line is a command followed by a value.
|
Every config line is a command followed by a value.
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
COMMAND=VALUE
|
COMMAND=VALUE
|
||||||
|
@ -45,7 +46,7 @@ To configure the "options" of Hyprland, animations, styling, etc. see
|
||||||
|
|
||||||
# Advanced configuring
|
# Advanced configuring
|
||||||
|
|
||||||
Some keywords (binds, curves, execs, monitors, etc.) arent variables but define
|
Some keywords (binds, curves, execs, monitors, etc.) are not variables but define
|
||||||
special behaviour.
|
special behaviour.
|
||||||
|
|
||||||
See all of them in [Keywords](../Keywords) and the sidebar.
|
See all of them in [Keywords](../Keywords) and the sidebar.
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
|
# Dispatchers
|
||||||
|
|
||||||
# Table of contents
|
# Table of contents
|
||||||
|
|
||||||
{{< toc >}}
|
{{< toc >}}
|
||||||
|
|
||||||
Please keep in mind some layout-specific dispatchers will be listed in the
|
Please keep in mind some layout-specific dispatchers will be listed in the
|
||||||
|
@ -6,53 +9,53 @@ layout pages (See the sidebar).
|
||||||
|
|
||||||
## Parameter explanation
|
## Parameter explanation
|
||||||
|
|
||||||
| Param type | Description |
|
| Param type | Description |
|
||||||
| ---------- | ----------- |
|
| ------------ | ----------------------------------------------------------------------------------------------------------------------- |
|
||||||
| window | a window. Any of the following: Class regex, `title:` and a title regex, `pid:` and the pid, `address:` and the address |
|
| window | a window. Any of the following: Class regex, `title:` and a title regex, `pid:` and the pid, `address:` and the address |
|
||||||
| workspace | see below. |
|
| workspace | see below. |
|
||||||
| direction | `l` `r` `u` `d` left right up down |
|
| direction | `l` `r` `u` `d` left right up down |
|
||||||
| monitor | One of: direction, ID, name, `current` |
|
| monitor | One of: direction, ID, name, `current` |
|
||||||
| resizeparams | Pixel delta vec2 (e.g. `10 -10`) or `exact` followed by exact vec2, e.g. `exact 1280 720`) |
|
| resizeparams | Pixel delta vec2 (e.g. `10 -10`) or `exact` followed by exact vec2, e.g. `exact 1280 720`) |
|
||||||
| floatdelta | a float value delta, e.g `-0.2` or `+0.2`. |
|
| floatdelta | a float value delta, e.g `-0.2` or `+0.2`. |
|
||||||
| workspaceopt | see below. |
|
| workspaceopt | see below. |
|
||||||
|
|
||||||
# Dispatchers:
|
# Dispatchers
|
||||||
|
|
||||||
| Dispatcher | Description | Params |
|
| Dispatcher | Description | Params |
|
||||||
| ---------- | ----------- | ------ |
|
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- |
|
||||||
| exec | executes a shell command | command |
|
| exec | executes a shell command | command |
|
||||||
| pass | passes the key (with mods) to a specified window. Can be used as a workaround to global keybinds not working on Wayland. | window |
|
| pass | passes the key (with mods) to a specified window. Can be used as a workaround to global keybinds not working on Wayland. | window |
|
||||||
| killactive | closes (not kills) the active window | none |
|
| killactive | closes (not kills) the active window | none |
|
||||||
| closewindow | closes a specified window | window |
|
| closewindow | closes a specified window | window |
|
||||||
| workspace | changes the workspace | workspace |
|
| workspace | changes the workspace | workspace |
|
||||||
| movetoworkspace | moves the focused window to a workspace | workspace OR `workspace,window` for a specific window |
|
| movetoworkspace | moves the focused window to a workspace | workspace OR `workspace,window` for a specific window |
|
||||||
| movetoworkspacesilent | same as above, but doesnt switch to the workspace | workspace OR `workspace,window` for a specific window |
|
| movetoworkspacesilent | same as above, but doesnt switch to the workspace | workspace OR `workspace,window` for a specific window |
|
||||||
| togglefloating | toggles the current window's floating state | left empty / `active` for current, or `window` for a specific window |
|
| togglefloating | toggles the current window's floating state | left empty / `active` for current, or `window` for a specific window |
|
||||||
| fullscreen | toggles the focused window's fullscreen state | 0 - fullscreen (takes your entire screen), 1 - maximize (keeps gaps and bar(s)) |
|
| fullscreen | toggles the focused window's fullscreen state | 0 - fullscreen (takes your entire screen), 1 - maximize (keeps gaps and bar(s)) |
|
||||||
| dpms | sets all monitors' DPMS status. Do not use with a keybind directly. | `on` or `off`, for specific monitor add monitor name after a space |
|
| dpms | sets all monitors' DPMS status. Do not use with a keybind directly. | `on` or `off`, for specific monitor add monitor name after a space |
|
||||||
| pseudo | toggles the focused window's pseudo mode | none |
|
| pseudo | toggles the focused window's pseudo mode | none |
|
||||||
| pin | pins the active window (shown on all workspaces) *note: floating only* | none |
|
| pin | pins the active window (shown on all workspaces) _note: floating only_ | none |
|
||||||
| movefocus | moves the focus in a direction | direction |
|
| movefocus | moves the focus in a direction | direction |
|
||||||
| movewindow | moves the active window in a direction or to a monitor | direction or `mon:` and a monitor |
|
| movewindow | moves the active window in a direction or to a monitor | direction or `mon:` and a monitor |
|
||||||
| resizeactive | resizes the active window | resizeparams |
|
| resizeactive | resizes the active window | resizeparams |
|
||||||
| moveactive | moves the active window | resizeparams |
|
| moveactive | moves the active window | resizeparams |
|
||||||
| resizewindowpixel | resizes a selected window | `resizeparams,window`, e.g. `100 100,^(kitty)$` |
|
| resizewindowpixel | resizes a selected window | `resizeparams,window`, e.g. `100 100,^(kitty)$` |
|
||||||
| movewindowpixel | moves a selected window | `resizeparams,window` |
|
| movewindowpixel | moves a selected window | `resizeparams,window` |
|
||||||
| cyclenext | focuses the next window on a workspace | none (for next) or `prev` (for previous) |
|
| cyclenext | focuses the next window on a workspace | none (for next) or `prev` (for previous) |
|
||||||
| swapnext | swaps the focused window with the next window on a workspace | none (for next) or `prev` (for previous) |
|
| swapnext | swaps the focused window with the next window on a workspace | none (for next) or `prev` (for previous) |
|
||||||
| focuswindow | focuses the first window matching | window |
|
| focuswindow | focuses the first window matching | window |
|
||||||
| focusmonitor | focuses a monitor | monitor |
|
| focusmonitor | focuses a monitor | monitor |
|
||||||
| splitratio | changes the split ratio | floatdelta |
|
| splitratio | changes the split ratio | floatdelta |
|
||||||
| toggleopaque | toggles the current window to always be opaque | none |
|
| toggleopaque | toggles the current window to always be opaque | none |
|
||||||
| movecursortocorner | moves the cursor to the corner of the active window | direction, 0 - 3, bottom left - 0, bottom right - 1, top right - 2, top left - 3 |
|
| movecursortocorner | moves the cursor to the corner of the active window | direction, 0 - 3, bottom left - 0, bottom right - 1, top right - 2, top left - 3 |
|
||||||
| workspaceopt | toggles a workspace option for the active workspace. | workspaceopt |
|
| workspaceopt | toggles a workspace option for the active workspace. | workspaceopt |
|
||||||
| exit | exits the compositor with no questions asked. | none |
|
| exit | exits the compositor with no questions asked. | none |
|
||||||
| forcerendererreload | forces the renderer to reload all resources and outputs | none |
|
| forcerendererreload | forces the renderer to reload all resources and outputs | none |
|
||||||
| movecurrentworkspacetomonitor | Moves the active workspace to a monitor | monitor |
|
| movecurrentworkspacetomonitor | Moves the active workspace to a monitor | monitor |
|
||||||
| moveworkspacetomonitor | Moves a workspace to a monitor | workspace and a monitor separated by a space |
|
| moveworkspacetomonitor | Moves a workspace to a monitor | workspace and a monitor separated by a space |
|
||||||
| swapactiveworkspaces | Swaps the active workspaces between two monitors | two monitors separated by a space |
|
| swapactiveworkspaces | Swaps the active workspaces between two monitors | two monitors separated by a space |
|
||||||
| bringactivetotop | Brings the current window to the top of the stack | none |
|
| bringactivetotop | Brings the current window to the top of the stack | none |
|
||||||
| togglespecialworkspace | toggles the special workspace on/off | none |
|
| togglespecialworkspace | toggles the special workspace on/off | none |
|
||||||
|
|
||||||
{{< hint type=warning >}}
|
{{< hint type=warning >}}
|
||||||
it is NOT recommended to set DPMS with a keybind directly, as it
|
it is NOT recommended to set DPMS with a keybind directly, as it
|
||||||
|
@ -61,6 +64,7 @@ might cause undefined behavior. Instead, consider something like
|
||||||
```
|
```
|
||||||
bind = MOD,KEY,exec,sleep 1 && hyprctl dispatch dpms off
|
bind = MOD,KEY,exec,sleep 1 && hyprctl dispatch dpms off
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
# Workspaces
|
# Workspaces
|
||||||
|
@ -93,12 +97,12 @@ workspace that you can toggle on/off on any monitor.
|
||||||
|
|
||||||
{{< hint >}}
|
{{< hint >}}
|
||||||
You cannot have floating windows in the Special workspace. Making a window floating
|
You cannot have floating windows in the Special workspace. Making a window floating
|
||||||
will send it to the currently active *real* workspace.
|
will send it to the currently active _real_ workspace.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
## Workspace options
|
## Workspace options
|
||||||
|
|
||||||
```
|
```
|
||||||
allfloat -> makes all new windows floating (also floats/unfloats windows on toggle)
|
allfloat -> makes all new windows floating (also floats/unfloats windows on toggle)
|
||||||
allpseudo -> makes all new windows pseudo (also pseudos/unpseudos on toggle)
|
allpseudo -> makes all new windows pseudo (also pseudos/unpseudos on toggle)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
|
# Dwindle Layout
|
||||||
|
|
||||||
Dwindle is a BSPWM-like layout, where every window on a workspace is a member
|
Dwindle is a BSPWM-like layout, where every window on a workspace is a member
|
||||||
of a binary tree.
|
of a binary tree.
|
||||||
|
|
||||||
# Quirks
|
## Quirks
|
||||||
|
|
||||||
Dwindle splits are NOT PERMANENT. The split is determined dynamically with the
|
Dwindle splits are NOT PERMANENT. The split is determined dynamically with the
|
||||||
W/H ratio of the parent node. If W > H, it's side-by-side. If H > W, it's
|
W/H ratio of the parent node. If W > H, it's side-by-side. If H > W, it's
|
||||||
|
@ -28,26 +30,26 @@ Closing windows within the groups is allowed, however, since the groups in the
|
||||||
backend are still a tree, if you remove a node that makes the original node
|
backend are still a tree, if you remove a node that makes the original node
|
||||||
container get removed, the group will be broken back to its dwindle form.
|
container get removed, the group will be broken back to its dwindle form.
|
||||||
|
|
||||||
# Config
|
## Config
|
||||||
|
|
||||||
category name: `dwindle`
|
category name: `dwindle`
|
||||||
|
|
||||||
| name | description | type | default |
|
| name | description | type | default |
|
||||||
|---|---|---|---|---|
|
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----- | ---------- |
|
||||||
| pseudotile | enable pseudotiling. Pseudotiled windows retain their floating size when tiled. | bool | false |
|
| pseudotile | enable pseudotiling. Pseudotiled windows retain their floating size when tiled. | bool | false |
|
||||||
| col.group_border | inactive (out of focus) group border color | color | 0x66777700 |
|
| col.group_border | inactive (out of focus) group border color | color | 0x66777700 |
|
||||||
| col.group_border_active | active group border color | color | 0x66ffff00 |
|
| col.group_border_active | active group border color | color | 0x66ffff00 |
|
||||||
| force_split | 0 -> split follows mouse, 1 -> always split to the left (new = left or top) 2 -> always split to the right (new = right or bottom) | int | 0 |
|
| force_split | 0 -> split follows mouse, 1 -> always split to the left (new = left or top) 2 -> always split to the right (new = right or bottom) | int | 0 |
|
||||||
| preserve_split | if enabled, the split (side/top) will not change regardless of what happens to the container. | bool | false |
|
| preserve_split | if enabled, the split (side/top) will not change regardless of what happens to the container. | bool | false |
|
||||||
| special_scale_factor | 0 - 1 -> specifies the scale factor of windows on the special workspace | float | 0.8 |
|
| special_scale_factor | 0 - 1 -> specifies the scale factor of windows on the special workspace | float | 0.8 |
|
||||||
| split_width_multiplier | specifies the auto-split width multiplier | float | 1.0 |
|
| split_width_multiplier | specifies the auto-split width multiplier | float | 1.0 |
|
||||||
| no_gaps_when_only | whether to apply gaps when there is only one window on a workspace, aka. smart gaps. | bool | false |
|
| no_gaps_when_only | whether to apply gaps when there is only one window on a workspace, aka. smart gaps. | bool | false |
|
||||||
| use_active_for_splits | whether to prefer the active window or the mouse position for splits | bool | true |
|
| use_active_for_splits | whether to prefer the active window or the mouse position for splits | bool | true |
|
||||||
|
|
||||||
## Bind Dispatchers
|
## Bind Dispatchers
|
||||||
|
|
||||||
| dispatcher | description | params |
|
| dispatcher | description | params |
|
||||||
|---|---|---|
|
| ----------------- | ---------------------------------------------------------------------- | ---------------------- |
|
||||||
| togglegroup | toggles the current window and its siblings (recursively) into a group | none |
|
| togglegroup | toggles the current window and its siblings (recursively) into a group | none |
|
||||||
| changegroupactive | switches to the next window in a group. | b - back, f - forward. |
|
| changegroupactive | switches to the next window in a group. | b - back, f - forward. |
|
||||||
| togglesplit | toggles the split (top/side) of the current window | none |
|
| togglesplit | toggles the split (top/side) of the current window | none |
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Expanding Functionality
|
||||||
|
|
||||||
Hyprland exposes two powerful sockets for you to use.
|
Hyprland exposes two powerful sockets for you to use.
|
||||||
|
|
||||||
The first, socket1, can be fully controlled with `hyprctl`, see its usage
|
The first, socket1, can be fully controlled with `hyprctl`, see its usage
|
||||||
|
@ -12,7 +14,7 @@ to react to different events. See its description
|
||||||
This bash script will change the outer gaps to 20 if the currently focused
|
This bash script will change the outer gaps to 20 if the currently focused
|
||||||
monitor is DP-1, and 30 otherwise.
|
monitor is DP-1, and 30 otherwise.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
function handle {
|
function handle {
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
|
# Keywords
|
||||||
|
|
||||||
This page documents all of the more advanced config options.
|
This page documents all of the more advanced config options.
|
||||||
|
|
||||||
{{< hint type=important >}}
|
{{< hint type=important >}}
|
||||||
|
|
||||||
Please remember, that for ALL arguments separated by a comma, if you want to
|
Please remember, that for ALL arguments separated by a comma, if you want to
|
||||||
leave one of them empty, you cannot reduce the number of commas, *unless told
|
leave one of them empty, you cannot reduce the number of commas, _unless told
|
||||||
otherwise in a specific section*:
|
otherwise in a specific section_:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
three_param_keyword = A, B, C # OK
|
three_param_keyword = A, B, C # OK
|
||||||
|
@ -18,17 +20,18 @@ three_param_keyword = A, B, # OK
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
# Table of contents
|
## Table of contents
|
||||||
|
|
||||||
{{< toc format=html >}}
|
{{< toc format=html >}}
|
||||||
|
|
||||||
# Executing
|
## Executing
|
||||||
|
|
||||||
you can execute a shell script on startup of the compositor or on each time it's
|
you can execute a shell script on startup of the compositor or on each time it's
|
||||||
reloaded.
|
reloaded.
|
||||||
|
|
||||||
{{< hint type=info >}}
|
{{< hint type=info >}}
|
||||||
|
|
||||||
**Note:** The issue below was fixed in upstream. (since *after* v0.15.0beta)
|
**Note:** The issue below was fixed in upstream. (since _after_ v0.15.0beta)
|
||||||
|
|
||||||
There currently is a bug with the exec that makes the executed app
|
There currently is a bug with the exec that makes the executed app
|
||||||
unable to die if killed, use `SIGKILL` (e.g. `killall name -9`) or launch from a
|
unable to die if killed, use `SIGKILL` (e.g. `killall name -9`) or launch from a
|
||||||
|
@ -40,8 +43,7 @@ script (`exec-once=~/myscript.sh` and do `myapp &` in the script)
|
||||||
|
|
||||||
`exec=command` will execute on each reload
|
`exec=command` will execute on each reload
|
||||||
|
|
||||||
|
## Defining variables
|
||||||
# Defining variables
|
|
||||||
|
|
||||||
You can define your own custom variables like this:
|
You can define your own custom variables like this:
|
||||||
|
|
||||||
|
@ -67,7 +69,7 @@ You ARE allowed to do this:
|
||||||
col.active_border=ff$MyRedValue1111
|
col.active_border=ff$MyRedValue1111
|
||||||
```
|
```
|
||||||
|
|
||||||
# Sourcing (multi-file)
|
## Sourcing (multi-file)
|
||||||
|
|
||||||
Use the `source` keyword to source another file.
|
Use the `source` keyword to source another file.
|
||||||
|
|
||||||
|
@ -82,14 +84,14 @@ And Hyprland will enter that file and parse it like a Hyprland config.
|
||||||
Please note it's LINEAR. Meaning lines above the `source=` will be parsed first,
|
Please note it's LINEAR. Meaning lines above the `source=` will be parsed first,
|
||||||
then lines inside `~/.config/hypr/myColors.conf`, then lines below.
|
then lines inside `~/.config/hypr/myColors.conf`, then lines below.
|
||||||
|
|
||||||
# Gestures
|
## Gestures
|
||||||
|
|
||||||
Use something like
|
Use something like
|
||||||
[libinput-gestures](https://github.com/bulletmark/libinput-gestures), with
|
[libinput-gestures](https://github.com/bulletmark/libinput-gestures), with
|
||||||
`hyprctl` if you want to expand Hyprland's gestures beyond what's offered in
|
`hyprctl` if you want to expand Hyprland's gestures beyond what's offered in
|
||||||
[Variables](../Variables).
|
[Variables](../Variables).
|
||||||
|
|
||||||
# Per-device input configs
|
## Per-device input configs
|
||||||
|
|
||||||
Per-device config options will overwrite your options set in the `input`
|
Per-device config options will overwrite your options set in the `input`
|
||||||
section. It's worth noting that ONLY values explicitly changed will be
|
section. It's worth noting that ONLY values explicitly changed will be
|
||||||
|
@ -111,6 +113,7 @@ Inside of it, put your config options. All options from the `input` category
|
||||||
force_no_accel, follow_mouse, float_switch_override_focus
|
force_no_accel, follow_mouse, float_switch_override_focus
|
||||||
|
|
||||||
Properties that change names:
|
Properties that change names:
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
touchdevice:transform -> touch_transform
|
touchdevice:transform -> touch_transform
|
||||||
touchdevice:output -> touch_output
|
touchdevice:output -> touch_output
|
||||||
|
@ -126,26 +129,28 @@ device:ROYUAN Akko Multi-modes Keyboard-B {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
*remember about the space after the end of the device's name (before the `{`)!*
|
_remember about the space after the end of the device's name (before the `{`)!_
|
||||||
|
|
||||||
{{< hint type=tip >}}
|
{{< hint type=tip >}}
|
||||||
With hyprctl, the category's spaces get turned into `-`, and everything is
|
With hyprctl, the category's spaces get turned into `-`, and everything is
|
||||||
lowercase. So, for `hyprctl` calls, do for example:
|
lowercase. So, for `hyprctl` calls, do for example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
hyprctl keyword device:royuan-akko-multi-modes-keyboard-b:kb_layout us
|
hyprctl keyword device:royuan-akko-multi-modes-keyboard-b:kb_layout us
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
# Wallpapers
|
## Wallpapers
|
||||||
|
|
||||||
The hyprland background you see when you first start Hyprland is **NOT A
|
The hyprland background you see when you first start Hyprland is **NOT A
|
||||||
WALLPAPER**, it's the default image rendered at the bottom of the render stack.
|
WALLPAPER**, it's the default image rendered at the bottom of the render stack.
|
||||||
|
|
||||||
To set a wallpaper, use a wallpaper utility like
|
To set a wallpaper, use a wallpaper utility like
|
||||||
[hyprpaper](https://github.com/hyprwm/hyprpaper) or
|
[hyprpaper](https://github.com/hyprwm/hyprpaper) or
|
||||||
[swaybg](https://github.com/swaywm/swaybg).
|
[swaybg](https://github.com/swaywm/swaybg). More can be found in [Useful Utilities](../Useful-Utilities).
|
||||||
|
|
||||||
# Blurring layerSurfaces
|
## Blurring layerSurfaces
|
||||||
|
|
||||||
LayerSurfaces are not windows. These are for example: Your wallpapers,
|
LayerSurfaces are not windows. These are for example: Your wallpapers,
|
||||||
notification overlays, bars, etc.
|
notification overlays, bars, etc.
|
||||||
|
@ -159,7 +164,7 @@ blurls=NAMESPACE
|
||||||
where `NAMESPACE` is the namespace of the layerSurface. (You can get it from
|
where `NAMESPACE` is the namespace of the layerSurface. (You can get it from
|
||||||
`hyprctl layers`)
|
`hyprctl layers`)
|
||||||
|
|
||||||
to remove a namespace from being blurred (useful in dynamic situations) use:
|
To remove a namespace from being blurred (useful in dynamic situations) use:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
blurls=remove,NAMESPACE
|
blurls=remove,NAMESPACE
|
||||||
|
|
|
@ -1,39 +1,41 @@
|
||||||
|
# Master Layout
|
||||||
|
|
||||||
The master layout makes one window be the "master", taking the left part of the
|
The master layout makes one window be the "master", taking the left part of the
|
||||||
screen, and tiles the rest on the right.
|
screen, and tiles the rest on the right.
|
||||||
|
|
||||||
# Quirks
|
## Quirks
|
||||||
|
|
||||||
The right, "slave" windows will always be split uniformly. You cannot change
|
The right, "slave" windows will always be split uniformly. You cannot change
|
||||||
their size.
|
their size.
|
||||||
|
|
||||||
![master1](https://user-images.githubusercontent.com/43317083/179357849-321f042c-f536-44b3-9e6f-371df5321836.gif)
|
![master1](https://user-images.githubusercontent.com/43317083/179357849-321f042c-f536-44b3-9e6f-371df5321836.gif)
|
||||||
|
|
||||||
You can, however, resize the master window.
|
However, you can resize the master window.
|
||||||
|
|
||||||
![master2](https://user-images.githubusercontent.com/43317083/179357863-928b0b5a-ff10-4edc-aa76-3ff88c59c980.gif)
|
![master2](https://user-images.githubusercontent.com/43317083/179357863-928b0b5a-ff10-4edc-aa76-3ff88c59c980.gif)
|
||||||
|
|
||||||
# Config
|
## Config
|
||||||
|
|
||||||
*category name `master`*
|
_category name `master`_
|
||||||
|
|
||||||
| name | description | type | default |
|
| name | description | type | default |
|
||||||
|---|---|---|---|---|
|
| -------------------- | ------------------------------------------------------------------------------------ | ----- | ------- |
|
||||||
| special_scale_factor | (0.0 - 1.0) the scale of the special workspace windows | float | 0.8 |
|
| special_scale_factor | (0.0 - 1.0) the scale of the special workspace windows | float | 0.8 |
|
||||||
| new_is_master | whether a newly open window should replace the master or join the slaves. | bool | false |
|
| new_is_master | whether a newly open window should replace the master or join the slaves. | bool | false |
|
||||||
| new_on_top | whether a newly open window should be on the top of the stack | bool | false |
|
| new_on_top | whether a newly open window should be on the top of the stack | bool | false |
|
||||||
| no_gaps_when_only | whether to apply gaps when there is only one window on a workspace, aka. smart gaps. | bool | false |
|
| no_gaps_when_only | whether to apply gaps when there is only one window on a workspace, aka. smart gaps. | bool | false |
|
||||||
|
|
||||||
## Dispatchers
|
## Dispatchers
|
||||||
|
|
||||||
`layoutmsg` params:
|
`layoutmsg` params:
|
||||||
|
|
||||||
| param | description |
|
| param | description |
|
||||||
| --- | --- |
|
| -------------- | ----------------------------------------------------------------------- |
|
||||||
| swapwithmaster | swaps the current window with master |
|
| swapwithmaster | swaps the current window with master |
|
||||||
| cyclenext | focuses the next window respecting the layout |
|
| cyclenext | focuses the next window respecting the layout |
|
||||||
| cycleprev | focuses the previous window respecting the layout |
|
| cycleprev | focuses the previous window respecting the layout |
|
||||||
| swapnext | swaps the focused window with the next window respecting the layout |
|
| swapnext | swaps the focused window with the next window respecting the layout |
|
||||||
| swapprev | swaps the focused window with the previous window respecting the layout |
|
| swapprev | swaps the focused window with the previous window respecting the layout |
|
||||||
|
|
||||||
{{< hint type=info >}}
|
{{< hint type=info >}}
|
||||||
example usage:
|
example usage:
|
||||||
|
@ -41,4 +43,5 @@ example usage:
|
||||||
```ini
|
```ini
|
||||||
bind=MOD,KEY,layoutmsg,cyclenext
|
bind=MOD,KEY,layoutmsg,cyclenext
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Monitors
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
{{< toc format=html >}}
|
{{< toc format=html >}}
|
||||||
|
@ -5,6 +7,7 @@
|
||||||
## General
|
## General
|
||||||
|
|
||||||
The general config of a monitor looks like this
|
The general config of a monitor looks like this
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
monitor=name,resolution,offset,scale
|
monitor=name,resolution,offset,scale
|
||||||
```
|
```
|
||||||
|
@ -106,7 +109,7 @@ will occur on non-matching resolutions.
|
||||||
{{< hint type=important >}}
|
{{< hint type=important >}}
|
||||||
|
|
||||||
The monitor transform and workspace keywords depend on a monitor rule set
|
The monitor transform and workspace keywords depend on a monitor rule set
|
||||||
specifically for the targeted monitor, and ***MUST*** be after it.
|
specifically for the targeted monitor, and **_MUST_** be after it.
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
@ -146,11 +149,13 @@ flipped + 270 degrees -> 7
|
||||||
|
|
||||||
A workspace can be bound to a monitor, meaning by default it will ALWAYS open
|
A workspace can be bound to a monitor, meaning by default it will ALWAYS open
|
||||||
on the selected monitor. You can do this with
|
on the selected monitor. You can do this with
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
wsbind=WORKSPACE,MONITOR
|
wsbind=WORKSPACE,MONITOR
|
||||||
```
|
```
|
||||||
|
|
||||||
for example:
|
for example:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
wsbind=5,DP-1
|
wsbind=5,DP-1
|
||||||
wsbind=name:secret,DP-2
|
wsbind=name:secret,DP-2
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
|
# Uncommon Tips & Tricks
|
||||||
|
|
||||||
## Switchable keyboard layouts
|
## Switchable keyboard layouts
|
||||||
|
|
||||||
The easiest way to accomplish this is to set this using XKB settings, for example:
|
The easiest way to accomplish this is to set this using XKB settings, for example:
|
||||||
|
|
||||||
```
|
```
|
||||||
input {
|
input {
|
||||||
kb_layout = us,pl
|
kb_layout = us,pl
|
||||||
|
|
|
@ -12,7 +12,7 @@ If it's not, go to the repo root and `/hyprctl`. Issue a `make all` and then
|
||||||
|
|
||||||
{{< hint type=warning >}}
|
{{< hint type=warning >}}
|
||||||
|
|
||||||
*hyprctl* calls will be dispatched by the compositor *synchronously*,
|
_hyprctl_ calls will be dispatched by the compositor _synchronously_,
|
||||||
meaning any spam of the utility will cause slowdowns.
|
meaning any spam of the utility will cause slowdowns.
|
||||||
It's recommended to use `--batch` for many control calls, and
|
It's recommended to use `--batch` for many control calls, and
|
||||||
limiting the amount of info calls.
|
limiting the amount of info calls.
|
||||||
|
@ -31,7 +31,7 @@ An arg has to be present, for dispatchers without parameters it can be anything.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
hyprctl dispatch exec kitty
|
hyprctl dispatch exec kitty
|
||||||
|
|
||||||
hyprctl dispatch pseudo x
|
hyprctl dispatch pseudo x
|
||||||
|
@ -39,13 +39,15 @@ hyprctl dispatch pseudo x
|
||||||
|
|
||||||
Returns: `ok` on success, an error message on fail.
|
Returns: `ok` on success, an error message on fail.
|
||||||
|
|
||||||
|
See [Dispatchers](./Dispatchers) for a list of dispatchers.
|
||||||
|
|
||||||
### Keyword
|
### Keyword
|
||||||
|
|
||||||
issue a `keyword` to call a config keyword dynamically.
|
issue a `keyword` to call a config keyword dynamically.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
hyprctl keyword bind SUPER,O,pseudo
|
hyprctl keyword bind SUPER,O,pseudo
|
||||||
|
|
||||||
hyprctl keyword general:border_size 10
|
hyprctl keyword general:border_size 10
|
||||||
|
@ -73,13 +75,13 @@ params: theme and size
|
||||||
|
|
||||||
e.g.:
|
e.g.:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
hyprctl setcursor Bibata-Modern-Classic 24
|
hyprctl setcursor Bibata-Modern-Classic 24
|
||||||
```
|
```
|
||||||
|
|
||||||
## Info
|
## Info
|
||||||
|
|
||||||
```
|
```sh
|
||||||
version - prints the hyprland version, meaning flags, commit and branch of build.
|
version - prints the hyprland version, meaning flags, commit and branch of build.
|
||||||
monitors - lists all the outputs with their properties
|
monitors - lists all the outputs with their properties
|
||||||
workspaces - lists all workspaces with their properties
|
workspaces - lists all workspaces with their properties
|
||||||
|
@ -91,13 +93,27 @@ splash - prints the current random splash
|
||||||
getoption [option] - gets the config option status (values)
|
getoption [option] - gets the config option status (values)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For the `getoption` command, you need to pass the command in the following format:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
hyprctl getoption section:option
|
||||||
|
```
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
hyprctl getoption general:border_size
|
||||||
|
```
|
||||||
|
|
||||||
|
See [Variables](./Variables) for section and options you can use.
|
||||||
|
|
||||||
# Batch
|
# Batch
|
||||||
|
|
||||||
You can also use `--batch` to specify a batch of commands to execute
|
You can also use `--batch` to specify a batch of commands to execute
|
||||||
|
|
||||||
e.g.
|
e.g.
|
||||||
|
|
||||||
```
|
```sh
|
||||||
hyprctl --batch "keyword general:border_size 2 ; keyword general:gaps_out 20"
|
hyprctl --batch "keyword general:border_size 2 ; keyword general:gaps_out 20"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -107,7 +123,7 @@ hyprctl --batch "keyword general:border_size 2 ; keyword general:gaps_out 20"
|
||||||
|
|
||||||
You can specify flags for the request like this:
|
You can specify flags for the request like this:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
hyprctl -j monitors
|
hyprctl -j monitors
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
For basic syntax info, see
|
# Variables
|
||||||
[Configuring Hyprland](../Configuring-Hyprland).
|
|
||||||
|
For basic syntax info, see [Configuring Hyprland](../Configuring-Hyprland).
|
||||||
|
|
||||||
This page documents all the "options" of Hyprland. For binds, monitors, animations,
|
This page documents all the "options" of Hyprland. For binds, monitors, animations,
|
||||||
etc. see the sidebar. For anything else, see [Keywords](../Keywords).
|
etc. see the sidebar. For anything else, see [Keywords](../Keywords).
|
||||||
|
|
||||||
Please keep in mind some options that are layout-specific will be documented in
|
Please keep in mind some options that are layout-specific will be documented in
|
||||||
the layout pages and not here. (See the Sidebar)
|
the layout pages and not here. (See the Sidebar for Dwindle and Master layouts)
|
||||||
|
|
||||||
# Variable types
|
## Variable types
|
||||||
|
|
||||||
| type | description |
|
| type | description |
|
||||||
|---|---|
|
|---|---|
|
||||||
|
@ -40,9 +41,9 @@ SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
# Sections
|
## Sections
|
||||||
|
|
||||||
## General
|
### General
|
||||||
|
|
||||||
| name | description | type | default |
|
| name | description | type | default |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
|
@ -63,7 +64,8 @@ SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5
|
||||||
Prefer using `input:sensitivity` over `general:sensitivity` to avoid bugs, especially with Wine/Proton apps.
|
Prefer using `input:sensitivity` over `general:sensitivity` to avoid bugs, especially with Wine/Proton apps.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
## Decoration
|
### Decoration
|
||||||
|
|
||||||
| name | description | type | default |
|
| name | description | type | default |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| rounding | rounded corners' radius (in layout px) | int | 0 |
|
| rounding | rounded corners' radius (in layout px) | int | 0 |
|
||||||
|
@ -103,7 +105,7 @@ Using `blur_new_optimizations` with an animated wallpaper may actually increase
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
## Animations
|
### Animations
|
||||||
|
|
||||||
| name | description | type | default |
|
| name | description | type | default |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
|
@ -115,7 +117,7 @@ _[More about Animations](../Animations)._
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
## Input
|
### Input
|
||||||
|
|
||||||
| name | description | type | default |
|
| name | description | type | default |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
|
# Window Rules
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
{{< toc >}}
|
{{< toc >}}
|
||||||
|
|
||||||
## Window Rules V1
|
## Window Rules V1
|
||||||
|
@ -27,17 +30,19 @@ windowrule=move 0 0,title:^(Firefox)(.*)$
|
||||||
|
|
||||||
## Window Rules V2
|
## Window Rules V2
|
||||||
|
|
||||||
In order to allow more flexible rules, while also not breaking compatibility with the above
|
In order to allow more flexible rules, while retaining compatibility with the above
|
||||||
rule system, window rules v2 were implemented.
|
rule system, window rules V2 were implemented.
|
||||||
|
|
||||||
In V2, you are allowed to match multiple variables.
|
In V2, you are allowed to match multiple variables.
|
||||||
|
|
||||||
the `RULE` field is unchanged, but in the `WINDOW` field, you can put regexes for multiple values like so:
|
the `RULE` field is unchanged, but in the `WINDOW` field, you can put regexes for multiple values like so:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||||
```
|
```
|
||||||
|
|
||||||
For now, the supported fields are:
|
For now, the supported fields are:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
class - class regex
|
class - class regex
|
||||||
title - title regex
|
title - title regex
|
||||||
|
@ -45,34 +50,35 @@ xwayland - 0/1
|
||||||
floating - 0/1
|
floating - 0/1
|
||||||
```
|
```
|
||||||
|
|
||||||
Keep in mind you do *not* need to define all of them, but you need to define at least one.
|
Keep in mind you do _not_ need to define all of them, but you need to define at least one.
|
||||||
|
|
||||||
## Rules
|
## Rules
|
||||||
|
|
||||||
| Rule | Description |
|
| Rule | Description |
|
||||||
| ---- | ----------- |
|
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| float | floats a window |
|
| float | floats a window |
|
||||||
| tile | tiles a window |
|
| tile | tiles a window |
|
||||||
| fullscreen | fullscreens a window |
|
| fullscreen | fullscreens a window |
|
||||||
| move \[x\] \[y\] | moves a floating window (x,y -> int or %, e.g. 20% or 100) |
|
| move \[x\] \[y\] | moves a floating window (x,y -> int or %, e.g. 20% or 100) |
|
||||||
| size \[x\] \[y\] | resizes a floating window (x,y -> int or %, e.g. 20% or 100) |
|
| size \[x\] \[y\] | resizes a floating window (x,y -> int or %, e.g. 20% or 100) |
|
||||||
| minsize \[x\] \[y\] | sets the minimum size on creation (x,y -> int) |
|
| minsize \[x\] \[y\] | sets the minimum size on creation (x,y -> int) |
|
||||||
| maxsize \[x\] \[y\] | sets the maximum size on creation (x,y -> int) |
|
| maxsize \[x\] \[y\] | sets the maximum size on creation (x,y -> int) |
|
||||||
| center | if the window is floating, will center it on the monitor |
|
| center | if the window is floating, will center it on the monitor |
|
||||||
| pseudo | pseudotiles a window |
|
| pseudo | pseudotiles a window |
|
||||||
| monitor \[id\] | sets the monitor on which a window should open |
|
| monitor \[id\] | sets the monitor on which a window should open |
|
||||||
| workspace \[w\] | sets the workspace on which a window should open (for workspace syntax, see [dispatchers->workspaces](../Dispatchers#workspaces)). You can also make \[w\] to `unset`, will unset all previous workspace rules applied to this window. You can also add `silent` after the workspace to make the window open silently. |
|
| workspace \[w\] | sets the workspace on which a window should open (for workspace syntax, see [dispatchers->workspaces](../Dispatchers#workspaces)). You can also make \[w\] to `unset`, will unset all previous workspace rules applied to this window. You can also add `silent` after the workspace to make the window open silently. |
|
||||||
| opacity \[a\] | additional opacity multiplier. Options for a: `float` -> sets an opacity OR `float float` -> sets activeopacity and inactiveopacity respectively |
|
| opacity \[a\] | additional opacity multiplier. Options for a: `float` -> sets an opacity OR `float float` -> sets activeopacity and inactiveopacity respectively |
|
||||||
| opaque | forces the window to be opaque (can be toggled with the toggleopaque dispatcher) |
|
| opaque | forces the window to be opaque (can be toggled with the toggleopaque dispatcher) |
|
||||||
| animation \[style\] (\[opt\]) | forces an animation onto a window, with a selected opt. Opt is optional. |
|
| animation \[style\] (\[opt\]) | forces an animation onto a window, with a selected opt. Opt is optional. |
|
||||||
| rounding \[x\] | forces the application to have X pixels of rounding, ignoring the set default (in `decoration:rounding`). Has to be an int. |
|
| rounding \[x\] | forces the application to have X pixels of rounding, ignoring the set default (in `decoration:rounding`). Has to be an int. |
|
||||||
| noblur | disables blur for the window |
|
| noblur | disables blur for the window |
|
||||||
| nofocus | disables focus to the window |
|
| nofocus | disables focus to the window |
|
||||||
| forceinput | forces an XWayland window to receive input, even if it requests not to do so. (Might fix issues like e.g. Game Launchers not receiving focus for some reason) |
|
| forceinput | forces an XWayland window to receive input, even if it requests not to do so. (Might fix issues like e.g. Game Launchers not receiving focus for some reason) |
|
||||||
| pin | pins the window *note: floating only* |
|
| pin | pins the window _note: floating only_ |
|
||||||
| noanim | disables the animations for the window |
|
| noanim | disables the animations for the window |
|
||||||
|
|
||||||
|
_Examples_:
|
||||||
|
|
||||||
*Examples*:
|
|
||||||
```ini
|
```ini
|
||||||
windowrule = move 100 100,^(kitty)$
|
windowrule = move 100 100,^(kitty)$
|
||||||
windowrule = animation popin,^(kitty)$
|
windowrule = animation popin,^(kitty)$
|
||||||
|
@ -81,11 +87,10 @@ windowrule = noblur,^(firefox)$
|
||||||
|
|
||||||
{{< hint type=tip >}}
|
{{< hint type=tip >}}
|
||||||
|
|
||||||
Opacity is always a PRODUCT of all opacities. E.g. active_opacity to
|
Opacity is _always_ a PRODUCT of all opacities. E.g. active_opacity to
|
||||||
0.5 and windowrule opacity to 0.5 will result in a total opacity 0.25. You are
|
0.5 and windowrule opacity to 0.5 will result in a total opacity 0.25. You are
|
||||||
allowed to set opacities over 1, but any opacity product over 1 will cause
|
allowed to set opacities over 1, but any opacity product over 1 will cause
|
||||||
graphical glitches. E.g. 0.5 * 2 = 1, and it will be fine, 0.5 * 4 will cause
|
graphical glitches. E.g. 0.5 _2 = 1, and it will be fine, 0.5_ 4 will cause
|
||||||
graphical glitches.
|
graphical glitches.
|
||||||
|
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
|
# XWayland
|
||||||
|
|
||||||
XWayland is the bridging mechanism between legacy Xorg programs and Wayland
|
XWayland is the bridging mechanism between legacy Xorg programs and Wayland
|
||||||
compositors.
|
compositors.
|
||||||
|
|
||||||
# HiDPI XWayland
|
## HiDPI XWayland
|
||||||
|
|
||||||
Currently, XWayland on HiDPI screens looks pixelated/blurry, due to Xorg's
|
Currently XWayland on HiDPI screens looks pixelated/blurry, due to Xorg's
|
||||||
inability to scale.
|
inability to scale.
|
||||||
There are attempts to add a standard scaling mechanism, such as [MR 733](https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/733).
|
There are attempts to add a standard scaling mechanism, such as [MR 733](https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/733).
|
||||||
|
|
||||||
|
@ -17,25 +19,29 @@ and [Pacman patching](https://wiki.archlinux.org/title/Patching_packages).
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
1. Have the latest `xwayland` package patched with at least
|
1. Have the latest `xwayland` package patched with at least
|
||||||
[the HiDPI patch](https://github.com/hyprwm/Hyprland/blob/main/nix/xwayland-hidpi.patch)
|
[the HiDPI patch](https://github.com/hyprwm/Hyprland/blob/main/nix/xwayland-hidpi.patch)
|
||||||
(based on the MR's implementation, but updated).
|
(based on the MR's implementation, but updated).
|
||||||
|
|
||||||
2. Make sure you have the required Hyprland `wlroots`, patched with
|
2. Make sure you have the required Hyprland `wlroots`, patched with
|
||||||
[the HiDPI xwayland patch](https://gitlab.freedesktop.org/lilydjwg/wlroots/-/commit/6c5ffcd1fee9e44780a6a8792f74ecfbe24a1ca7)
|
[the HiDPI xwayland patch](https://gitlab.freedesktop.org/lilydjwg/wlroots/-/commit/6c5ffcd1fee9e44780a6a8792f74ecfbe24a1ca7)
|
||||||
and [this commit](https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/18595000f3a21502fd60bf213122859cc348f9af)
|
and [this commit](https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/18595000f3a21502fd60bf213122859cc348f9af)
|
||||||
**reverted**. This is important, as not reverting it will make opening XWayland
|
**reverted**. This is important, as not reverting it will make opening XWayland
|
||||||
programs crash Hyprland.
|
programs crash Hyprland.
|
||||||
|
|
||||||
3. Add this line to your configuration:
|
3. Add this line to your configuration:
|
||||||
```ini
|
|
||||||
exec-once=xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2
|
|
||||||
```
|
|
||||||
and configure toolkits to scale using their specific mechanisms, such as
|
|
||||||
```sh
|
|
||||||
export GDK_SCALE=2
|
|
||||||
export XCURSOR_SIZE=32
|
|
||||||
```
|
|
||||||
|
|
||||||
{{< hint >}}
|
```ini
|
||||||
The GDK_SCALE variable won't conflict with wayland-native GTK programs.
|
exec-once=xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2
|
||||||
|
```
|
||||||
|
|
||||||
|
and configure toolkits to scale using their specific mechanisms, such as
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export GDK_SCALE=2
|
||||||
|
export XCURSOR_SIZE=32
|
||||||
|
```
|
||||||
|
|
||||||
|
{{< hint >}}
|
||||||
|
|
||||||
|
The GDK_SCALE variable won't conflict with wayland-native GTK programs.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
|
# Pull Request Guidelines
|
||||||
|
|
||||||
## PR Requirements
|
## PR Requirements
|
||||||
|
|
||||||
- Clean, not hacky code
|
- Clean, not hacky code
|
||||||
- Described changes and *why* they were there
|
- Described changes and _why_ they were there
|
||||||
- Following the style (see below)
|
- Following the style (see below)
|
||||||
|
|
||||||
## Code Style
|
## Code Style
|
||||||
|
|
||||||
Hyprland's code style:
|
Hyprland's code style:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
void myFunction(int arg) {
|
void myFunction(int arg) {
|
||||||
|
|
||||||
|
@ -58,7 +61,9 @@ public:
|
||||||
> Why is the config variable getting so weird?
|
> Why is the config variable getting so weird?
|
||||||
|
|
||||||
Every variable from the config needs to be found in a hashmap. To limit the amount of hashmap searches, getting a config option looks like this:
|
Every variable from the config needs to be found in a hashmap. To limit the amount of hashmap searches, getting a config option looks like this:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
static auto *const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
|
static auto *const PFOLLOWMOUSE = &g_pConfigManager->getConfigValuePtr("input:follow_mouse")->intValue;
|
||||||
```
|
```
|
||||||
Since the hashmap *cannot* be mutated during runtime, this pointer will always be valid, and will not require hashmap lookups every single time it's read.
|
|
||||||
|
Since the hashmap _cannot_ be mutated during runtime, this pointer will always be valid, and will not require hashmap lookups every single time it's read.
|
||||||
|
|
|
@ -5,21 +5,21 @@ PR, code styling and code FAQs are [here](./PR-Guidelines)
|
||||||
For issues, please see
|
For issues, please see
|
||||||
[the guidelines](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md)
|
[the guidelines](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md)
|
||||||
|
|
||||||
# Build in debug mode
|
## Build in debug mode
|
||||||
|
|
||||||
## Required packages
|
### Required packages
|
||||||
|
|
||||||
`xcb` stuff, check with your local package provider.
|
`xcb` stuff, check with your local package provider.
|
||||||
|
|
||||||
`wayland` - of course.
|
`wayland` - of course.
|
||||||
|
|
||||||
*Arch*:
|
_Arch_:
|
||||||
|
|
||||||
`yay -S gdb ninja gcc cmake libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite xorg-xinput libxrender pixman wayland-protocols cairo pango seatd`
|
`yay -S gdb ninja gcc cmake libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite xorg-xinput libxrender pixman wayland-protocols cairo pango seatd`
|
||||||
|
|
||||||
(If any are missing hmu)
|
(If any are missing hmu)
|
||||||
|
|
||||||
## Recommended, CMake
|
### Recommended, CMake
|
||||||
|
|
||||||
Install the VSCode C/C++ and CMake Tools extensions and use that.
|
Install the VSCode C/C++ and CMake Tools extensions and use that.
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ that you can copy to your .vscode/ folder in the repo root.
|
||||||
With that, you can build in debug, go to the debugging tab and hit
|
With that, you can build in debug, go to the debugging tab and hit
|
||||||
`(gdb) Launch`.
|
`(gdb) Launch`.
|
||||||
|
|
||||||
## Custom, CLI
|
### Custom, CLI
|
||||||
|
|
||||||
`make debug`
|
`make debug`
|
||||||
|
|
||||||
|
@ -48,13 +48,13 @@ meaning you'll be unable to build any other wlroots compositor
|
||||||
without a wlroots reinstall.
|
without a wlroots reinstall.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
# Running
|
## Running
|
||||||
|
|
||||||
when running Hyprland in Debug mode, the config is
|
when running Hyprland in Debug mode, the config is
|
||||||
`~/.config/hypr/hyprlandd.conf` and the logs can be found at
|
`~/.config/hypr/hyprlandd.conf` and the logs can be found at
|
||||||
`/tmp/hypr/[INSTANCE SIGNATURE]/hyprlandd.conf`.
|
`/tmp/hypr/[INSTANCE SIGNATURE]/hyprlandd.conf`.
|
||||||
|
|
||||||
# Logs, dumps, etc.
|
## Logs, dumps, etc
|
||||||
|
|
||||||
You can use the logs and the GDB debugger, but running Hyprland in debug compile
|
You can use the logs and the GDB debugger, but running Hyprland in debug compile
|
||||||
as a driver and using it for a while might give more insight to the more random
|
as a driver and using it for a while might give more insight to the more random
|
||||||
|
@ -71,7 +71,7 @@ watch -n 0.1 "cat /tmp/hypr/$(echo HYPRLAND_INSTANCE_SIGNATURE)/hyprland.log | g
|
||||||
|
|
||||||
for live logs. (replace `hyprland` with `hyprlandd` for debug builds)
|
for live logs. (replace `hyprland` with `hyprlandd` for debug builds)
|
||||||
|
|
||||||
# Nesting Hyprland
|
## Nesting Hyprland
|
||||||
|
|
||||||
Hyprland can run nested in a window. For that, make sure you did the following:
|
Hyprland can run nested in a window. For that, make sure you did the following:
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Crashes & Bugs
|
||||||
|
|
||||||
## Getting the log
|
## Getting the log
|
||||||
|
|
||||||
If you are in a TTY, and the hyprland session that crashed was the last one you
|
If you are in a TTY, and the hyprland session that crashed was the last one you
|
||||||
|
@ -37,8 +39,7 @@ Report an issue on GitHub or on the Discord server.
|
||||||
|
|
||||||
## Bugs
|
## Bugs
|
||||||
|
|
||||||
First of all, ***READ THE
|
First of all, **_READ THE [FAQ PAGE](../FAQ)_**
|
||||||
[FAQ PAGE](../FAQ)***
|
|
||||||
|
|
||||||
If your bug is not listed there, you can ask on the Discord server or open an
|
If your bug is not listed there, you can ask on the Discord server or open an
|
||||||
issue on GitHub.
|
issue on GitHub.
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
|
# Frequently Asked Questions
|
||||||
|
|
||||||
{{< toc format=html >}}
|
{{< toc format=html >}}
|
||||||
|
|
||||||
### Nothing renders / screen is empty / crash on opening first app
|
## Nothing renders / screen is empty / crash on opening first app
|
||||||
|
|
||||||
Possible causes:
|
Possible causes:
|
||||||
|
|
||||||
|
@ -10,14 +11,14 @@ Possible causes:
|
||||||
Use something like `qt5ct` (QT) and `lxappearance` (GTK) (\*for GTK you can also
|
Use something like `qt5ct` (QT) and `lxappearance` (GTK) (\*for GTK you can also
|
||||||
set up themes with envvars) to set up your themes.
|
set up themes with envvars) to set up your themes.
|
||||||
|
|
||||||
> Your PC is very, very old.
|
> Your PC is very, _very_ old.
|
||||||
|
|
||||||
In that case, see the
|
In that case, see the
|
||||||
[Installation Page](../../Getting-Started/Installation) and
|
[Installation Page](../../Getting-Started/Installation) and
|
||||||
try compiling with LEGACY_RENDERER
|
try compiling with LEGACY_RENDERER
|
||||||
|
|
||||||
*For more info about bugs and crashes, see this*
|
_For more info about bugs and crashes, see this_
|
||||||
*[wiki page](../../Crashes-and-Bugs)*
|
_[wiki page](../../Crashes-and-Bugs)_
|
||||||
|
|
||||||
### Me cursor no render?
|
### Me cursor no render?
|
||||||
|
|
||||||
|
@ -34,19 +35,19 @@ do much about it other than wait for the wlroots devs to fix it:
|
||||||
For Nvidia graphics - unfortunately, it's a wlroots issue as well, most likely due to Nvidia's
|
For Nvidia graphics - unfortunately, it's a wlroots issue as well, most likely due to Nvidia's
|
||||||
lack of support and proprietary drivers.
|
lack of support and proprietary drivers.
|
||||||
|
|
||||||
There is a way to fix it that *might* work for you though:
|
There is a way to fix it that _might_ work for you though:
|
||||||
|
|
||||||
**Option 1:** Use *only* the external monitor
|
**Option 1:** Use _only_ the external monitor
|
||||||
|
|
||||||
By using `WLR_DRM_DEVICES=/dev/dri/card1` (or `card0`) you can force Hyprland to use only your dGPU,
|
By using `WLR_DRM_DEVICES=/dev/dri/card1` (or `card0`) you can force Hyprland to use only your dGPU,
|
||||||
meaning your laptop's screen will be gone but your external one will work.
|
meaning your laptop's screen will be gone but your external one will work.
|
||||||
|
|
||||||
**Option 2:** Use all outputs, at the cost of battery life.
|
**Option 2:** Use all outputs, at the cost of battery life.
|
||||||
|
|
||||||
By switching your laptop to only use the dGPU in the BIOS, you *might* be able to get everything to work,
|
By switching your laptop to only use the dGPU in the BIOS, you _might_ be able to get everything to work,
|
||||||
at the cost of high battery usage.
|
at the cost of high battery usage.
|
||||||
|
|
||||||
*Please note these are highly model-specific and might or might not work. If they don't, you're unfortunately out of luck.*
|
_Please note these are highly model-specific and might or might not work. If they don't, you're unfortunately out of luck._
|
||||||
|
|
||||||
You might try a USB-C to hdmi adapter though, maybe that could route the external monitor through the iGPU.
|
You might try a USB-C to hdmi adapter though, maybe that could route the external monitor through the iGPU.
|
||||||
|
|
||||||
|
@ -61,7 +62,9 @@ GitHub pages).
|
||||||
For a more complete utility, try our own
|
For a more complete utility, try our own
|
||||||
[Grimblast](https://github.com/hyprwm/contrib).
|
[Grimblast](https://github.com/hyprwm/contrib).
|
||||||
|
|
||||||
### Screenshare / OBS no worky!
|
For recording videos, wf-recorder could be used.
|
||||||
|
|
||||||
|
### Screenshare / OBS no worky
|
||||||
|
|
||||||
Check [Screensharing](../Useful-Utilities/Screen-Sharing).
|
Check [Screensharing](../Useful-Utilities/Screen-Sharing).
|
||||||
|
|
||||||
|
@ -73,7 +76,7 @@ See [Wallpapers](../Useful-Utilities/Wallpapers).
|
||||||
|
|
||||||
You did the below, unknowingly.
|
You did the below, unknowingly.
|
||||||
|
|
||||||
### My games work poorly, especially proton ones!
|
### My games work poorly, especially proton ones
|
||||||
|
|
||||||
Use `gamescope`, tends to fix any and all issues with wayland/Hyprland.
|
Use `gamescope`, tends to fix any and all issues with wayland/Hyprland.
|
||||||
|
|
||||||
|
@ -87,7 +90,7 @@ turning off the blur and animations.
|
||||||
You probably forgot to turn on `decoration:blur_new_optimizations`. Thank me
|
You probably forgot to turn on `decoration:blur_new_optimizations`. Thank me
|
||||||
later.
|
later.
|
||||||
|
|
||||||
### My monitor no worky!
|
### My monitor no worky
|
||||||
|
|
||||||
Try changing the mode in your config. If your preferred one doesn't work, try a
|
Try changing the mode in your config. If your preferred one doesn't work, try a
|
||||||
lower one. A good way to list all modes is to get `wlr-randr` and do a
|
lower one. A good way to list all modes is to get `wlr-randr` and do a
|
||||||
|
@ -95,8 +98,8 @@ lower one. A good way to list all modes is to get `wlr-randr` and do a
|
||||||
|
|
||||||
### How do I get a coredump?
|
### How do I get a coredump?
|
||||||
|
|
||||||
*These instructions are ONLY for systemd. If you use anything else, you should
|
_These instructions are ONLY for systemd. If you use anything else, you should
|
||||||
know what you're doing.*
|
know what you're doing._
|
||||||
|
|
||||||
Launch `coredumpctl` in a terminal. Press <key>END</key> on the keyboard to go
|
Launch `coredumpctl` in a terminal. Press <key>END</key> on the keyboard to go
|
||||||
to the end. Note the **last** (the one furthest to the bottom) crash that has
|
to the end. Note the **last** (the one furthest to the bottom) crash that has
|
||||||
|
@ -107,8 +110,12 @@ as a file.
|
||||||
|
|
||||||
### How do I update?
|
### How do I update?
|
||||||
|
|
||||||
open a terminal where you cloned the repo.
|
Open a terminal where you cloned the repo.
|
||||||
`git pull && sudo make clear && sudo make install`
|
`git pull && sudo make clear && sudo make cleaninstall`
|
||||||
|
|
||||||
|
If you are using the AUR (hyprland-git) package, you
|
||||||
|
will need to cleanbuild to update the package. Paru
|
||||||
|
has been problematic with updating before, use Yay.
|
||||||
|
|
||||||
### Waybar popups render behind the windows??
|
### Waybar popups render behind the windows??
|
||||||
|
|
||||||
|
@ -136,20 +143,20 @@ all good!
|
||||||
|
|
||||||
If it still doesn't work...
|
If it still doesn't work...
|
||||||
|
|
||||||
### GTK Settings no work / whatever!
|
### GTK Settings no work / whatever
|
||||||
|
|
||||||
[https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland](https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland)
|
[https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland](https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland)
|
||||||
|
|
||||||
### My \[program name\] is freezing!
|
### My \[program name\] is freezing
|
||||||
|
|
||||||
Make sure you have a notification daemon running, for example `dunst`. Autostart
|
Make sure you have a notification daemon running, for example `dunst`. Autostart
|
||||||
it with the `exec-once` keyword.
|
it with the `exec-once` keyword.
|
||||||
|
|
||||||
### I want to use Waybar, but the workspaces don't work!
|
### I want to use Waybar, but the workspaces don't work
|
||||||
|
|
||||||
Check [Status bars](../Useful-Utilities/Status-Bars).
|
Check [Status bars](../Useful-Utilities/Status-Bars).
|
||||||
|
|
||||||
### Waybar doesn't show the active workspace!
|
### Waybar doesn't show the active workspace
|
||||||
|
|
||||||
Use the style for `#workspaces button.active`
|
Use the style for `#workspaces button.active`
|
||||||
|
|
||||||
|
@ -227,24 +234,27 @@ Please note this requires `socat` to be installed.
|
||||||
|
|
||||||
Use [Open Tablet Driver](https://github.com/OpenTabletDriver/OpenTabletDriver)
|
Use [Open Tablet Driver](https://github.com/OpenTabletDriver/OpenTabletDriver)
|
||||||
to configure your tablet. In the future it will be supported in the config.
|
to configure your tablet. In the future it will be supported in the config.
|
||||||
Until then, OTD.
|
Until then, OTD is the way to go.
|
||||||
|
|
||||||
### Some of my apps take a really long time to open...?
|
### Some of my apps take a really long time to open...?
|
||||||
|
|
||||||
*~/.config/hypr/hyprland.conf*
|
_~/.config/hypr/hyprland.conf_
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||||
```
|
```
|
||||||
|
|
||||||
and
|
and
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||||
```
|
```
|
||||||
|
|
||||||
Make sure that your portals launch *after* this gets executed. For some people,
|
Make sure that your portals launch _after_ this gets executed. For some people,
|
||||||
they might launch before that has happened.
|
they might launch before that has happened.
|
||||||
|
|
||||||
In such cases, a script like this:
|
In such cases, a script like this:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
sleep 4
|
sleep 4
|
||||||
|
@ -254,11 +264,12 @@ killall xdg-desktop-portal
|
||||||
sleep 4
|
sleep 4
|
||||||
/usr/lib/xdg-desktop-portal &
|
/usr/lib/xdg-desktop-portal &
|
||||||
```
|
```
|
||||||
|
|
||||||
launched with `exec-once` should fix all issues. Adjust the sleep durations to taste.
|
launched with `exec-once` should fix all issues. Adjust the sleep durations to taste.
|
||||||
|
|
||||||
### My cursor in QT apps is too big!
|
### My cursor in QT apps is too big
|
||||||
|
|
||||||
The QT cursor size can be fixed by setting the envvar `XCURSOR_SIZE=24`. You
|
Oh no! Anyway, the QT cursor size can be fixed by setting the envvar `XCURSOR_SIZE=24`. You
|
||||||
should probably add it to your exported envvars.
|
should probably add it to your exported envvars.
|
||||||
|
|
||||||
### How do I export envvars for Hyprland?
|
### How do I export envvars for Hyprland?
|
||||||
|
@ -274,27 +285,28 @@ exec Hyprland
|
||||||
and launch that.
|
and launch that.
|
||||||
|
|
||||||
For Display Manager users, you can replace the `exec` entry in
|
For Display Manager users, you can replace the `exec` entry in
|
||||||
the `.desktop` file to point to your script.
|
the `.desktop` file to point to your script. You are recommended
|
||||||
|
to use absolute paths, such as `/home/username/Script` instead of `~/Script`
|
||||||
|
|
||||||
### I get random white flashes!
|
### I get random white flashes
|
||||||
|
|
||||||
Try disabling VFR with `misc:no_vfr=1`.
|
Try disabling VFR with `misc:no_vfr=1`.
|
||||||
|
|
||||||
### How do I make Hyprland draw as little power as possible on my laptop?
|
### How do I make Hyprland draw as little power as possible on my laptop?
|
||||||
|
|
||||||
I assume you already have `damage_tracking` on full. If you don't, do it. It's
|
I assume you already have `damage_tracking` on full. If you don't, change it. It's
|
||||||
heavily advised to use `full` regardless of anything.
|
heavily advised to use `full` regardless of anything.
|
||||||
|
|
||||||
Optimization options:
|
Optimization options:
|
||||||
|
|
||||||
*feel free to ignore any that you find causing issues*
|
_feel free to ignore any that you find causing issues_
|
||||||
|
|
||||||
`decoration:blur_new_optimizations = true`
|
`decoration:blur_new_optimizations = true`
|
||||||
|
|
||||||
`decoration:blur = false`
|
`decoration:blur = false`
|
||||||
|
|
||||||
`decoration:drop_shadow = false`
|
`decoration:drop_shadow = false`
|
||||||
|
|
||||||
`misc:no_vfr = false`
|
`misc:no_vfr = false`
|
||||||
|
|
||||||
*possibly* `misc:disable_autoreload = true`
|
_possibly_ `misc:disable_autoreload = true`
|
||||||
|
|
|
@ -5,14 +5,14 @@ Hyprland. If you want to try Hyprland on Nvidia regardless
|
||||||
(many people have reported successes), follow the [Nvidia page](../../Nvidia)
|
(many people have reported successes), follow the [Nvidia page](../../Nvidia)
|
||||||
after installing Hyprland.
|
after installing Hyprland.
|
||||||
|
|
||||||
### Distros
|
## Distros
|
||||||
|
|
||||||
Arch, NixOS and openSUSE Tumbleweed are very supported. For any other distro
|
Arch, NixOS and openSUSE Tumbleweed are very supported. For any other distro
|
||||||
(not based on Arch/Nix) you might have varying amounts of success. However,
|
(not based on Arch/Nix) you might have varying amounts of success. However,
|
||||||
since Hyprland is extremely bleeding-edge, distros like Pop!\_OS, Ubuntu, etc.
|
since Hyprland is extremely bleeding-edge, distros like Pop!\_OS, Ubuntu, etc.
|
||||||
might have **major** issues running Hyprland.
|
might have **major** issues running Hyprland.
|
||||||
|
|
||||||
# Installation
|
## Installation
|
||||||
|
|
||||||
Installing Hyprland is very easy. Either you install it from your local package
|
Installing Hyprland is very easy. Either you install it from your local package
|
||||||
provider (if they provide pkgs for Hyprland) or you install/build it yourself.
|
provider (if they provide pkgs for Hyprland) or you install/build it yourself.
|
||||||
|
@ -24,21 +24,20 @@ consider updating your packages with `yay -Syu --devel`, or your other preferred
|
||||||
package manager.
|
package manager.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
## Packages
|
### Packages
|
||||||
|
|
||||||
**WARNING:** I do not maintain any packages. If they are broken, try building
|
**WARNING:** I do not maintain any packages. If they are broken, try building
|
||||||
from source first.
|
from source first.
|
||||||
|
|
||||||
{{< tabs "uniqueid" >}}
|
{{< tabs "uniqueid" >}}
|
||||||
|
|
||||||
{{< tab "Arch Linux" >}} *If you're on Arch Linux, I* ***heavily*** *recommend
|
{{< tab "Arch Linux" >}} _If you're on Arch Linux, I_ **_heavily_** _recommend
|
||||||
you use the AUR.*
|
you use the AUR._
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
hyprland-git - compiles from latest source
|
hyprland-git - compiles from latest source
|
||||||
hyprland - compiles from latest release source
|
hyprland - compiles from latest release source
|
||||||
hyprland-bin - compiled latest release, prone to breaking on ARM devices as Hyprland binary is compiled for x86
|
hyprland-bin - compiled latest release, prone to breaking on ARM devices as Hyprland binary is compiled for x86
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
|
@ -56,7 +55,7 @@ opi hyprland
|
||||||
Alternatively, you can also follow the instructions under ["Manual (Manual Build)"](#manual-manual-build)
|
Alternatively, you can also follow the instructions under ["Manual (Manual Build)"](#manual-manual-build)
|
||||||
to build Hyprland yourself.
|
to build Hyprland yourself.
|
||||||
|
|
||||||
Note: *Hyprland is not available for Leap, as most libraries (and compiler) that Hyprland needs are too old.*
|
Note: _Hyprland is not available for Leap, as most libraries (and compiler) that Hyprland needs are too old._
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
{{< tab "Fedora" >}}<https://github.com/hyprwm/Hyprland/discussions/284>{{< /tab >}}
|
{{< tab "Fedora" >}}<https://github.com/hyprwm/Hyprland/discussions/284>{{< /tab >}}
|
||||||
{{< tab "Gentoo" >}}
|
{{< tab "Gentoo" >}}
|
||||||
|
@ -71,7 +70,7 @@ emerge --ask --verbose hyprland
|
||||||
|
|
||||||
{{< /tabs >}}
|
{{< /tabs >}}
|
||||||
|
|
||||||
## Manual (Releases)
|
### Manual (Releases)
|
||||||
|
|
||||||
Download the most recent release.
|
Download the most recent release.
|
||||||
|
|
||||||
|
@ -89,17 +88,17 @@ the example config is in `examples/Hyprland.conf`.
|
||||||
For updating later on, you can overwrite the binaries (hyprctl, hyprland and
|
For updating later on, you can overwrite the binaries (hyprctl, hyprland and
|
||||||
libwlroots), you don't need to update anything else.
|
libwlroots), you don't need to update anything else.
|
||||||
|
|
||||||
## Manual (Manual Build)
|
### Manual (Manual Build)
|
||||||
|
|
||||||
*Arch dependencies*:
|
_Arch dependencies_:
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
yay -S gdb ninja gcc cmake libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite xorg-xinput libxrender pixman wayland-protocols cairo pango seatd
|
yay -S gdb ninja gcc cmake libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite xorg-xinput libxrender pixman wayland-protocols cairo pango seatd
|
||||||
```
|
```
|
||||||
|
|
||||||
(If any are missing hmu)
|
_(If any are missing, hmu)_
|
||||||
|
|
||||||
*openSUSE dependencies*:
|
_openSUSE dependencies_:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
zypper in gcc-c++ git meson cmake "pkgconfig(cairo)" "pkgconfig(egl)" "pkgconfig(gbm)" "pkgconfig(gl)" "pkgconfig(glesv2)" "pkgconfig(libdrm)" "pkgconfig(libinput)" "pkgconfig(libseat)" "pkgconfig(libudev)" "pkgconfig(pango)" "pkgconfig(pangocairo)" "pkgconfig(pixman-1)" "pkgconfig(vulkan)" "pkgconfig(wayland-client)" "pkgconfig(wayland-protocols)" "pkgconfig(wayland-scanner)" "pkgconfig(wayland-server)" "pkgconfig(xcb)" "pkgconfig(xcb-icccm)" "pkgconfig(xcb-renderutil)" "pkgconfig(xkbcommon)" "pkgconfig(xwayland)" glslang-devel Mesa-libGLESv3-devel "pkgconfig(xcb-errors)"
|
zypper in gcc-c++ git meson cmake "pkgconfig(cairo)" "pkgconfig(egl)" "pkgconfig(gbm)" "pkgconfig(gl)" "pkgconfig(glesv2)" "pkgconfig(libdrm)" "pkgconfig(libinput)" "pkgconfig(libseat)" "pkgconfig(libudev)" "pkgconfig(pango)" "pkgconfig(pangocairo)" "pkgconfig(pixman-1)" "pkgconfig(vulkan)" "pkgconfig(wayland-client)" "pkgconfig(wayland-protocols)" "pkgconfig(wayland-scanner)" "pkgconfig(wayland-server)" "pkgconfig(xcb)" "pkgconfig(xcb-icccm)" "pkgconfig(xcb-renderutil)" "pkgconfig(xkbcommon)" "pkgconfig(xwayland)" glslang-devel Mesa-libGLESv3-devel "pkgconfig(xcb-errors)"
|
||||||
|
@ -122,10 +121,12 @@ cd Hyprland
|
||||||
sudo make install
|
sudo make install
|
||||||
```
|
```
|
||||||
|
|
||||||
Do note that `sudo make install` will copy the example .desktop file to `/usr/share/wayland-sessions/` directory,
|
Do note that `sudo make install` will copy the example .desktop file to
|
||||||
promptly overriding the existent .desktop file from previous installations.
|
`/usr/share/wayland-sessions/` directory, promptly overriding the existent
|
||||||
|
.desktop file from previous installations.
|
||||||
|
|
||||||
It's probably a good idea to run `sudo make cleaninstall` to update Hyprland later on, as it does not overwrite the desktop file.
|
It's probably a good idea to run `sudo make cleaninstall` to update Hyprland later on,
|
||||||
|
as it will not overwrite the desktop file.
|
||||||
|
|
||||||
### Meson
|
### Meson
|
||||||
|
|
||||||
|
@ -152,7 +153,7 @@ for legacy renderer:
|
||||||
sudo make clear && sudo make config && make legacyrenderer && sudo cp ./build/Hyprland /usr/bin && sudo cp ./example/hyprland.desktop /usr/share/wayland-sessions
|
sudo make clear && sudo make config && make legacyrenderer && sudo cp ./build/Hyprland /usr/bin && sudo cp ./example/hyprland.desktop /usr/share/wayland-sessions
|
||||||
```
|
```
|
||||||
|
|
||||||
*please note the legacy renderer may not support some graphical features.*
|
_please note the legacy renderer may not support some graphical features._
|
||||||
<br/><br/> Any other config: (replace \[PRESET\] with your preset, `release`
|
<br/><br/> Any other config: (replace \[PRESET\] with your preset, `release`
|
||||||
`debug` `legacyrenderer` `legacyrendererdebug`)
|
`debug` `legacyrenderer` `legacyrendererdebug`)
|
||||||
|
|
||||||
|
@ -205,7 +206,7 @@ Now, of course, install manually.
|
||||||
sudo cp ./build/Hyprland /usr/bin && sudo cp ./example/hyprland.desktop /usr/share/wayland-sessions
|
sudo cp ./build/Hyprland /usr/bin && sudo cp ./example/hyprland.desktop /usr/share/wayland-sessions
|
||||||
```
|
```
|
||||||
|
|
||||||
# Launching
|
## Launching
|
||||||
|
|
||||||
You can launch Hyprland by either going into a TTY and executing `Hyprland`, or
|
You can launch Hyprland by either going into a TTY and executing `Hyprland`, or
|
||||||
with a login manager.
|
with a login manager.
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
After you've installed Hyprland, you can either launch it from a TTY with
|
# Quickstart
|
||||||
|
|
||||||
|
After you have installed Hyprland, you can either launch it from a TTY with
|
||||||
`Hyprland` or from a login manager. Although login managers aren't officially
|
`Hyprland` or from a login manager. Although login managers aren't officially
|
||||||
supported, I recommend `SDDM`, as it's been working flawlessly with wayland
|
supported, I recommend `SDDM`, as it's been working flawlessly with wayland
|
||||||
compositors.
|
compositors.
|
||||||
|
|
||||||
It is recommended you have `kitty` for terminal access, (example and
|
It is recommended you have `kitty` installed for terminal access, (example and
|
||||||
autogenerated configs have it bound to <kbd>SUPER</kbd> + <kbd>Q</kbd>).
|
autogenerated configs have it bound to <kbd>SUPER</kbd> + <kbd>Q</kbd>).
|
||||||
Alternatively, manually change it in the config before launching Hyprland.
|
Alternatively, manually change it in the config before launching Hyprland.
|
||||||
|
|
||||||
|
@ -34,7 +36,7 @@ exec Hyprland
|
||||||
```
|
```
|
||||||
|
|
||||||
You can add as many exported envvars as you need (Nvidia users might need a
|
You can add as many exported envvars as you need (Nvidia users might need a
|
||||||
lot), but I recommend having *at least* the shown two.
|
lot), but I recommend having _at least_ the shown two.
|
||||||
|
|
||||||
You should now launch Hyprland with `wrappedhl` instead of `Hyprland`. Make sure
|
You should now launch Hyprland with `wrappedhl` instead of `Hyprland`. Make sure
|
||||||
to copy your `.desktop` file in `/usr/share/wayland-sessions/` and edit it if you use a
|
to copy your `.desktop` file in `/usr/share/wayland-sessions/` and edit it if you use a
|
||||||
|
@ -44,7 +46,7 @@ usually not ran through the user account.
|
||||||
{{< hint type=important >}}
|
{{< hint type=important >}}
|
||||||
It is highly recommended to copy the desktop file to e.g. `wrapped_hl.desktop` instead of editing
|
It is highly recommended to copy the desktop file to e.g. `wrapped_hl.desktop` instead of editing
|
||||||
the provided one, as many package managers (and `sudo make install`) will **overwrite**
|
the provided one, as many package managers (and `sudo make install`) will **overwrite**
|
||||||
the desktop file on updates.
|
the desktop file on updates. If you manually build Hyprland, consider using `sudo make cleaninstall` to preserve `hyprland.deskop`
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
## Immediate
|
## Immediate
|
||||||
|
@ -63,7 +65,7 @@ want the warning to go away, remove the `autogenerated=1` line.
|
||||||
|
|
||||||
## Monitors
|
## Monitors
|
||||||
|
|
||||||
Use `hyprctl monitors` to list available outputs. `hyprctl` will *not* tell you
|
Use `hyprctl monitors` to list available outputs. `hyprctl` will _not_ tell you
|
||||||
what your monitor is capable of though, so if you want to check your resolution / refresh rate,
|
what your monitor is capable of though, so if you want to check your resolution / refresh rate,
|
||||||
use a tool like `wlr-randr`.
|
use a tool like `wlr-randr`.
|
||||||
|
|
||||||
|
@ -92,24 +94,25 @@ hyprctl keyword monitor DP-3,1920x1080@240,1920x0,1
|
||||||
{{< hint type=important >}} These changes are **not** permanent! If you want to
|
{{< hint type=important >}} These changes are **not** permanent! If you want to
|
||||||
make those changes persist, configure your outputs in the config! {{< /hint >}}
|
make those changes persist, configure your outputs in the config! {{< /hint >}}
|
||||||
|
|
||||||
# Proper configuring
|
## Proper configuring
|
||||||
|
|
||||||
Head onto the
|
Head onto the
|
||||||
[Configuring Hyprland page](../../Configuring/Configuring-Hyprland) to learn all
|
[Configuring Hyprland page](../../Configuring/Configuring-Hyprland) to learn all
|
||||||
about configuring Hyprland to your likings.
|
about configuring Hyprland to your likings.
|
||||||
|
|
||||||
# Apps / X11 replacements
|
## Apps / X11 replacements
|
||||||
|
|
||||||
See the [Useful Utilities page](../../Useful-Utilities) and the
|
See the [Useful Utilities page](../../Useful-Utilities) and the
|
||||||
[Sway wiki page](https://github.com/swaywm/sway/wiki/Useful-add-ons-for-sway)
|
[Sway wiki page](https://github.com/swaywm/sway/wiki/Useful-add-ons-for-sway)
|
||||||
just about that.
|
just about that.
|
||||||
|
|
||||||
# Screenshare / GTK slow launch issues
|
## Screenshare / GTK slow launch issues
|
||||||
|
|
||||||
[FAQ (GTK issue)](../../FAQ/#some-of-my-apps-take-a-really-long-time-to-open)
|
[FAQ (GTK issue)](../../FAQ/#some-of-my-apps-take-a-really-long-time-to-open)
|
||||||
|
|
||||||
[FAQ (screensharing)](../../FAQ/#screenshare--obs-no-worky)
|
[FAQ (screensharing)](../../FAQ/#screenshare--obs-no-worky)
|
||||||
|
|
||||||
# Screen broken on launch
|
## Screen broken on launch
|
||||||
|
|
||||||
This usually happens due to your monitor not being very happy about the default
|
This usually happens due to your monitor not being very happy about the default
|
||||||
settings.
|
settings.
|
||||||
|
|
|
@ -8,7 +8,9 @@ Take a tour of the pages on the left and read ones that you may need.
|
||||||
|
|
||||||
A Wayland compositor is a fully autonomous Display Server, like Xorg itself.
|
A Wayland compositor is a fully autonomous Display Server, like Xorg itself.
|
||||||
It is **not** possible to mix'n'match Wayland compositors like you could on Xorg
|
It is **not** possible to mix'n'match Wayland compositors like you could on Xorg
|
||||||
with window managers and compositors.
|
with window managers and compositors. It is also not entirely possible to use
|
||||||
|
all Xorg applications on Wayland. See [../Useful-Utilities](this page) for a
|
||||||
|
list of recommended Wayland native/compatible programs.
|
||||||
|
|
||||||
Wayland **compositors** should not be confused with Xorg **window managers**.
|
Wayland **compositors** should not be confused with Xorg **window managers**.
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# IPC
|
||||||
|
|
||||||
Hyprland exposes 2 UNIX Sockets, for controlling / getting info about Hyprland
|
Hyprland exposes 2 UNIX Sockets, for controlling / getting info about Hyprland
|
||||||
via code / bash utilities.
|
via code / bash utilities.
|
||||||
|
|
||||||
|
@ -7,7 +9,7 @@ via code / bash utilities.
|
||||||
echo $HYPRLAND_INSTANCE_SIGNATURE
|
echo $HYPRLAND_INSTANCE_SIGNATURE
|
||||||
```
|
```
|
||||||
|
|
||||||
# /tmp/hypr/\[HIS\]/.socket.sock
|
## /tmp/hypr/\[HIS\]/.socket.sock
|
||||||
|
|
||||||
Used for hyprctl-like requests. See the
|
Used for hyprctl-like requests. See the
|
||||||
[Hyprctl page](../Configuring/Using-hyprctl) for
|
[Hyprctl page](../Configuring/Using-hyprctl) for
|
||||||
|
@ -15,7 +17,7 @@ commands.
|
||||||
|
|
||||||
basically, write `command args`.
|
basically, write `command args`.
|
||||||
|
|
||||||
# /tmp/hypr/\[HIS\]/.socket2.sock
|
## /tmp/hypr/\[HIS\]/.socket2.sock
|
||||||
|
|
||||||
Used for events. Hyprland will write to each connected client live events like
|
Used for events. Hyprland will write to each connected client live events like
|
||||||
this:
|
this:
|
||||||
|
@ -24,26 +26,26 @@ this:
|
||||||
|
|
||||||
e.g.: `workspace>>2`
|
e.g.: `workspace>>2`
|
||||||
|
|
||||||
## Events list:
|
### Events list
|
||||||
|
|
||||||
| name | description | data |
|
| name | description | data |
|
||||||
| --- | --- | --- |
|
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
|
||||||
| workspace | emitted on workspace change. Is emitted ONLY when a user requests a workspace change, and is not emitted on mouse movements (see `activemon`) | `WORKSPACENAME` |
|
| workspace | emitted on workspace change. Is emitted ONLY when a user requests a workspace change, and is not emitted on mouse movements (see `activemon`) | `WORKSPACENAME` |
|
||||||
| focusedmon | emitted on the active monitor being changed. | `MONNAME,WORKSPACENAME` |
|
| focusedmon | emitted on the active monitor being changed. | `MONNAME,WORKSPACENAME` |
|
||||||
| activewindow | emitted on the active window being changed. | `WINDOWCLASS,WINDOWTITLE` |
|
| activewindow | emitted on the active window being changed. | `WINDOWCLASS,WINDOWTITLE` |
|
||||||
| fullscreen | emitted when a fullscreen status of a window changes. | `0/1` (exit fullscreen / enter fullscreen) |
|
| fullscreen | emitted when a fullscreen status of a window changes. | `0/1` (exit fullscreen / enter fullscreen) |
|
||||||
| monitorremoved | emitted when a monitor is removed (disconnected) | `MONITORNAME` |
|
| monitorremoved | emitted when a monitor is removed (disconnected) | `MONITORNAME` |
|
||||||
| monitoradded | emitted when a monitor is added (connected) | `MONITORNAME` |
|
| monitoradded | emitted when a monitor is added (connected) | `MONITORNAME` |
|
||||||
| createworkspace | emitted when a workspace is created | `WORKSPACENAME` |
|
| createworkspace | emitted when a workspace is created | `WORKSPACENAME` |
|
||||||
| destroyworkspace | emitted when a workspace is destroyed | `WORKSPACENAME` |
|
| destroyworkspace | emitted when a workspace is destroyed | `WORKSPACENAME` |
|
||||||
| moveworkspace | emitted when a workspace is moved to a different monitor | `WORKSPACENAME,MONNAME` |
|
| moveworkspace | emitted when a workspace is moved to a different monitor | `WORKSPACENAME,MONNAME` |
|
||||||
| activelayout | emitted on a layout change of the active keyboard | `KEYBOARDNAME,LAYOUTNAME` |
|
| activelayout | emitted on a layout change of the active keyboard | `KEYBOARDNAME,LAYOUTNAME` |
|
||||||
| openwindow | emitted when a window is opened | `WINDOWADDRESS`,`WORKSPACENAME`,`WINDOWCLASS`,`WINDOWTITLE` |
|
| openwindow | emitted when a window is opened | `WINDOWADDRESS`,`WORKSPACENAME`,`WINDOWCLASS`,`WINDOWTITLE` |
|
||||||
| closewindow | emitted when a window is closed | `WINDOWADDRESS` |
|
| closewindow | emitted when a window is closed | `WINDOWADDRESS` |
|
||||||
| movewindow | emitted when a window is moved to a workspace | `WINDOWADDRESS`,`WORKSPACENAME` |
|
| movewindow | emitted when a window is moved to a workspace | `WINDOWADDRESS`,`WORKSPACENAME` |
|
||||||
| openlayer | emitted when a layerSurface is mapped | `NAMESPACE` |
|
| openlayer | emitted when a layerSurface is mapped | `NAMESPACE` |
|
||||||
| closelayer | emitted when a layerSurface is unmapped | `NAMESPACE` |
|
| closelayer | emitted when a layerSurface is unmapped | `NAMESPACE` |
|
||||||
| submap | emitted when a keybind submap changes. Empty means default. |`SUBMAPNAME` |
|
| submap | emitted when a keybind submap changes. Empty means default. | `SUBMAPNAME` |
|
||||||
|
|
||||||
{{< hint type=warning >}}
|
{{< hint type=warning >}}
|
||||||
A fullscreen event is not guaranteed to fire on/off once in succession.
|
A fullscreen event is not guaranteed to fire on/off once in succession.
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
|
# Hyprland with Nix
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
{{< toc format=html >}}
|
{{< toc format=html >}}
|
||||||
|
|
||||||
{{< hint type=warning >}}
|
{{< hint type=warning >}}
|
||||||
|
@ -12,6 +15,9 @@ work as intended. Please use the
|
||||||
Make sure to check out the options of the
|
Make sure to check out the options of the
|
||||||
[Nix module](https://github.com/hyprwm/Hyprland/blob/main/nix/module.nix).
|
[Nix module](https://github.com/hyprwm/Hyprland/blob/main/nix/module.nix).
|
||||||
|
|
||||||
|
Do note that the Nixpkg for Hyprland is no actively maintained, and may be outdated.
|
||||||
|
Installation using the Flake is recommended.
|
||||||
|
|
||||||
### With flakes
|
### With flakes
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
|
@ -127,13 +133,13 @@ For a list of available options, check the
|
||||||
## Modules mix'n'match
|
## Modules mix'n'match
|
||||||
|
|
||||||
- If you plan on using the HM module alongside the NixOS module, set the NixOS
|
- If you plan on using the HM module alongside the NixOS module, set the NixOS
|
||||||
`programs.hyprland.package = null;`.
|
`programs.hyprland.package = null;`.
|
||||||
|
|
||||||
- If you don't plan on using the NixOS module, but want to use the HM module, you
|
- If you don't plan on using the NixOS module, but want to use the HM module, you
|
||||||
will have to enable all the options the NixOS module enables.
|
will have to enable all the options the NixOS module enables.
|
||||||
|
|
||||||
- If you don't plan on using any module, manually enable whatever options the
|
- If you don't plan on using any module, manually enable whatever options the
|
||||||
modules set.
|
modules set.
|
||||||
|
|
||||||
## Non-NixOS install
|
## Non-NixOS install
|
||||||
|
|
||||||
|
@ -144,30 +150,36 @@ First, [enable flakes](https://nixos.wiki/wiki/Flakes#Enable_flakes).
|
||||||
Once you have flakes working, install Hyprland through `nix profile`:
|
Once you have flakes working, install Hyprland through `nix profile`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix profile install github:hyprwm/Hyprland
|
nix profile install github:hyprwm/Hyprland
|
||||||
```
|
```
|
||||||
|
|
||||||
Since you're using Hyprland outside of NixOS, it won't be able to find graphics
|
Since you're using Hyprland outside of NixOS, it won't be able to find graphics
|
||||||
drivers. To get around that, you can use [nixGL](https://github.com/guibou/nixGL).
|
drivers. To get around that, you can use [nixGL](https://github.com/guibou/nixGL).
|
||||||
|
|
||||||
First, install it, in the same manner you installed Hyprland:
|
First, install it, in the same manner you installed Hyprland:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix profile install github:guibou/nixGL --impure
|
nix profile install github:guibou/nixGL --impure
|
||||||
```
|
```
|
||||||
|
|
||||||
Impure is needed due to `nixGL`'s reliance on hardware information.
|
Impure is needed due to `nixGL`'s reliance on hardware information.
|
||||||
|
|
||||||
From now on, you can run Hyprland by invoking it with nixGL
|
From now on, you can run Hyprland by invoking it with nixGL
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nixGL Hyprland
|
nixGL Hyprland
|
||||||
```
|
```
|
||||||
|
|
||||||
or by creating a wrapper script that runs the above command inside.
|
or by creating a wrapper script that runs the above command inside.
|
||||||
|
|
||||||
### Upgrading
|
### Upgrading
|
||||||
|
|
||||||
In order to upgrade all your packages, you can run
|
In order to upgrade all your packages, you can run
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ nix profile upgrade '.*'
|
nix profile upgrade '.*'
|
||||||
```
|
```
|
||||||
|
|
||||||
Check the
|
Check the
|
||||||
[nix profile](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-profile.html)
|
[nix profile](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-profile.html)
|
||||||
command documentation for other upgrade options.
|
command documentation for other upgrade options.
|
||||||
|
@ -177,7 +189,7 @@ command documentation for other upgrade options.
|
||||||
XWayland is enabled by default in the Nix package. You can disable it either
|
XWayland is enabled by default in the Nix package. You can disable it either
|
||||||
in the package itself, or through the Home Manager module.
|
in the package itself, or through the Home Manager module.
|
||||||
|
|
||||||
#### Package
|
### Package
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
(inputs.hyprland.packages.${pkgs.default}.default.override {
|
(inputs.hyprland.packages.${pkgs.default}.default.override {
|
||||||
|
@ -221,7 +233,7 @@ The GDK_SCALE variable won't conflict with wayland-native GTK programs.
|
||||||
Usually, there's no reason to disable this functionality, as it won't affect
|
Usually, there's no reason to disable this functionality, as it won't affect
|
||||||
people who don't have HiDPI screens.
|
people who don't have HiDPI screens.
|
||||||
|
|
||||||
If you *do* insist on disabling it though (e.g. for adding your own patches
|
If you _do_ insist on disabling it though (e.g. for adding your own patches
|
||||||
to wlroots), you can do so by either using the `hyprland-no-hidpi` package,
|
to wlroots), you can do so by either using the `hyprland-no-hidpi` package,
|
||||||
or by passing the `hidpiXWayland = false;` flag, the same way as
|
or by passing the `hidpiXWayland = false;` flag, the same way as
|
||||||
[disabling XWayland](#package)
|
[disabling XWayland](#package)
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Hyprland on NVIDIA GPUs
|
||||||
|
|
||||||
## Foreword
|
## Foreword
|
||||||
|
|
||||||
There is no _official_ support for Nvidia. Unfortunately, their drivers are so
|
There is no _official_ support for Nvidia. Unfortunately, their drivers are so
|
||||||
|
@ -16,7 +18,7 @@ parameters. Follow the information available here:
|
||||||
|
|
||||||
in `/etc/mkinitcpio.conf` add `nvidia nvidia_modeset nvidia_uvm nvidia_drm` to your `MODULES`
|
in `/etc/mkinitcpio.conf` add `nvidia nvidia_modeset nvidia_uvm nvidia_drm` to your `MODULES`
|
||||||
|
|
||||||
run `# mkinitcpio --config /etc/mkinitcpio.conf --generate /boot/initramfs-custom.img`
|
run `# mkinitcpio --config /etc/mkinitcpio.conf --generate /boot/initramfs-custom.img`
|
||||||
|
|
||||||
add a new line to `/etc/modprobe.d/nvidia.conf` (make it if it does not exist) and add the line `options nvidia-drm modeset=1`
|
add a new line to `/etc/modprobe.d/nvidia.conf` (make it if it does not exist) and add the line `options nvidia-drm modeset=1`
|
||||||
|
|
||||||
|
@ -47,8 +49,10 @@ Launch Hyprland with the wrapper.
|
||||||
It _should_ work now.
|
It _should_ work now.
|
||||||
|
|
||||||
### Fixing random flickering, method 1
|
### Fixing random flickering, method 1
|
||||||
|
|
||||||
If you take a look at the wlroots patches in the [nix flake](https://github.com/hyprwm/Hyprland/blob/main/nix/wlroots.nix)
|
If you take a look at the wlroots patches in the [nix flake](https://github.com/hyprwm/Hyprland/blob/main/nix/wlroots.nix)
|
||||||
you will find a one-line patch:
|
you will find a one-line patch:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();"
|
substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();"
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Alternative App Clients
|
||||||
|
|
||||||
Some clients are known for being a massive pain under Wayland. Here are great
|
Some clients are known for being a massive pain under Wayland. Here are great
|
||||||
replacements for them:
|
replacements for them:
|
||||||
|
|
||||||
|
@ -7,3 +9,12 @@ replacements for them:
|
||||||
the latest Electron, with support for Wayland Ozone platform, as well as
|
the latest Electron, with support for Wayland Ozone platform, as well as
|
||||||
PipeWire screensharing. It has tons of great features and tries not to infringe
|
PipeWire screensharing. It has tons of great features and tries not to infringe
|
||||||
on the Discord ToS.
|
on the Discord ToS.
|
||||||
|
|
||||||
|
## Spotify
|
||||||
|
|
||||||
|
It has been reported that Spotify does not follow window rules. This is possibly
|
||||||
|
because the client sets is class _after_ the window has opened, thus making it "immune"
|
||||||
|
to windowrules. An alternative to Spotify's GUI client is
|
||||||
|
[spotify-tui](https://github.com/Rigellute/spotify-tui) which can be launched in a terminal
|
||||||
|
with a custom class. While limited in functionality, it is quite powerful and could be
|
||||||
|
preferred over the GUI client if windowrules are a dealbreaker for you.
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# App Launchers
|
||||||
|
|
||||||
## Wofi
|
## Wofi
|
||||||
|
|
||||||
Wofi is a GTK-based customizable launcher for wayland.
|
Wofi is a GTK-based customizable launcher for wayland.
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
Color pickers are useful for quickly grabbing a color of *something* on your screen.
|
# Color Pickers
|
||||||
|
|
||||||
|
Color pickers are useful for quickly grabbing a color of _something_ on your screen.
|
||||||
|
|
||||||
We recommend our own solution, which, so far, seems to be the only one that doesn't suck.
|
We recommend our own solution, which, so far, seems to be the only one that doesn't suck.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
# Screensharing on Hyprland
|
||||||
|
|
||||||
Screensharing is done through PipeWire on Wayland.
|
Screensharing is done through PipeWire on Wayland.
|
||||||
|
|
||||||
## Prereqs
|
## Prerequsities
|
||||||
|
|
||||||
Make sure you have `pipewire` and `wireplumber` installed, enabled and running
|
Make sure you have `pipewire` and `wireplumber` installed, enabled and running
|
||||||
if you don't have them yet.
|
if you don't have them yet.
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Status Bars
|
||||||
|
|
||||||
Launch your bar with `exec-once=`.
|
Launch your bar with `exec-once=`.
|
||||||
|
|
||||||
## Waybar
|
## Waybar
|
||||||
|
@ -7,6 +9,8 @@ Waybar is a GTK status bar made specifically for wlroots compositors.
|
||||||
To use it, it's recommended to use the AUR package `waybar-hyprland-git`,
|
To use it, it's recommended to use the AUR package `waybar-hyprland-git`,
|
||||||
or compile manually with the `USE_EXPERIMENTAL` flag enabled.
|
or compile manually with the `USE_EXPERIMENTAL` flag enabled.
|
||||||
|
|
||||||
|
### Compiling Manually
|
||||||
|
|
||||||
To compile manually:
|
To compile manually:
|
||||||
|
|
||||||
Clone the source, cd into it, then do:
|
Clone the source, cd into it, then do:
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
|
# Wallpaper Utilties
|
||||||
|
|
||||||
Launch your wallpaper utility with `exec-once=`.
|
Launch your wallpaper utility with `exec-once=`.
|
||||||
|
|
||||||
## hyprpaper
|
## Hyprpaper
|
||||||
|
|
||||||
Straight from our oven, `hyprpaper` is a wallpaper utility from the Hypr
|
Straight from our oven, `hyprpaper` is a wallpaper utility from the Hypr
|
||||||
Development team. See its usage and config by following the README on the
|
Development team. See its usage and config by following the README on the
|
||||||
[GitHub Page](https://github.com/hyprwm/hyprpaper).
|
[GitHub Page](https://github.com/hyprwm/hyprpaper).
|
||||||
|
|
||||||
## swaybg
|
## Swaybg
|
||||||
|
|
||||||
Great utility if all you want is one simple static wallpaper that will never
|
Great utility if all you want is one simple static wallpaper that will never
|
||||||
change, and don't want to make a config file. Get it
|
change, and don't want to make a config file. Get it
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Useful Utilities
|
||||||
|
|
||||||
This category is dedicated to short tutorials on how to get useful utilities for
|
This category is dedicated to short tutorials on how to get useful utilities for
|
||||||
Hyprland working.
|
Hyprland working.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue