mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-11-22 12:45:59 +01:00
Merge pull request #34 from NotAShelf/main
Adressing inconsistencies, mistakes and references
This commit is contained in:
commit
22e5e3c37f
33 changed files with 616 additions and 381 deletions
29
LICENSE
Normal file
29
LICENSE
Normal file
|
@ -0,0 +1,29 @@
|
|||
BSD 3-Clause License
|
||||
|
||||
Copyright (c) 2022, vaxerski
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
10
README.md
10
README.md
|
@ -3,6 +3,12 @@
|
|||
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
|
||||
## 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](https://discord.gg/hQ9XvMUjjr) instead.
|
||||
|
||||
## License
|
||||
|
||||
This repository is licensed under the [BSD 3-Clause License](LICENSE).
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
## Table of contents
|
||||
# Table of contents
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## General
|
||||
# General
|
||||
|
||||
Animations are declared with the `animation` keyword.
|
||||
|
||||
|
@ -11,13 +12,6 @@ or
|
|||
animation=NAME,ONOFF,SPEED,CURVE
|
||||
```
|
||||
|
||||
for example:
|
||||
|
||||
```ini
|
||||
animation=workspaces,1,8,default
|
||||
animation=windows,1,10,myepiccurve,slide
|
||||
```
|
||||
|
||||
`ONOFF` can be either 0 or 1, 0 to disable, 1 to enable.
|
||||
|
||||
`SPEED` is the amount of ds (1ds = 100ms) the animation will take
|
||||
|
@ -27,11 +21,18 @@ animation=windows,1,10,myepiccurve,slide
|
|||
`STYLE` (optional) is the animation style
|
||||
|
||||
The animations are a tree. If an animation is unset, it will inherit its
|
||||
parent's values.
|
||||
parent's values. See [the animation tree](#animation-tree).
|
||||
|
||||
_Animation tree:_
|
||||
## Examples
|
||||
|
||||
```ini
|
||||
animation=workspaces,1,8,default
|
||||
animation=windows,1,10,myepiccurve,slide
|
||||
```
|
||||
|
||||
## Animation tree
|
||||
|
||||
```txt
|
||||
global
|
||||
↳ windows - styles: slide, popin
|
||||
↳ windowsIn - window open
|
||||
|
@ -48,18 +49,7 @@ global
|
|||
↳ specialWorkspace - styles: same as workspaces
|
||||
```
|
||||
|
||||
## Extras
|
||||
|
||||
For animation style `popin` in `windows`, you can specify a minimum percentage
|
||||
to start from. For example:
|
||||
|
||||
```ini
|
||||
animation=windows,1,8,default,popin 80%
|
||||
```
|
||||
|
||||
will make the animation 80% -> 100% of the size.
|
||||
|
||||
## Curves
|
||||
# Curves
|
||||
|
||||
Defining your own Bezier curve can be done with the `bezier` keyword:
|
||||
|
||||
|
@ -69,10 +59,22 @@ bezier=NAME,X0,Y0,X1,Y1
|
|||
|
||||
where `NAME` is the name, and the rest are two points for the Cubic Bezier. A
|
||||
good website to design your bezier can be found
|
||||
[here, on cssportal.com](https://www.cssportal.com/css-cubic-bezier-generator/).
|
||||
[here, on cssportal.com](https://www.cssportal.com/css-cubic-bezier-generator/), but
|
||||
if you want to instead choose from a list of beziers, you can check out [easings.net](https://easings.net).
|
||||
|
||||
Example curve:
|
||||
## Example
|
||||
|
||||
```ini
|
||||
bezier=overshot,0.05,0.9,0.1,1.1
|
||||
```
|
||||
|
||||
# Extras
|
||||
|
||||
For animation style `popin` in `windows`, you can specify a minimum percentage
|
||||
to start from. For example:
|
||||
|
||||
```ini
|
||||
animation=windows,1,8,default,popin 80%
|
||||
```
|
||||
|
||||
will make the animation 80% -> 100% of the size.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Table of Contents
|
||||
|
||||
## Table of contents
|
||||
{{< toc >}}
|
||||
|
||||
## Basic
|
||||
# Basic
|
||||
|
||||
```ini
|
||||
bind=MODS,key,dispatcher,params
|
||||
|
@ -18,14 +18,16 @@ will bind opening firefox to <key>SUPER</key> + <key>SHIFT</key> + <key>Q</key>
|
|||
|
||||
{{< hint type=tip >}}
|
||||
For binding keys without a modkey, leave it empty:
|
||||
|
||||
```ini
|
||||
bind=,Print,exec,grim
|
||||
```
|
||||
|
||||
{{< /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
|
||||
|
||||
|
@ -47,9 +49,10 @@ bind=SUPER,28,exec,amongus
|
|||
Will bind <key>SUPER</key> + <key>T</key>. (<key>T</key> is keycode 28.) - You
|
||||
can also use `xev` or `wev` to find keycodes.
|
||||
|
||||
## Misc
|
||||
# Misc
|
||||
|
||||
## Unbind
|
||||
|
||||
### Unbind
|
||||
You can also unbind with `unbind`, e.g.:
|
||||
|
||||
```ini
|
||||
|
@ -58,7 +61,12 @@ unbind=SUPER,O
|
|||
|
||||
May be useful for dynamic keybindings with `hyprctl`.
|
||||
|
||||
### Mouse buttons
|
||||
```sh
|
||||
hyprctl keyword unbind SUPER,O
|
||||
```
|
||||
|
||||
## Mouse buttons
|
||||
|
||||
You can also bind mouse buttons, by prefacing the mouse keycode with `mouse:`,
|
||||
for example:
|
||||
|
||||
|
@ -68,7 +76,8 @@ bind=SUPER,mouse:272,exec,amongus
|
|||
|
||||
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
|
||||
activating mod) and the `r` flag, e.g.:
|
||||
|
||||
|
@ -76,23 +85,29 @@ activating mod) and the `r` flag, e.g.:
|
|||
bindr=SUPERALT,Alt_L,exec,amongus
|
||||
```
|
||||
|
||||
### Mouse wheel
|
||||
## Mouse wheel
|
||||
|
||||
You can also bind the mouse wheel with `mouse_up` and `mouse_down`:
|
||||
|
||||
```ini
|
||||
bind=SUPER,mouse_down,workspace,e-1
|
||||
```
|
||||
|
||||
(control the reset time with `binds:scroll_event_delay`)
|
||||
|
||||
### Switches
|
||||
## Switches
|
||||
|
||||
Useful for binding e.g. the lid close/open event:
|
||||
```
|
||||
|
||||
```ini
|
||||
bindl=,switch:[switch name],exec,swaylock
|
||||
```
|
||||
|
||||
check out your switches in `hyprctl devices`.
|
||||
|
||||
## Bind flags
|
||||
# Bind flags
|
||||
|
||||
bind supports flags in this format:
|
||||
`bind` supports flags in this format:
|
||||
|
||||
```ini
|
||||
bind[flags]=...
|
||||
|
@ -104,47 +119,64 @@ e.g.:
|
|||
bindrl=MOD,KEY,exec,amongus
|
||||
```
|
||||
|
||||
flags:
|
||||
Flags:
|
||||
|
||||
```ini
|
||||
l -> locked, aka. works also when an input inhibitor is active
|
||||
l -> locked, aka. works also when an an input inhibitor (e.g. a lockscreen) is active
|
||||
r -> release, will trigger on release of a key
|
||||
e -> repeat, will repeat when held.
|
||||
m -> mouse, see below
|
||||
```
|
||||
|
||||
## Mouse Binds
|
||||
Example Usage:
|
||||
|
||||
```ini
|
||||
# Example volume button that allows press and hold
|
||||
binde=, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
|
||||
# Example volume button that will activate even while an input inhibitor is active
|
||||
bindl=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
|
||||
# Start wofi opens wofi on first press, closes it on second
|
||||
bindr=SUPER, SUPER_L, exec, pkill wofi || wofi
|
||||
|
||||
# See Mouse Binds section for bindm usage
|
||||
```
|
||||
|
||||
# Mouse Binds
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
```ini
|
||||
bindm=ALT,mouse:272,movewindow
|
||||
```
|
||||
|
||||
this will create a bind with <key>ALT</key> + <key>LMB</key> to move the window
|
||||
with your mouse.
|
||||
|
||||
*Available mouse binds*:
|
||||
_Available mouse binds_:
|
||||
|
||||
| Name | Description |
|
||||
| -----|------------ |
|
||||
| movewindow | moves the active window |
|
||||
| movewindow | moves the active window |
|
||||
| resizewindow | resizes the active window |
|
||||
|
||||
*Common mouse buttons' codes:*
|
||||
```
|
||||
_Common mouse buttons' codes:_
|
||||
|
||||
```txt
|
||||
LMB -> 272
|
||||
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 >}}
|
||||
Mouse binds, despite their name, behave like normal binds. You are free to use
|
||||
whatever keys / mods you please. When held, the mouse function will be activated.
|
||||
{{< /hint >}}
|
||||
|
||||
## Binding mods
|
||||
# Binding mods
|
||||
|
||||
You can bind a mod alone like this:
|
||||
|
||||
|
@ -152,21 +184,22 @@ You can bind a mod alone like this:
|
|||
bindr=ALT,Alt_L,exec,amongus
|
||||
```
|
||||
|
||||
## Global Keybinds
|
||||
# Global Keybinds
|
||||
|
||||
Yes, you heard this right, Hyprland does support global keybinds for ALL apps,
|
||||
including OBS, Discord, Firefox, etc.
|
||||
|
||||
See the `pass` dispatcher for keybinds.
|
||||
See the [`pass` dispatcher](./Dispatchers/#dispatchers) for keybinds.
|
||||
|
||||
e.g.:
|
||||
Let's take OBS as an example: the "Start/Stop Recording" keybind is set to
|
||||
<key>SUPER</key> + <key>F10</key>, and you want to make it work globally.
|
||||
|
||||
I've set the "Start/Stop Recording" keybind in OBS to <key>SUPER</key> +
|
||||
<key>F10</key>, and I want it to be global.
|
||||
Simply add
|
||||
|
||||
Simple, add
|
||||
```ini
|
||||
bind = SUPER,F10,pass,^(com\.obsproject\.Studio)$
|
||||
```
|
||||
|
||||
to your config and you're done.
|
||||
|
||||
`pass` will pass the PRESS and RELEASE events by itself, no need for a `bindr`.
|
||||
|
@ -184,12 +217,12 @@ keybind", otherwise passing from a different XWayland app may not work.
|
|||
|
||||
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>.
|
||||
Combining this with a submap should yield neat and usable results.
|
||||
{{< /hint >}}
|
||||
|
||||
## Submaps
|
||||
# Submaps
|
||||
|
||||
If you want keybind submaps, for example if you press <key>ALT</key> +
|
||||
<key>R</key>, you can enter a "resize" mode, resize with arrow keys, and leave
|
||||
|
@ -221,7 +254,7 @@ submap=reset
|
|||
this case, `escape`)
|
||||
|
||||
If you get stuck inside a keymap, you can use `hyprctl dispatch submap reset` to
|
||||
go back. If you do not have a terminal open, tough luck buddy. I warned you.
|
||||
go back. If you do not have a terminal open, tough luck buddy. You have been warned.
|
||||
|
||||
You can also set the same keybind to perform multiple actions, such as resize
|
||||
and close the submap, like so:
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
The config is located in `~/.config/hypr/hyprland.conf`.
|
||||
|
||||
I recommend you copy the `examples/hyprland.conf`, but you can also edit the
|
||||
It is recommended to copy the `examples/hyprland.conf`, but you can also edit the
|
||||
autogenerated config.
|
||||
|
||||
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.
|
||||
|
||||
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 >}}
|
||||
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.
|
||||
|
||||
**Make sure to read the "Variables" page as well**. It covers all the
|
||||
|
@ -19,7 +19,7 @@ toggleable / numerical options.
|
|||
|
||||
# Line style
|
||||
|
||||
every config line is a command followed by a value.
|
||||
Every config line is a command followed by a value.
|
||||
|
||||
```ini
|
||||
COMMAND=VALUE
|
||||
|
@ -45,7 +45,7 @@ To configure the "options" of Hyprland, animations, styling, etc. see
|
|||
|
||||
# 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.
|
||||
|
||||
See all of them in [Keywords](../Keywords) and the sidebar.
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
# Table of contents
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
Please keep in mind some layout-specific dispatchers will be listed in the
|
||||
layout pages (See the sidebar).
|
||||
|
||||
## Parameter explanation
|
||||
# Parameter explanation
|
||||
|
||||
| Param type | Description |
|
||||
| ---------- | ----------- |
|
||||
|
@ -16,7 +17,7 @@ layout pages (See the sidebar).
|
|||
| floatdelta | a float value delta, e.g `-0.2` or `+0.2`. |
|
||||
| workspaceopt | see below. |
|
||||
|
||||
# Dispatchers:
|
||||
# List of Dispatchers
|
||||
|
||||
| Dispatcher | Description | Params |
|
||||
| ---------- | ----------- | ------ |
|
||||
|
@ -58,9 +59,10 @@ layout pages (See the sidebar).
|
|||
it is NOT recommended to set DPMS with a keybind directly, as it
|
||||
might cause undefined behavior. Instead, consider something like
|
||||
|
||||
```
|
||||
```ini
|
||||
bind = MOD,KEY,exec,sleep 1 && hyprctl dispatch dpms off
|
||||
```
|
||||
|
||||
{{< /hint >}}
|
||||
|
||||
# Workspaces
|
||||
|
@ -86,19 +88,19 @@ You have seven choices:
|
|||
`movetoworkspace`. Any other dispatcher will result in undocumented behavior.
|
||||
{{< /hint >}}
|
||||
|
||||
## Special Workspace
|
||||
# Special Workspace
|
||||
|
||||
Special workspace is what is called a "scratchpad" in some other places. A
|
||||
workspace that you can toggle on/off on any monitor.
|
||||
|
||||
{{< hint >}}
|
||||
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 >}}
|
||||
|
||||
## Workspace options
|
||||
```
|
||||
# Workspace options
|
||||
|
||||
```txt
|
||||
allfloat -> makes all new windows floating (also floats/unfloats windows on toggle)
|
||||
allpseudo -> makes all new windows pseudo (also pseudos/unpseudos on toggle)
|
||||
```
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ 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
|
||||
top-and-bottom. You can make them permanent by enabling `preserve_split`.
|
||||
|
||||
## Grouped (tabbed) windows
|
||||
# Grouped (tabbed) windows
|
||||
|
||||
Dwindle allows you to make a group with the `togglegroup` bind dispatcher, and
|
||||
cycle through it with `changegroupactive`.
|
||||
|
@ -44,7 +44,7 @@ category name: `dwindle`
|
|||
| 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 |
|
||||
|
||||
## Bind Dispatchers
|
||||
# Bind Dispatchers
|
||||
|
||||
| dispatcher | description | params |
|
||||
|---|---|---|
|
||||
|
|
64
pages/Configuring/Environment-variables.md
Normal file
64
pages/Configuring/Environment-variables.md
Normal file
|
@ -0,0 +1,64 @@
|
|||
As [previously mentioned](../Getting-Started/Quick-start/#wrapping-the-launcher-recommended), it's
|
||||
useful using a wrapper to launch Hyprland. Whether you start Hyprland through TTY or a Display
|
||||
Manager, it is always suggested to use one. As such, you can pass certain environment
|
||||
variables to improve Wayland compatibility, or simply change certain aspects of your desktop.
|
||||
|
||||
Please avoid putting those environment variables in /etc/environment. That will cause all
|
||||
sessions (including Xorg ones) to pick up your wayland-specific environment on traditional
|
||||
Linux distros.
|
||||
|
||||
# XDG Specifications
|
||||
|
||||
- `XDG_CURRENT_DESKTOP=Hyprland`
|
||||
- `XDG_SESSION_TYPE=wayland`
|
||||
- `XDG_SESSION_DESKTOP=Hyprland`
|
||||
|
||||
XDG specific environment variables are often detected through portals and applications that may
|
||||
set those for you, however it is a good idea to provide them in your wrapper script as a fail-safe.
|
||||
|
||||
# QT Variables
|
||||
|
||||
- `QT_AUTO_SCREEN_SCALE_FACTOR=1` - [(From the QT documentation)](https://doc.qt.io/qt-5/highdpi.html)
|
||||
enables automatic scaling, based on the monitor's pixel density
|
||||
- `QT_QPA_PLATFORM="wayland;xcb"` - Tell QT applications to use the Wayland backend, and fall back to x11 if Wayland is unavailable
|
||||
- `QT_WAYLAND_DISABLE_WINDOWDECORATION=1` - Disables window decorations on QT applications
|
||||
- `QT_QPA_PLATFORMTHEME=qt5ct` - Tells QT based applications to pick your theme from qt5ct, use with Kvantum.
|
||||
|
||||
# NVIDIA Specific
|
||||
|
||||
To force GBM as a backend, set the following environment variables:
|
||||
|
||||
- `GBM_BACKEND=nvidia-drm`
|
||||
- `__GLX_VENDOR_LIBRARY_NAME=nvidia`
|
||||
|
||||
> See [Archwiki Wayland Page](https://wiki.archlinux.org/title/Wayland#Requirements) for more details on those variables.
|
||||
|
||||
- `LIBVA_DRIVER_NAME=nvidia` - Hardware acceleration on NVIDIA GPUs
|
||||
|
||||
> See [Archwiki Hardware Acecleration Page](https://wiki.archlinux.org/title/Hardware_video_acceleration)
|
||||
> for details and necessary values before setting this variable.
|
||||
|
||||
- `__GLX_GSYNC_ALLOWED` - Controls if G-Sync capable monitors should use Variable Refresh Rate (VRR)
|
||||
|
||||
> See [Nvidia Documentation](https://download.nvidia.com/XFree86/Linux-32bit-ARM/375.26/README/openglenvvariables.html) for details.
|
||||
|
||||
- `__GL_VRR_ALLOWED` - Controls if Adaptive Sync should be used. Recommended to set as "0" to avoid having problems on some games.
|
||||
|
||||
- `WLR_DRM_NO_ATOMIC=1` - use legacy DRM interface instead of atomic mode setting. Might fix flickering issues.
|
||||
|
||||
# Toolkit Backend Variables
|
||||
|
||||
- `SDL_VIDEODRIVER=wayland` - Run SDL2 applications on Wayland. Remove or set to x11 if games that provide older versions of SDL cause
|
||||
compatibility issues
|
||||
- `_JAVA_AWT_WM_NONEREPARENTING=1` - Fix possibly broken Java applications. Set to 1 until Wakefield is available.
|
||||
- `CLUTTER_BACKEND="wayland"` - Clutter package already has wayland enabled, this variable will force Clutter applications
|
||||
to try and use the Wayland backend
|
||||
|
||||
- `GDK_BACKEND` - Force backend for wayland-enabled GTK3 and GTK4 backends. Available options are "wayland" or "x11". If GTK XWayland
|
||||
applications cause issues when set to "wayland", try "wayland,x11"
|
||||
|
||||
# Theming Related Variables
|
||||
|
||||
- `GTK_THEME` - Set a GTK theme manually, for those who want to avoid appearance tools lxappearance or nwg-look
|
||||
- `XCURSOR_THEME` - Set your cursor theme. The theme needs to be installed and readable by your user.
|
||||
- `XCURSOR_SIZE` - Set cursor size. See [here](../FAQ/) for why you might want this variable set.
|
|
@ -7,12 +7,12 @@ The second, socket2, sends events for certain changes / actions and can be used
|
|||
to react to different events. See its description
|
||||
[here](../../IPC/).
|
||||
|
||||
## Example script
|
||||
# Example script
|
||||
|
||||
This bash script will change the outer gaps to 20 if the currently focused
|
||||
monitor is DP-1, and 30 otherwise.
|
||||
|
||||
```bash
|
||||
```sh
|
||||
#!/bin/sh
|
||||
|
||||
function handle {
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
This page documents all of the more advanced config options.
|
||||
Keywords are not variables, but "commands" for more advanced configuring. On this
|
||||
page, you will be presented with some that do not deserve their own page.
|
||||
|
||||
See the sidebar for more keywords to control binds, animations, monitors, et cetera.
|
||||
|
||||
{{< hint type=important >}}
|
||||
|
||||
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
|
||||
otherwise in a specific section*:
|
||||
leave one of them empty, you cannot reduce the number of commas, _unless told
|
||||
otherwise in a specific section_:
|
||||
|
||||
```ini
|
||||
three_param_keyword = A, B, C # OK
|
||||
|
@ -19,6 +22,7 @@ three_param_keyword = A, B, # OK
|
|||
{{< /hint >}}
|
||||
|
||||
# Table of contents
|
||||
|
||||
{{< toc format=html >}}
|
||||
|
||||
# Executing
|
||||
|
@ -26,21 +30,10 @@ three_param_keyword = A, B, # OK
|
|||
you can execute a shell script on startup of the compositor or on each time it's
|
||||
reloaded.
|
||||
|
||||
{{< hint type=info >}}
|
||||
|
||||
**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
|
||||
unable to die if killed, use `SIGKILL` (e.g. `killall name -9`) or launch from a
|
||||
script (`exec-once=~/myscript.sh` and do `myapp &` in the script)
|
||||
|
||||
{{< /hint >}}
|
||||
|
||||
`exec-once=command` will execute only on launch
|
||||
|
||||
`exec=command` will execute on each reload
|
||||
|
||||
|
||||
# Defining variables
|
||||
|
||||
You can define your own custom variables like this:
|
||||
|
@ -103,7 +96,7 @@ device:name {
|
|||
}
|
||||
```
|
||||
|
||||
the `name` can be easily obtained by doing `hyprctl devices`.
|
||||
The `name` can be easily obtained by doing `hyprctl devices`.
|
||||
|
||||
Inside of it, put your config options. All options from the `input` category
|
||||
(and all subcategories, e.g. `input:touchpad`) can be put inside, **EXCEPT**:
|
||||
|
@ -111,6 +104,7 @@ Inside of it, put your config options. All options from the `input` category
|
|||
force_no_accel, follow_mouse, float_switch_override_focus
|
||||
|
||||
Properties that change names:
|
||||
|
||||
```plain
|
||||
touchdevice:transform -> touch_transform
|
||||
touchdevice:output -> touch_output
|
||||
|
@ -126,14 +120,16 @@ 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 >}}
|
||||
With hyprctl, the category's spaces get turned into `-`, and everything is
|
||||
lowercase. So, for `hyprctl` calls, do for example:
|
||||
|
||||
```sh
|
||||
hyprctl keyword device:royuan-akko-multi-modes-keyboard-b:kb_layout us
|
||||
```
|
||||
|
||||
{{< /hint >}}
|
||||
|
||||
# Wallpapers
|
||||
|
@ -142,8 +138,9 @@ 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.
|
||||
|
||||
To set a wallpaper, use a wallpaper utility like
|
||||
[hyprpaper](https://github.com/hyprwm/hyprpaper) or
|
||||
[swaybg](https://github.com/swaywm/swaybg).
|
||||
[hyprpaper](https://github.com/hyprwm/hyprpaper) or [swaybg](https://github.com/swaywm/swaybg).
|
||||
|
||||
More can be found in [Useful Utilities](../Useful-Utilities).
|
||||
|
||||
# Blurring layerSurfaces
|
||||
|
||||
|
@ -159,7 +156,7 @@ blurls=NAMESPACE
|
|||
where `NAMESPACE` is the namespace of the layerSurface. (You can get it from
|
||||
`hyprctl layers`)
|
||||
|
||||
to remove a namespace from being blurred (useful in dynamic situations) use:
|
||||
To remove a namespace from being blurred (useful in dynamic situations) use:
|
||||
|
||||
```ini
|
||||
blurls=remove,NAMESPACE
|
||||
|
|
|
@ -8,13 +8,13 @@ their size.
|
|||
|
||||
![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)
|
||||
|
||||
# Config
|
||||
|
||||
*category name `master`*
|
||||
_category name `master`_
|
||||
|
||||
| name | description | type | default |
|
||||
|---|---|---|---|---|
|
||||
|
@ -23,7 +23,7 @@ You can, however, resize the master window.
|
|||
| 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 |
|
||||
|
||||
## Dispatchers
|
||||
# Dispatchers
|
||||
|
||||
`layoutmsg` params:
|
||||
|
||||
|
@ -41,4 +41,5 @@ example usage:
|
|||
```ini
|
||||
bind=MOD,KEY,layoutmsg,cyclenext
|
||||
```
|
||||
|
||||
{{< /hint >}}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
## Table of contents
|
||||
# Table of contents
|
||||
|
||||
{{< toc format=html >}}
|
||||
|
||||
## General
|
||||
# General
|
||||
|
||||
The general config of a monitor looks like this
|
||||
|
||||
```ini
|
||||
monitor=name,resolution,offset,scale
|
||||
```
|
||||
|
@ -74,7 +75,7 @@ To disable a monitor, use
|
|||
monitor=name,disable
|
||||
```
|
||||
|
||||
## Custom reserved area
|
||||
# Custom reserved area
|
||||
|
||||
If your workflow requires custom reserved area, you can add it with
|
||||
|
||||
|
@ -86,7 +87,7 @@ Where `TOP` `BOTTOM` `LEFT` `RIGHT` are integers in pixels of the reserved area
|
|||
to add. This does stack on top of the calculated one, (e.g. bars) but you may
|
||||
only use one of these rules per monitor in the config.
|
||||
|
||||
## Mirrored displays
|
||||
# Mirrored displays
|
||||
|
||||
If you want to mirror a display, add a `,mirror,[NAME]` at the end of the monitor
|
||||
rule, examples:
|
||||
|
@ -101,12 +102,12 @@ second monitor, so if mirroring a 1080p screen onto a 4K one, the resolution
|
|||
will still be 1080p on the 4K display. This also means squishing and stretching
|
||||
will occur on non-matching resolutions.
|
||||
|
||||
## Rotating and the default workspace
|
||||
# Rotating and the default workspace
|
||||
|
||||
{{< hint type=important >}}
|
||||
|
||||
The monitor transform and workspace keywords depend on a monitor rule set
|
||||
specifically for the targeted monitor, and ***MUST*** be after it.
|
||||
specifically for the targeted monitor, and **_MUST_** be after it.
|
||||
|
||||
{{< /hint >}}
|
||||
|
||||
|
@ -142,15 +143,17 @@ flipped + 180 degrees -> 6
|
|||
flipped + 270 degrees -> 7
|
||||
```
|
||||
|
||||
## Binding workspaces to a monitor
|
||||
# Binding workspaces to a monitor
|
||||
|
||||
A workspace can be bound to a monitor, meaning by default it will ALWAYS open
|
||||
on the selected monitor. You can do this with
|
||||
|
||||
```ini
|
||||
wsbind=WORKSPACE,MONITOR
|
||||
```
|
||||
|
||||
for example:
|
||||
|
||||
```ini
|
||||
wsbind=5,DP-1
|
||||
wsbind=name:secret,DP-2
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
## Switchable keyboard layouts
|
||||
# Switchable keyboard layouts
|
||||
|
||||
The easiest way to accomplish this is to set this using XKB settings, for example:
|
||||
|
||||
```
|
||||
input {
|
||||
kb_layout = us,pl
|
||||
|
@ -16,7 +17,7 @@ For example: `us,ua` -> config binds would be e.g. `SUPER, A`, while on `ua,us`
|
|||
|
||||
{{< /hint >}}
|
||||
|
||||
## Disabling keybinds with one master keybind
|
||||
# Disabling keybinds with one master keybind
|
||||
|
||||
If you want to disable all keybinds with another keybind (make a kaybind toggle
|
||||
of sorts) you can just use a submap with only a keybind to exit it.
|
||||
|
@ -28,11 +29,12 @@ bind=MOD,KEY,submap,reset
|
|||
submap=reset
|
||||
```
|
||||
|
||||
## Window Dancing
|
||||
# Window Dancing
|
||||
|
||||
Some XWayland games like Rhythm Doctor and Friday Night Funkin' mods like to move the windows by themselves, but that often doesn't work by default.
|
||||
Some XWayland games like Rhythm Doctor and Friday Night Funkin' mods like to move
|
||||
the windows by themselves, but that often doesn't work by default.
|
||||
|
||||
To configure this, I'll be using Rhythm Doctor as an example.
|
||||
For example, if you want to configure Rhythm Doctor, you'd have to:
|
||||
|
||||
1. Set input rules
|
||||
```ini
|
||||
|
@ -40,7 +42,6 @@ input {
|
|||
# ...
|
||||
follow_mouse=0
|
||||
float_switch_override_focus=0
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -8,11 +8,11 @@ the terminal.
|
|||
If it's not, go to the repo root and `/hyprctl`. Issue a `make all` and then
|
||||
`sudo cp ./hyprctl /usr/bin`.
|
||||
|
||||
# Commands
|
||||
# Using Hyprctl
|
||||
|
||||
{{< 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.
|
||||
It's recommended to use `--batch` for many control calls, and
|
||||
limiting the amount of info calls.
|
||||
|
@ -21,7 +21,7 @@ For live event handling, see the [socket2](../../IPC/).
|
|||
|
||||
{{< /hint >}}
|
||||
|
||||
## Control
|
||||
## Commands
|
||||
|
||||
### Dispatch
|
||||
|
||||
|
@ -31,7 +31,7 @@ An arg has to be present, for dispatchers without parameters it can be anything.
|
|||
|
||||
Examples:
|
||||
|
||||
```
|
||||
```sh
|
||||
hyprctl dispatch exec kitty
|
||||
|
||||
hyprctl dispatch pseudo x
|
||||
|
@ -39,13 +39,15 @@ hyprctl dispatch pseudo x
|
|||
|
||||
Returns: `ok` on success, an error message on fail.
|
||||
|
||||
See [Dispatchers](./Dispatchers) for a list of dispatchers.
|
||||
|
||||
### Keyword
|
||||
|
||||
issue a `keyword` to call a config keyword dynamically.
|
||||
|
||||
Examples:
|
||||
|
||||
```
|
||||
```sh
|
||||
hyprctl keyword bind SUPER,O,pseudo
|
||||
|
||||
hyprctl keyword general:border_size 10
|
||||
|
@ -73,13 +75,13 @@ params: theme and size
|
|||
|
||||
e.g.:
|
||||
|
||||
```
|
||||
```sh
|
||||
hyprctl setcursor Bibata-Modern-Classic 24
|
||||
```
|
||||
|
||||
## Info
|
||||
|
||||
```
|
||||
```sh
|
||||
version - prints the hyprland version, meaning flags, commit and branch of build.
|
||||
monitors - lists all the outputs with their properties
|
||||
workspaces - lists all workspaces with their properties
|
||||
|
@ -91,28 +93,40 @@ splash - prints the current random splash
|
|||
getoption [option] - gets the config option status (values)
|
||||
```
|
||||
|
||||
# Batch
|
||||
For the getoption command, the option name should be written as `section:option`,
|
||||
e.g.:
|
||||
|
||||
```sh
|
||||
hyprctl getoption general:border_size
|
||||
|
||||
# For nested sections:
|
||||
hyprctl getoption input:touchpad:disable_while_typing
|
||||
```
|
||||
|
||||
See [Variables](./Variables) for section and options you can use.
|
||||
|
||||
## Batch
|
||||
|
||||
You can also use `--batch` to specify a batch of commands to execute
|
||||
|
||||
e.g.
|
||||
|
||||
```
|
||||
```sh
|
||||
hyprctl --batch "keyword general:border_size 2 ; keyword general:gaps_out 20"
|
||||
```
|
||||
|
||||
`;` separates the commands
|
||||
|
||||
# Flags
|
||||
## Flags
|
||||
|
||||
You can specify flags for the request like this:
|
||||
|
||||
```
|
||||
```sh
|
||||
hyprctl -j monitors
|
||||
```
|
||||
|
||||
flag list:
|
||||
|
||||
```
|
||||
```txt
|
||||
j -> output in JSON
|
||||
```
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
For basic syntax info, see
|
||||
[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,
|
||||
etc. see the sidebar. For anything else, see [Keywords](../Keywords).
|
||||
|
||||
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
|
||||
|
||||
|
@ -21,7 +20,7 @@ the layout pages and not here. (See the Sidebar)
|
|||
|
||||
{{< hint type=info >}}
|
||||
|
||||
***Colors:***
|
||||
**_Colors:_**
|
||||
|
||||
You have 3 options:
|
||||
|
||||
|
@ -31,8 +30,7 @@ rgb(), e.g. `rgb(b3ff1a)`
|
|||
|
||||
legacy, e.g. `0xeeb3ff1a` -> ARGB order
|
||||
|
||||
|
||||
***Mod list:***
|
||||
**_Mod list:_**
|
||||
|
||||
```ini
|
||||
SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5
|
||||
|
@ -64,6 +62,7 @@ Prefer using `input:sensitivity` over `general:sensitivity` to avoid bugs, espec
|
|||
{{< /hint >}}
|
||||
|
||||
## Decoration
|
||||
|
||||
| name | description | type | default |
|
||||
|---|---|---|---|---|
|
||||
| rounding | rounded corners' radius (in layout px) | int | 0 |
|
||||
|
@ -103,7 +102,7 @@ Using `blur_new_optimizations` with an animated wallpaper may actually increase
|
|||
|
||||
{{< /hint >}}
|
||||
|
||||
## Animations
|
||||
# Animations
|
||||
|
||||
| name | description | type | default |
|
||||
|---|---|---|---|---|
|
||||
|
@ -115,6 +114,8 @@ _[More about Animations](../Animations)._
|
|||
|
||||
{{< /hint >}}
|
||||
|
||||
# Input
|
||||
|
||||
## Input
|
||||
|
||||
| name | description | type | default |
|
||||
|
@ -138,20 +139,21 @@ _[More about Animations](../Animations)._
|
|||
| scroll_method | set the libinput scroll method. Can be one of `2fg` (2 fingers), `edge`, `on_button_down`, `no_scroll`. | str | \[EMPTY\]
|
||||
|
||||
{{< hint type=info >}}
|
||||
### Follow Mouse
|
||||
|
||||
## Follow Mouse
|
||||
|
||||
- 0 - disabled
|
||||
- 1 - full
|
||||
- 2 - loose. Will focus mouse on other windows on focus but not the keyboard.
|
||||
- 3 - full loose, will not refocus on click, but allow mouse focus to be
|
||||
detached from the keyboard like in 2.
|
||||
{{< /hint >}}
|
||||
detached from the keyboard like in 2.
|
||||
{{< /hint >}}
|
||||
|
||||
{{< hint type=info >}}
|
||||
For switchable keyboard configs, take a look at [the uncommon tips & tricks page entry](../Uncommon-tips--tricks/#switchable-keyboard-layouts).
|
||||
{{< /hint >}}
|
||||
|
||||
### Touchpad
|
||||
## Touchpad
|
||||
|
||||
_Subcategory `input:touchpad:`_
|
||||
|
||||
|
@ -167,7 +169,8 @@ _Subcategory `input:touchpad:`_
|
|||
|
||||
{{< hint type=important >}}
|
||||
A subcategory is a nested category:
|
||||
```
|
||||
|
||||
```ini
|
||||
input {
|
||||
# ...
|
||||
# ...
|
||||
|
@ -182,7 +185,7 @@ input {
|
|||
Doing `input:touchpad {` is **invalid**!
|
||||
{{< /hint >}}
|
||||
|
||||
### Touchdevice
|
||||
## Touchdevice
|
||||
|
||||
_Subcategory `input:touchdevice:`_
|
||||
|
||||
|
@ -191,11 +194,11 @@ _Subcategory `input:touchdevice:`_
|
|||
| transform | transform the input from touchdevices. The possible transformations are the same as [those of the monitors](../Monitors/#rotating-and-the-default-workspace) | int | 0 |
|
||||
| output | the output to bind touch devices. Empty means unset and will use the current / autodetected. | string | \[EMPTY\] |
|
||||
|
||||
### Per-device input config
|
||||
## Per-device input config
|
||||
|
||||
Described [here](../Keywords#per-device-input-configs).
|
||||
|
||||
## Gestures
|
||||
# Gestures
|
||||
|
||||
| name | description | type | default |
|
||||
|---|---|---|---|---|
|
||||
|
@ -207,7 +210,7 @@ Described [here](../Keywords#per-device-input-configs).
|
|||
| workspace_swipe_cancel_ratio | (0.0 - 1.0) how much the swipe has to proceed in order to commence it. (0.7 -> if > 0.7 * distance, switch, if less, revert) | float | 0.5 |
|
||||
| workspace_swipe_create_new | whether a swipe right on the last workspace should create a new one. | bool | true |
|
||||
|
||||
## Misc
|
||||
# Misc
|
||||
|
||||
| name | description | type | default |
|
||||
|---|---|---|---|---|
|
||||
|
@ -224,7 +227,7 @@ Described [here](../Keywords#per-device-input-configs).
|
|||
| swallow_regex | The *class* regex to be used for windows that should be swallowed (usually, a terminal) | str | \[EMPTY\] |
|
||||
| focus_on_activate | Whether Hyprland should focus an app that requests to be focused (an `activate` request) | bool | true |
|
||||
|
||||
## Binds
|
||||
# Binds
|
||||
|
||||
| name | description | type | default |
|
||||
|---|---|---|---|---|
|
||||
|
@ -233,7 +236,7 @@ Described [here](../Keywords#per-device-input-configs).
|
|||
| workspace_back_and_forth | If enabled, an attempt to switch to the currently focused workspace will instead switch to the previous workspace. Akin to i3's *auto_back_and_forth*. | bool | false |
|
||||
| allow_workspace_cycles | If enabled, workspaces don't forget their previous workspace, so cycles can be created by switching to the first workspace in a sequence, then endlessly going to the previous workspace. | bool | false |
|
||||
|
||||
## Debug
|
||||
# Debug
|
||||
|
||||
{{< hint type=warning >}}
|
||||
|
||||
|
@ -248,7 +251,7 @@ Only for developers.
|
|||
| disable_logs | self-explanatory | bool | false |
|
||||
| disable_time | disables time logging | bool | true |
|
||||
|
||||
## More
|
||||
# More
|
||||
|
||||
There are more config options described in other pages, which are layout- or
|
||||
circumstance-specific. See the sidebar for more pages.
|
||||
|
|
|
@ -1,43 +1,45 @@
|
|||
## Table of contents
|
||||
# Table of contents
|
||||
|
||||
{{< toc >}}
|
||||
|
||||
## Window Rules V1
|
||||
# Window Rules V1
|
||||
|
||||
You can set window rules for various actions. These are applied on window open!
|
||||
You can set window rules to achieve different behaviours from the active container.
|
||||
|
||||
## Syntax
|
||||
|
||||
```ini
|
||||
windowrule=RULE,WINDOW
|
||||
```
|
||||
|
||||
`RULE` is a rule (and a param if applicable)
|
||||
- `RULE` is a rule (and a param if applicable)
|
||||
- `WINDOW` is a RegEx, either:
|
||||
- plain RegEx (for matching a window class);
|
||||
- `title:` followed by a regex (for matching a window's title)
|
||||
|
||||
`WINDOW` is a RegEx, either:
|
||||
|
||||
- plain regex (for matching a window class)
|
||||
- `title:` followed by a regex (for matching a window's title)
|
||||
|
||||
you can get both by inspecting `hyprctl clients`
|
||||
|
||||
Examples:
|
||||
### Examples
|
||||
|
||||
```ini
|
||||
windowrule=float,^(kitty)$
|
||||
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
|
||||
rule system, window rules v2 were implemented.
|
||||
In order to allow more flexible rules, while retaining compatibility with the above
|
||||
rule system, window rules V2 were implemented.
|
||||
|
||||
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
|
||||
windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||
```
|
||||
|
||||
For now, the supported fields are:
|
||||
|
||||
```ini
|
||||
class - class regex
|
||||
title - title regex
|
||||
|
@ -45,7 +47,14 @@ xwayland - 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 that you _have_ to declare at least one field, but not all.
|
||||
|
||||
{{< hint type=tip >}}
|
||||
|
||||
To get more information about a window's class, title, XWayland status or its size,
|
||||
you can use `hyprctl clients`.
|
||||
|
||||
{{< /hint >}}
|
||||
|
||||
## Rules
|
||||
|
||||
|
@ -75,20 +84,21 @@ Keep in mind you do *not* need to define all of them, but you need to define at
|
|||
| pin | pins the window *note: floating only* |
|
||||
| noanim | disables the animations for the window |
|
||||
|
||||
*Examples*:
|
||||
### Example Rules
|
||||
|
||||
```ini
|
||||
windowrule = move 100 100,^(kitty)$
|
||||
windowrule = animation popin,^(kitty)$
|
||||
windowrule = noblur,^(firefox)$
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
{{< 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
|
||||
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.
|
||||
|
||||
{{< /hint >}}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ compositors.
|
|||
|
||||
# HiDPI XWayland
|
||||
|
||||
Currently, XWayland on HiDPI screens looks pixelated/blurry, due to Xorg's
|
||||
XWayland currently looks pixelated/blurry on HiDPI screens, due to Xorg's
|
||||
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).
|
||||
|
||||
|
@ -17,25 +17,28 @@ and [Pacman patching](https://wiki.archlinux.org/title/Patching_packages).
|
|||
{{< /hint >}}
|
||||
|
||||
1. Have the latest `xwayland` package patched with at least
|
||||
[the HiDPI patch](https://github.com/hyprwm/Hyprland/blob/main/nix/xwayland-hidpi.patch)
|
||||
(based on the MR's implementation, but updated).
|
||||
[the HiDPI patch](https://github.com/hyprwm/Hyprland/blob/main/nix/xwayland-hidpi.patch)
|
||||
(based on the MR's implementation, but updated).
|
||||
|
||||
2. Make sure you have the required Hyprland `wlroots`, patched with
|
||||
[the HiDPI xwayland patch](https://gitlab.freedesktop.org/lilydjwg/wlroots/-/commit/6c5ffcd1fee9e44780a6a8792f74ecfbe24a1ca7)
|
||||
and [this commit](https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/18595000f3a21502fd60bf213122859cc348f9af)
|
||||
**reverted**. This is important, as not reverting it will make opening XWayland
|
||||
programs crash Hyprland.
|
||||
[the HiDPI xwayland patch](https://gitlab.freedesktop.org/lilydjwg/wlroots/-/commit/6c5ffcd1fee9e44780a6a8792f74ecfbe24a1ca7)
|
||||
and [this commit](https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/18595000f3a21502fd60bf213122859cc348f9af)
|
||||
**reverted**. This is important, as not reverting it will make opening XWayland
|
||||
programs crash Hyprland.
|
||||
|
||||
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 >}}
|
||||
The GDK_SCALE variable won't conflict with wayland-native GTK programs.
|
||||
The GDK_SCALE variable won't conflict with wayland-native GTK programs.
|
||||
{{< /hint >}}
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
## PR Requirements
|
||||
# PR Requirements
|
||||
|
||||
- Clean, not hacky code
|
||||
- Described changes and *why* they were there
|
||||
- Described changes and _why_ they were there
|
||||
- Following the style (see below)
|
||||
|
||||
## Code Style
|
||||
|
||||
Hyprland's code style:
|
||||
|
||||
```cpp
|
||||
void myFunction(int arg) {
|
||||
|
||||
|
@ -58,7 +59,9 @@ public:
|
|||
> 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:
|
||||
|
||||
```cpp
|
||||
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
|
||||
[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.
|
||||
|
||||
`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`
|
||||
|
||||
(If any are missing hmu)
|
||||
|
||||
## Recommended, CMake
|
||||
### Recommended, CMake
|
||||
|
||||
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
|
||||
`(gdb) Launch`.
|
||||
|
||||
## Custom, CLI
|
||||
### Custom, CLI
|
||||
|
||||
`make debug`
|
||||
|
||||
|
@ -48,22 +48,22 @@ meaning you'll be unable to build any other wlroots compositor
|
|||
without a wlroots reinstall.
|
||||
{{< /hint >}}
|
||||
|
||||
# Running
|
||||
## Running
|
||||
|
||||
when running Hyprland in Debug mode, the config is
|
||||
`~/.config/hypr/hyprlandd.conf` and the logs can be found at
|
||||
`/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
|
||||
as a driver and using it for a while might give more insight to the more random
|
||||
bugs.
|
||||
|
||||
When Hyprland crashes, use `coredumpctl` and then `coredumpctl info PID` to see
|
||||
the dump.
|
||||
the dump. See the instructions below for more info about `coredumpctl`.
|
||||
|
||||
I also recommend the amazing command
|
||||
You can also use the amazing command
|
||||
|
||||
```sh
|
||||
watch -n 0.1 "cat /tmp/hypr/$(echo HYPRLAND_INSTANCE_SIGNATURE)/hyprland.log | grep -v \"arranged\" | tail -n 40"
|
||||
|
@ -71,7 +71,11 @@ watch -n 0.1 "cat /tmp/hypr/$(echo HYPRLAND_INSTANCE_SIGNATURE)/hyprland.log | g
|
|||
|
||||
for live logs. (replace `hyprland` with `hyprlandd` for debug builds)
|
||||
|
||||
# Nesting Hyprland
|
||||
### How do I get a coredump?
|
||||
|
||||
See [`ISSUE_GUIDELINES.md`](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md).
|
||||
|
||||
## Nesting Hyprland
|
||||
|
||||
Hyprland can run nested in a window. For that, make sure you did the following:
|
||||
|
||||
|
@ -79,8 +83,7 @@ Hyprland can run nested in a window. For that, make sure you did the following:
|
|||
- removed ALL `exec=` and `exec-once=` keywords from your debug config
|
||||
(`hyprlandd.conf`)
|
||||
- set a resolution and are not using `preferred`
|
||||
- made sure no keybinds overlap (I recommend using a different mod for your
|
||||
keybinds altogether)
|
||||
- made sure no keybinds overlap (use a different mod for your keybinds altogether)
|
||||
|
||||
Once you launch, the display will probably be completely garbled. To fix that,
|
||||
in the parent, do a `hyprctl clients` and note the size of the window. Make sure
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## Getting the log
|
||||
# Getting the log
|
||||
|
||||
If you are in a TTY, and the hyprland session that crashed was the last one you
|
||||
launched, the log will be printed with
|
||||
|
@ -15,7 +15,7 @@ if you are in a Hyprland session, and you want the log of the last session, use
|
|||
cat /tmp/hypr/$(ls -t /tmp/hypr/ | head -n 2 | tail -n 1)/hyprland.log
|
||||
```
|
||||
|
||||
## Crashes at launch
|
||||
# Crashes at launch
|
||||
|
||||
Diagnose the issue by what is in the log:
|
||||
|
||||
|
@ -31,14 +31,13 @@ Diagnose the issue by what is in the log:
|
|||
in the first point.
|
||||
- failing on `Hyprland` -> report an issue.
|
||||
|
||||
## Crashes not at launch
|
||||
# Crashes not at launch
|
||||
|
||||
Report an issue on GitHub or on the Discord server.
|
||||
|
||||
## Bugs
|
||||
# Bugs
|
||||
|
||||
First of all, ***READ THE
|
||||
[FAQ PAGE](../FAQ)***
|
||||
First of all, **_READ THE [FAQ PAGE](../FAQ)_**
|
||||
|
||||
If your bug is not listed there, you can ask on the Discord server or open an
|
||||
issue on GitHub.
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
|
||||
# Table of Contents
|
||||
|
||||
{{< 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:
|
||||
|
||||
|
@ -10,121 +11,109 @@ Possible causes:
|
|||
Use something like `qt5ct` (QT) and `lxappearance` (GTK) (\*for GTK you can also
|
||||
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
|
||||
[Installation Page](../../Getting-Started/Installation) and
|
||||
try compiling with LEGACY_RENDERER
|
||||
|
||||
*For more info about bugs and crashes, see this*
|
||||
*[wiki page](../../Crashes-and-Bugs)*
|
||||
_For more info about bugs and crashes, see this_
|
||||
_[wiki page](../../Crashes-and-Bugs)_
|
||||
|
||||
### Me cursor no render?
|
||||
# Me cursor no render?
|
||||
|
||||
Are you on NVIDIA? If so, then you have been a naughty boy and haven't listened
|
||||
to my tips on other pages. Use the `WLR_NO_HARDWARE_CURSORS=1` environment
|
||||
variable.
|
||||
|
||||
### My external monitor is blank / doesn't render / receives no signal (laptop)
|
||||
# My external monitor is blank / doesn't render / receives no signal (laptop)
|
||||
|
||||
For Radeon graphics - unfortunately, it's a bug in wlroots, and I can't
|
||||
do much about it other than wait for the wlroots devs to fix it:
|
||||
For Radeon graphics - unfortunately, it's a bug in wlroots, and not much
|
||||
can be done other than waiting for the wlroots devs to fix it:
|
||||
[https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3451](https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3451)
|
||||
|
||||
For Nvidia graphics - unfortunately, it's a wlroots issue as well, most likely due to Nvidia's
|
||||
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,
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
*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.
|
||||
|
||||
### How do I screenshot?
|
||||
# How do I screenshot?
|
||||
|
||||
Install `grim-git` and `slurp`
|
||||
Install `grim` and `slurp`
|
||||
|
||||
Use a keybind (or execute) `grim -g $(slurp)`, select a region. A screenshot
|
||||
Use a keybind (or execute) `grim -g "$(slurp)"`, select a region. A screenshot
|
||||
will pop into your `~/Pictures/` (You can configure grim and slurp, see their
|
||||
GitHub pages).
|
||||
|
||||
For a more complete utility, try our own
|
||||
For a more complete utility, try our own screenshotting utility:
|
||||
[Grimblast](https://github.com/hyprwm/contrib).
|
||||
|
||||
### Screenshare / OBS no worky!
|
||||
For recording videos, wf-recorder or OBS Studio could be used.
|
||||
|
||||
# Screenshare / OBS no worky
|
||||
|
||||
Check [Screensharing](../Useful-Utilities/Screen-Sharing).
|
||||
|
||||
### How do I change my wallpaper?
|
||||
# How do I change my wallpaper?
|
||||
|
||||
See [Wallpapers](../Useful-Utilities/Wallpapers).
|
||||
|
||||
### My workspace (2, 3, or any other) is like... bugged?
|
||||
|
||||
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.
|
||||
|
||||
### How heavy is this?
|
||||
# How heavy is this?
|
||||
|
||||
Not that much heavier than Xorg. If you want maximum performance, consider
|
||||
turning off the blur and animations.
|
||||
|
||||
### Blur makes my GPU cry :(
|
||||
|
||||
You probably forgot to turn on `decoration:blur_new_optimizations`. Thank me
|
||||
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
|
||||
lower one. A good way to list all modes is to get `wlr-randr` and do a
|
||||
`wlr-randr --dryrun`
|
||||
|
||||
### How do I get a coredump?
|
||||
# How do I update?
|
||||
|
||||
*These instructions are ONLY for systemd. If you use anything else, you should
|
||||
know what you're doing.*
|
||||
Open a terminal where you cloned the repo.
|
||||
```bash
|
||||
git pull
|
||||
sudo make clear
|
||||
sudo make cleaninstall
|
||||
```
|
||||
|
||||
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
|
||||
`/usr/bin/Hyprland` as an executable. Remember the PID of it (the first number
|
||||
after the date in a given line) exit (<key>Ctrl</key>+<key>C</key>) type
|
||||
`coredumpctl info PID` where `PID` is the remembered PID. Send the entire thing
|
||||
as a file.
|
||||
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.
|
||||
|
||||
### How do I update?
|
||||
|
||||
open a terminal where you cloned the repo.
|
||||
`git pull && sudo make clear && sudo make install`
|
||||
|
||||
### Waybar popups render behind the windows??
|
||||
|
||||
You have misconfigured Waybar. Make sure the `layer` in the waybar config is set to `top`, and not `bottom`.
|
||||
|
||||
### How do I screen lock?
|
||||
# How do I screen lock?
|
||||
|
||||
Use a wayland-compatible locking utility using WLR protocols, e.g. `swaylock`.
|
||||
|
||||
### How do I change me mouse cursor?
|
||||
# How do I change me mouse cursor?
|
||||
|
||||
Use a tool like for example `lxappearance` to change the GTK cursor.
|
||||
|
||||
After that, add `exec-once=hyprctl setcursor [THEME] [SIZE]` to your config and
|
||||
restart Hyprland.
|
||||
|
||||
For QT applications, Hyprland exports XCURSOR_SIZE as 24, which is the default.
|
||||
You can overwrite this by exporting XCURSOR_SIZE to a different value in your wrapper.
|
||||
|
||||
Alternatively, change the config files manually according to the
|
||||
[XDG specification (Arch Wiki link)](https://wiki.archlinux.org/title/Cursor_themes#Configuration).
|
||||
|
||||
|
@ -136,24 +125,21 @@ all good!
|
|||
|
||||
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)
|
||||
|
||||
### My \[program name\] is freezing!
|
||||
# My \[program name\] is freezing
|
||||
|
||||
Make sure you have a notification daemon running, for example `dunst`. Autostart
|
||||
it with the `exec-once` keyword.
|
||||
|
||||
### I want to use Waybar, but the workspaces don't work!
|
||||
# Waybar workspaces no worky???
|
||||
|
||||
Check [Status bars](../Useful-Utilities/Status-Bars).
|
||||
Waybar has a set of caveats or settings that you need to be aware of. See
|
||||
[Status bars](../Useful-Utilities/Status-Bars) for solutions.
|
||||
|
||||
### Waybar doesn't show the active workspace!
|
||||
|
||||
Use the style for `#workspaces button.active`
|
||||
|
||||
### How do I autostart my favorite apps?
|
||||
# How do I autostart my favorite apps?
|
||||
|
||||
Using the window rules to assign apps to workspace you can setup a session start
|
||||
script to open a bunch of applications on various workspaces. The following
|
||||
|
@ -181,7 +167,7 @@ exec-once=cleanup_after_start.sh
|
|||
|
||||
where `cleanup_after_start.sh` script contains:
|
||||
|
||||
```sh
|
||||
```bash
|
||||
sleep 10
|
||||
hyprctl keyword windowrule "workspace unset,kitty"
|
||||
hyprctl keyword windowrule "workspace unset,Subl"
|
||||
|
@ -191,7 +177,7 @@ hyprctl keyword windowrule "workspace unset,firefox"
|
|||
|
||||
in `sleep 10`, the 10 seconds is of course only a suggestion.
|
||||
|
||||
### How do I move my favorite workspaces to a new monitor when I plug it in?
|
||||
# How do I move my favorite workspaces to a new monitor when I plug it in?
|
||||
|
||||
if you want workspaces to automatically go to a monitor upon connection, use the
|
||||
following:
|
||||
|
@ -204,7 +190,7 @@ exec-once=handle_monitor_connect.sh
|
|||
|
||||
where `handle_monitor_connect.sh` is: (example)
|
||||
|
||||
```sh
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
function handle {
|
||||
|
@ -223,29 +209,32 @@ if you want workspaces 1 2 4 5 to go to monitor 1 when connecting it.
|
|||
|
||||
Please note this requires `socat` to be installed.
|
||||
|
||||
### My tablet no worky??
|
||||
# My tablet no worky??
|
||||
|
||||
Use [Open Tablet Driver](https://github.com/OpenTabletDriver/OpenTabletDriver)
|
||||
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
|
||||
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
||||
```
|
||||
|
||||
and
|
||||
|
||||
```ini
|
||||
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.
|
||||
|
||||
In such cases, a script like this:
|
||||
```sh
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
sleep 4
|
||||
killall xdg-desktop-portal-wlr
|
||||
|
@ -254,19 +243,15 @@ killall xdg-desktop-portal
|
|||
sleep 4
|
||||
/usr/lib/xdg-desktop-portal &
|
||||
```
|
||||
|
||||
launched with `exec-once` should fix all issues. Adjust the sleep durations to taste.
|
||||
|
||||
### My cursor in QT apps is too big!
|
||||
|
||||
The QT cursor size can be fixed by setting the envvar `XCURSOR_SIZE=24`. You
|
||||
should probably add it to your exported envvars.
|
||||
|
||||
### How do I export envvars for Hyprland?
|
||||
# How do I export envvars for Hyprland?
|
||||
|
||||
As with any Display Server, Xorg included, you should probably make a script to
|
||||
launch it, for example:
|
||||
|
||||
```ini
|
||||
```bash
|
||||
export AMONG_US=1
|
||||
exec Hyprland
|
||||
```
|
||||
|
@ -274,31 +259,31 @@ exec Hyprland
|
|||
and launch that.
|
||||
|
||||
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`.
|
||||
|
||||
### 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.
|
||||
|
||||
Optimization options:
|
||||
**_Useful Optimizations_**:
|
||||
|
||||
*feel free to ignore any that you find causing issues*
|
||||
* `decoration:blur_new_optimizations = true`, to use new optimizations for
|
||||
blurring.
|
||||
|
||||
`decoration:blur_new_optimizations = true`
|
||||
* `decoration:blur = false` and `decoration:drop_shadow = false` to disable
|
||||
fancy but battery hungry effects.
|
||||
|
||||
`decoration:blur = false`
|
||||
* `misc:no_vfr = false`, since it'll lower the refresh rate when nothing is happening on-screen.
|
||||
|
||||
`decoration:drop_shadow = false`
|
||||
* `misc:disable_autoreload = true` to stop Hyprland from reloading configuration
|
||||
file each time that it changes.
|
||||
|
||||
`misc:no_vfr = false`
|
||||
|
||||
*possibly* `misc:disable_autoreload = true`
|
||||
|
||||
### How to fix games with window dancing?
|
||||
# How to fix games with window dancing?
|
||||
|
||||
Read [this trick](../Configuring/Uncommon-tips--tricks/#window-dancing).
|
||||
|
|
|
@ -5,14 +5,14 @@ Hyprland. If you want to try Hyprland on Nvidia regardless
|
|||
(many people have reported successes), follow the [Nvidia page](../../Nvidia)
|
||||
after installing Hyprland.
|
||||
|
||||
### Distros
|
||||
## Distros
|
||||
|
||||
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,
|
||||
since Hyprland is extremely bleeding-edge, distros like Pop!\_OS, Ubuntu, etc.
|
||||
might have **major** issues running Hyprland.
|
||||
|
||||
# Installation
|
||||
## Installation
|
||||
|
||||
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.
|
||||
|
@ -24,21 +24,20 @@ consider updating your packages with `yay -Syu --devel`, or your other preferred
|
|||
package manager.
|
||||
{{< /hint >}}
|
||||
|
||||
## Packages
|
||||
### Packages
|
||||
|
||||
**WARNING:** I do not maintain any packages. If they are broken, try building
|
||||
from source first.
|
||||
|
||||
{{< tabs "uniqueid" >}}
|
||||
|
||||
{{< tab "Arch Linux" >}} *If you're on Arch Linux, I* ***heavily*** *recommend
|
||||
you use the AUR.*
|
||||
{{< tab "Arch Linux" >}} _If you're on Arch Linux, I_ **_heavily_** _recommend
|
||||
you use the AUR._
|
||||
|
||||
```plain
|
||||
hyprland-git - compiles from latest 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
|
||||
|
||||
```
|
||||
|
||||
{{< /tab >}}
|
||||
|
@ -56,7 +55,7 @@ opi hyprland
|
|||
Alternatively, you can also follow the instructions under ["Manual (Manual Build)"](#manual-manual-build)
|
||||
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 "Fedora" >}}<https://github.com/hyprwm/Hyprland/discussions/284>{{< /tab >}}
|
||||
{{< tab "Gentoo" >}}
|
||||
|
@ -71,7 +70,7 @@ emerge --ask --verbose hyprland
|
|||
|
||||
{{< /tabs >}}
|
||||
|
||||
## Manual (Releases)
|
||||
### Manual (Releases)
|
||||
|
||||
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
|
||||
libwlroots), you don't need to update anything else.
|
||||
|
||||
## Manual (Manual Build)
|
||||
### Manual (Manual Build)
|
||||
|
||||
*Arch dependencies*:
|
||||
_Arch dependencies_:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
(If any are missing hmu)
|
||||
_(If any are missing, hmu)_
|
||||
|
||||
*openSUSE dependencies*:
|
||||
_openSUSE dependencies_:
|
||||
|
||||
```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)"
|
||||
|
@ -119,13 +118,15 @@ that (`gcc>=12.1.0` or `clang>=15`)
|
|||
```Plain
|
||||
git clone --recursive https://github.com/hyprwm/Hyprland
|
||||
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,
|
||||
promptly overriding the existent .desktop file from previous installations.
|
||||
Do note that `sudo make install` will copy the example .desktop file to
|
||||
`/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
|
||||
|
||||
|
@ -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
|
||||
```
|
||||
|
||||
*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`
|
||||
`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
|
||||
```
|
||||
|
||||
# Launching
|
||||
## Launching
|
||||
|
||||
You can launch Hyprland by either going into a TTY and executing `Hyprland`, or
|
||||
with a login manager.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
After you've installed Hyprland, you can either launch it from a TTY with
|
||||
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
|
||||
supported, I recommend `SDDM`, as it's been working flawlessly with wayland
|
||||
supported, you might want to use `SDDM`, as it's been working flawlessly with wayland
|
||||
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>).
|
||||
Alternatively, manually change it in the config before launching Hyprland.
|
||||
|
||||
|
@ -23,7 +23,7 @@ Although it's 100% possible to use Hyprland in a VM, if it's not launching it's
|
|||
of the times your fault. Please also keep in mind software rendering is _REALLY_ slow.
|
||||
{{</ hint >}}
|
||||
|
||||
## Wrapping the launcher (recommended)
|
||||
# Wrapping the launcher (recommended)
|
||||
|
||||
With Xorg, you get the `.xinitrc`. With Hyprland, you can create your own...
|
||||
kind of.
|
||||
|
@ -45,7 +45,7 @@ exec Hyprland
|
|||
```
|
||||
|
||||
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 it's recommended to have _at least_ the shown two.
|
||||
|
||||
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
|
||||
|
@ -55,26 +55,21 @@ usually not ran through the user account.
|
|||
{{< hint type=important >}}
|
||||
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 desktop file on updates.
|
||||
the desktop file on updates. If you manually build Hyprland, consider using `sudo make cleaninstall` to preserve `hyprland.deskop`
|
||||
{{< /hint >}}
|
||||
|
||||
## Immediate
|
||||
# Immediate
|
||||
|
||||
**OMG MY SCREEN IS BROKEN, FLASHY TEARY!** -> see the bottom of this page
|
||||
|
||||
Once you log in, you'll be greeted with a yellow warning that will give you some
|
||||
basic keybind info of your pregenerated config.
|
||||
basic keybind info of your pre-generated config.
|
||||
|
||||
I recommend you use the config provided in `examples/hyprland.conf` though.
|
||||
To make the warning to go away, remove the `autogenerated=1` line from hyprland.conf
|
||||
|
||||
Paste it into `~/.config/hypr/hyprland.conf`
|
||||
# Monitors
|
||||
|
||||
You can, of course, start from the pregenerated config if you wish to. If you
|
||||
want the warning to go away, remove the `autogenerated=1` line.
|
||||
|
||||
## 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,
|
||||
use a tool like `wlr-randr`.
|
||||
|
||||
|
@ -109,18 +104,19 @@ Head onto the
|
|||
[Configuring Hyprland page](../../Configuring/Configuring-Hyprland) to learn all
|
||||
about configuring Hyprland to your likings.
|
||||
|
||||
# Apps / X11 replacements
|
||||
## Apps / X11 replacements
|
||||
|
||||
See the [Useful Utilities page](../../Useful-Utilities) and the
|
||||
[Sway wiki page](https://github.com/swaywm/sway/wiki/Useful-add-ons-for-sway)
|
||||
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 (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
|
||||
settings.
|
||||
|
|
|
@ -6,9 +6,11 @@ Take a tour of the pages on the left and read ones that you may need.
|
|||
|
||||
## Wayland info (especially useful for Xorg users)
|
||||
|
||||
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
|
||||
with window managers and compositors.
|
||||
with window managers and compositors. It is also not entirely possible, nor recommended,
|
||||
to try and 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**.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
Hyprland exposes 2 UNIX Sockets, for controlling / getting info about Hyprland
|
||||
via code / bash utilities.
|
||||
|
||||
## Hyprland Instance Signature (HIS)
|
||||
# Hyprland Instance Signature (HIS)
|
||||
|
||||
```sh
|
||||
echo $HYPRLAND_INSTANCE_SIGNATURE
|
||||
|
@ -24,7 +24,7 @@ this:
|
|||
|
||||
e.g.: `workspace>>2`
|
||||
|
||||
## Events list:
|
||||
# Events list
|
||||
|
||||
| name | description | data |
|
||||
| --- | --- | --- |
|
||||
|
@ -51,7 +51,7 @@ A window might do for example 3 requests to be fullscreen'd, which would result
|
|||
in 3 fullscreen events.
|
||||
{{< /hint >}}
|
||||
|
||||
## How to use socket2 with bash
|
||||
# How to use socket2 with bash
|
||||
|
||||
example script using socket2 events with bash and `socat`:
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
## Table of contents
|
||||
# Table of contents
|
||||
|
||||
{{< toc format=html >}}
|
||||
|
||||
{{< hint type=warning >}}
|
||||
|
@ -7,12 +8,15 @@ work as intended. Please use the
|
|||
[flake](https://github.com/hyprwm/Hyprland/blob/main/flake.nix).
|
||||
{{< /hint >}}
|
||||
|
||||
## Install and configure Hyprland on NixOS
|
||||
# Install and configure Hyprland on NixOS
|
||||
|
||||
Make sure to check out the options of the
|
||||
[Nix module](https://github.com/hyprwm/Hyprland/blob/main/nix/module.nix).
|
||||
|
||||
### With flakes
|
||||
Do note that the Nixpkgs Hyprland package is not actively maintained, and may be outdated.
|
||||
As such, installation using the Flake is recommended.
|
||||
|
||||
## With flakes
|
||||
|
||||
```nix
|
||||
# flake.nix
|
||||
|
@ -30,7 +34,7 @@ Make sure to check out the options of the
|
|||
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
|
||||
# ...
|
||||
modules = [
|
||||
hyprland.nixosModules.default
|
||||
hyprland.nixosModules.default
|
||||
{ programs.hyprland.enable = true; }
|
||||
# ...
|
||||
];
|
||||
|
@ -40,7 +44,7 @@ Make sure to check out the options of the
|
|||
|
||||
Don't forget to replace `HOSTNAME` with your hostname!
|
||||
|
||||
### Without flakes
|
||||
## Without flakes
|
||||
|
||||
{{< hint >}}
|
||||
If you're using Hyprland through an overlay, set
|
||||
|
@ -58,7 +62,7 @@ in {
|
|||
imports = [
|
||||
hyprland.nixosModules.default
|
||||
];
|
||||
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
package = hyprland.packages.${pkgs.system}.default;
|
||||
|
@ -66,11 +70,11 @@ in {
|
|||
}
|
||||
```
|
||||
|
||||
## Install and configure through Home Manager
|
||||
# Install and configure through Home Manager
|
||||
|
||||
You can use the Home Manager module by adding it to your configuration:
|
||||
|
||||
### With flakes
|
||||
## With flakes
|
||||
|
||||
```nix
|
||||
# flake.nix
|
||||
|
@ -92,7 +96,7 @@ You can use the Home Manager module by adding it to your configuration:
|
|||
homeConfigurations."USER@HOSTNAME"= home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
modules = [
|
||||
hyprland.homeManagerModules.default
|
||||
hyprland.homeManagerModules.default
|
||||
{ wayland.windowManager.hyprland.enable = true; }
|
||||
# ...
|
||||
];
|
||||
|
@ -102,7 +106,7 @@ You can use the Home Manager module by adding it to your configuration:
|
|||
|
||||
Don't forget to replace `USER@HOSTNAME` with your username and hostname!
|
||||
|
||||
### Without flakes
|
||||
## Without flakes
|
||||
|
||||
```nix
|
||||
# home config
|
||||
|
@ -124,60 +128,66 @@ in {
|
|||
For a list of available options, check the
|
||||
[module file](https://github.com/hyprwm/Hyprland/blob/main/nix/hm-module.nix).
|
||||
|
||||
## Modules mix'n'match
|
||||
# Modules mix'n'match
|
||||
|
||||
- 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
|
||||
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
|
||||
modules set.
|
||||
modules set.
|
||||
|
||||
## Non-NixOS install
|
||||
# Non-NixOS install
|
||||
|
||||
### With flakes
|
||||
## With flakes
|
||||
|
||||
First, [enable flakes](https://nixos.wiki/wiki/Flakes#Enable_flakes).
|
||||
|
||||
Once you have flakes working, install Hyprland through `nix profile`:
|
||||
|
||||
```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
|
||||
drivers. To get around that, you can use [nixGL](https://github.com/guibou/nixGL).
|
||||
|
||||
First, install it, in the same manner you installed Hyprland:
|
||||
|
||||
```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.
|
||||
|
||||
From now on, you can run Hyprland by invoking it with nixGL
|
||||
|
||||
```sh
|
||||
$ nixGL Hyprland
|
||||
nixGL Hyprland
|
||||
```
|
||||
|
||||
or by creating a wrapper script that runs the above command inside.
|
||||
|
||||
### Upgrading
|
||||
## Upgrading
|
||||
|
||||
In order to upgrade all your packages, you can run
|
||||
|
||||
```sh
|
||||
$ nix profile upgrade '.*'
|
||||
nix profile upgrade '.*'
|
||||
```
|
||||
|
||||
Check the
|
||||
[nix profile](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-profile.html)
|
||||
command documentation for other upgrade options.
|
||||
|
||||
## XWayland
|
||||
# XWayland
|
||||
|
||||
XWayland is enabled by default in the Nix package. You can disable it either
|
||||
in the package itself, or through the Home Manager module.
|
||||
|
||||
#### Package
|
||||
## Package
|
||||
|
||||
```nix
|
||||
(inputs.hyprland.packages.${pkgs.default}.default.override {
|
||||
|
@ -185,7 +195,7 @@ in the package itself, or through the Home Manager module.
|
|||
})
|
||||
```
|
||||
|
||||
#### HM module
|
||||
### HM module
|
||||
|
||||
```nix
|
||||
wayland.windowManager.hyprland = {
|
||||
|
@ -194,7 +204,7 @@ wayland.windowManager.hyprland = {
|
|||
}
|
||||
```
|
||||
|
||||
### HiDPI
|
||||
## HiDPI
|
||||
|
||||
By default, the Nix package includes a patched wlroots that can render HiDPI
|
||||
XWayland windows.
|
||||
|
@ -221,12 +231,12 @@ 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
|
||||
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,
|
||||
or by passing the `hidpiXWayland = false;` flag, the same way as
|
||||
[disabling XWayland](#package)
|
||||
|
||||
## Cachix
|
||||
# Cachix
|
||||
|
||||
A [Hyprland Cachix](https://app.cachix.org/cache/hyprland) exists to cache the
|
||||
`wlroots` package and speed up builds.
|
||||
|
@ -244,7 +254,7 @@ this cache to download the binary directly, instead of building locally.
|
|||
}
|
||||
```
|
||||
|
||||
## Overrides
|
||||
# Overrides
|
||||
|
||||
You can override the package through `.override` or `.overrideAttrs`. This is
|
||||
easily achievable through NixOS or Home Manager.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
## Foreword
|
||||
# Foreword
|
||||
|
||||
There is no _official_ support for Nvidia. Unfortunately, their drivers are so
|
||||
messy, and their products so random, that it's impossible for us to help if
|
||||
|
@ -16,7 +16,7 @@ parameters. Follow the information available here:
|
|||
|
||||
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`
|
||||
|
||||
|
@ -46,9 +46,11 @@ Launch Hyprland with the wrapper.
|
|||
|
||||
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)
|
||||
you will find a one-line patch:
|
||||
|
||||
```sh
|
||||
substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();"
|
||||
```
|
||||
|
@ -57,7 +59,7 @@ What this means, for non-nix users, is you have to (before building) go to
|
|||
`subprojects/wlroots/render/gles2/renderer.c` and replace all occurrences of `glFlush()`
|
||||
with `glFinish()`, and then compile Hyprland as usual.
|
||||
|
||||
### Fixing random flickering, method 2 (nuclear)
|
||||
## Fixing random flickering, method 2 (nuclear)
|
||||
|
||||
Do note though that this forces performance mode to be active, resulting in
|
||||
increased power-consumption (from 22W idle on a RTX 3070TI, to 74W).
|
||||
|
|
|
@ -11,9 +11,39 @@ on the Discord ToS.
|
|||
- [gtkcord4](https://github.com/diamondburned/gtkcord4) is a Discord client written in GTK4.
|
||||
While it does infringe on Discord's ToS, it's relatively safe and doesn't rely on any webview technologies.
|
||||
|
||||
## Spotify
|
||||
|
||||
Spotify does not follow window rules. This is 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.
|
||||
|
||||
Some users have also reported [installing spotifywm](https://github.com/amurzeau/spotifywm) has resolved
|
||||
the issue. The original repository by [`dasJ`](https://github.com/dasJ/spotifywm) is no longer working because of some changes made in the newer
|
||||
Spotify version, and until the pull request gets merged, [`amurzeau's fork`](https://github.com/amurzeau/spotifywm) does the job.
|
||||
|
||||
After following the installation paragraph on the README, start Spotify with:
|
||||
|
||||
```bash
|
||||
LD_PRELOAD=/path/to/spotifywm.so spotify
|
||||
```
|
||||
|
||||
The path **MUST** be the absolute one. If it's not, the hack will not work.
|
||||
|
||||
Now you can freely manage your Spotify client. Always use `class` to manage the
|
||||
window. For example:
|
||||
|
||||
```ini
|
||||
windowrulev2 = tile, class:^(Spotify)$
|
||||
windowrulev2 = workspace 9, class:^(Spotify)$
|
||||
```
|
||||
|
||||
Pick your poison.
|
||||
|
||||
## Matrix/Element
|
||||
|
||||
- [Fractal](https://wiki.gnome.org/Apps/Fractal) is a Matrix client written in GTK4.
|
||||
[Fractal](https://wiki.gnome.org/Apps/Fractal) is a Matrix client written in GTK4.
|
||||
Much like Discord, Element is known to have a lot of problems as a result of being
|
||||
based on Electron. Fractal currently doesn't support VoIP calling, but all other features
|
||||
are supported, including E2EE and cross-device verification.
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
Color pickers are useful for quickly grabbing a color of *something* on your screen.
|
||||
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.
|
||||
It's preferred using _hyrpwm_'s own solution, which, so far, seems to be the only one that
|
||||
doesn't suck.
|
||||
|
||||
## Hyprpicker
|
||||
|
||||
Dead simple to use. Launch, click, and you're done. [GitHub](https://github.com/hyprwm/hyprpicker)
|
||||
Dead simple to use. Launch, click, and you're done. [GitHub](https://github.com/hyprwm/hyprpicker)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Screensharing is done through PipeWire on Wayland.
|
||||
|
||||
## Prereqs
|
||||
## Prerequsities
|
||||
|
||||
Make sure you have `pipewire` and `wireplumber` installed, enabled and running
|
||||
if you don't have them yet.
|
||||
|
|
|
@ -1,46 +1,70 @@
|
|||
Launch your bar with `exec-once=`.
|
||||
|
||||
## Waybar
|
||||
# Waybar
|
||||
|
||||
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`,
|
||||
or compile manually with the `USE_EXPERIMENTAL` flag enabled.
|
||||
To use it, it's recommended to use the AUR package `waybar-hyprland-git`.
|
||||
|
||||
## Compiling Manually
|
||||
|
||||
To compile manually:
|
||||
|
||||
Clone the source, cd into it, then do:
|
||||
|
||||
```sh
|
||||
```bash
|
||||
sed -i 's/zext_workspace_handle_v1_activate(workspace_handle_);/const std::string command = "hyprctl dispatch workspace " + name_;\n\tsystem(command.c_str());/g' src/modules/wlr/workspace_manager.cpp
|
||||
|
||||
meson --prefix=/usr --buildtype=plain --auto-features=enabled --wrap-mode=nodownload build
|
||||
meson configure -Dexperimental=true build
|
||||
```
|
||||
|
||||
and finally:
|
||||
|
||||
```sh
|
||||
sudo ninja -C build install
|
||||
```
|
||||
|
||||
If you want to use the workspaces module, it's called `wlr/workspaces`.
|
||||
If you want to use the workspaces module, first, copy the configuration files from
|
||||
`/etc/xdg/waybar/` into `~/.config/waybar/`. Then, in `~/.config/waybar/conf/` replace
|
||||
all the references to `sway/workspaces/` with `wlr/workspaces`.
|
||||
|
||||
For more info regarding configuration, see
|
||||
[The Waybar Wiki](https://github.com/Alexays/Waybar/wiki).
|
||||
|
||||
## Eww
|
||||
## Waybar popups render behind the windows
|
||||
|
||||
In `~/.config/waybar/config`, make sure that you have the `layer` configuration
|
||||
set to `top` and not `bottom`.
|
||||
|
||||
## Active workspace doesn't show up
|
||||
|
||||
Replace `#workspaces button.focus` with `#wroskapces button.active` in `~/.config/style.css`.
|
||||
|
||||
## Scrolling through workspaces
|
||||
|
||||
Since there a lot of configuration options from `sway/workspaces` are missing, you
|
||||
should deduce some of them by yourself. In the case of scrolling, it should look like this:
|
||||
|
||||
```json
|
||||
"wlr/workspaces": {
|
||||
"format": "{icon}",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
||||
}
|
||||
```
|
||||
|
||||
## Clicking on a workspace icon does not work!
|
||||
|
||||
On the `wlr/workspaces` module, add `"on-click": "activate"`. That's the purpose of
|
||||
the `sed` command used before building Waybar: the default way to select a workspace by
|
||||
clicking uses the `swaymsg`'s way, and thus it is required to edit
|
||||
this function to make it work with `hyprctl`.
|
||||
|
||||
# Eww
|
||||
|
||||
In order to use [Eww](https://github.com/elkowar/eww), you first have to install
|
||||
it, either using your distro's package manager, by searching `eww-wayland`, or
|
||||
by manually compiling. In the latter case, you can follow the
|
||||
[instructions](https://elkowar.github.io/eww).
|
||||
|
||||
### Configuration
|
||||
## Configuration
|
||||
|
||||
After you've successfully installed Eww, you can move onto configuring it. There
|
||||
are a few examples listed in the [Readme](https://github.com/elkowar/eww). We
|
||||
highly recommend you also read through the
|
||||
are a few examples listed in the [Readme](https://github.com/elkowar/eww). It's also
|
||||
highly recommended to read through the
|
||||
[Configuration options](https://elkowar.github.io/eww/configuration.html).
|
||||
|
||||
{{< hint type=important >}}
|
||||
|
@ -48,3 +72,14 @@ Read
|
|||
[the Wayland section](https://elkowar.github.io/eww/configuration.html#wayland)
|
||||
carefully before asking why your bar doesn't work.
|
||||
{{< /hint >}}
|
||||
|
||||
# Hybrid
|
||||
|
||||
Like Waybar, [Hybrid](https://github.com/vars1ty/HybridBar) is a GTK status bar mainly focused for wlroots compositors.
|
||||
|
||||
You can install it from the AUR by the name `hybrid-bar-git`, do note though that
|
||||
it builds the bar from source, so it may take a few minutes.
|
||||
|
||||
## Configuration
|
||||
|
||||
The configuration is done through JSON, more information is available [here](https://github.com/vars1ty/HybridBar).
|
||||
|
|
|
@ -25,5 +25,5 @@ A neat mpv wrapper to play a video as your wallpaper.
|
|||
## swww
|
||||
|
||||
An efficient animated wallpaper daemon for wayland, controlled at runtime,
|
||||
which means you can change wallpapers without even needing to restart.
|
||||
which means you can change wallpapers without even needing to restart.
|
||||
[GitHub](https://github.com/Horus645/swww)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
This category is dedicated to short tutorials on how to get useful utilities for
|
||||
Hyprland working.
|
||||
|
||||
## List of Pages
|
||||
# List of Pages
|
||||
|
||||
- **[Status Bars](./Status-Bars)**
|
||||
|
||||
|
|
Loading…
Reference in a new issue