Compare commits
1 Commits
7a2d9fa208
...
df9d6743b8
Author | SHA1 | Date |
---|---|---|
TheRealGramdalf | df9d6743b8 |
|
@ -118,7 +118,7 @@ set.
|
||||||
|
|
||||||
## Workspaces
|
## Workspaces
|
||||||
|
|
||||||
You have nine choices:
|
You have eight choices:
|
||||||
|
|
||||||
- ID: e.g. `1`, `2`, or `3`
|
- ID: e.g. `1`, `2`, or `3`
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ You have nine choices:
|
||||||
|
|
||||||
- Name: e.g. `name:Web`, `name:Anime` or `name:Better anime`
|
- Name: e.g. `name:Web`, `name:Anime` or `name:Better anime`
|
||||||
|
|
||||||
- Previous workspace: `previous`, or `previous_per_monitor`
|
- Previous workspace: `previous`
|
||||||
|
|
||||||
- First available empty workspace: `empty`, suffix with `m` to only search on monitor. and/or `n` to make it the *next* available empty workspace. e.g. `emptynm`
|
- First available empty workspace: `empty`, suffix with `m` to only search on monitor. and/or `n` to make it the *next* available empty workspace. e.g. `emptynm`
|
||||||
|
|
||||||
|
@ -180,9 +180,6 @@ bind = SUPER, C, movetoworkspace, special
|
||||||
The `exec` dispatcher supports adding rules. Please note some windows might work
|
The `exec` dispatcher supports adding rules. Please note some windows might work
|
||||||
better, some worse. It records the PID of the spawned process and uses that. For example, if
|
better, some worse. It records the PID of the spawned process and uses that. For example, if
|
||||||
your process forks and then the fork opens a window, this will not work.
|
your process forks and then the fork opens a window, this will not work.
|
||||||
Rules will only be applied once. This means dynamic rules will be overridden as soon as a
|
|
||||||
property of the window changes (e.g. switching focus). To make dynamic rules stick around
|
|
||||||
use `hyprctl setprop` (see [Using hyprctl](../Using-hyprctl)).
|
|
||||||
|
|
||||||
The syntax is:
|
The syntax is:
|
||||||
|
|
||||||
|
@ -193,5 +190,5 @@ bind = mod, key, exec, [rules...] command
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```
|
```
|
||||||
bind = SUPER, E, exec, [workspace 2 silent; float; move 0 0] kitty
|
bind = SUPER, E, exec, [workspace 2 silent;float;noanim] kitty
|
||||||
```
|
```
|
||||||
|
|
|
@ -25,7 +25,7 @@ case, remove it completely.
|
||||||
|
|
||||||
**_Useful Optimizations_**:
|
**_Useful Optimizations_**:
|
||||||
|
|
||||||
- `decoration:blur:enabled = false` and `decoration:drop_shadow = false` to disable
|
- `decoration:blur = false` and `decoration:drop_shadow = false` to disable
|
||||||
fancy but battery hungry effects.
|
fancy but battery hungry effects.
|
||||||
|
|
||||||
- `misc:vfr = true`, since it'll lower the amount of sent frames when nothing is
|
- `misc:vfr = true`, since it'll lower the amount of sent frames when nothing is
|
||||||
|
|
|
@ -198,38 +198,6 @@ Sets a window prop. Can be locked by adding `lock` at the end. If `lock` is not
|
||||||
added, will be unlocked. Locking means a dynamic windowrule _cannot_ override
|
added, will be unlocked. Locking means a dynamic windowrule _cannot_ override
|
||||||
this setting.
|
this setting.
|
||||||
|
|
||||||
Usage:
|
|
||||||
```sh
|
|
||||||
hyprctl setprop <mode:regex> <property> <value> [lock]
|
|
||||||
```
|
|
||||||
|
|
||||||
Regex supports different modes. The supported modes are:
|
|
||||||
```ini
|
|
||||||
class - class
|
|
||||||
title - title
|
|
||||||
initialclass - initialClass
|
|
||||||
initialtitle - initialTitle
|
|
||||||
active - active window
|
|
||||||
address - address prefixed with 0x
|
|
||||||
pid - process ID
|
|
||||||
floating - first floating window on the current workspace
|
|
||||||
tiled - first tiled window on the current workspace
|
|
||||||
```
|
|
||||||
|
|
||||||
If no mode is specified `class` is used by default.
|
|
||||||
|
|
||||||
{{< callout type=info >}}
|
|
||||||
|
|
||||||
To get more information about a window, you can use `hyprctl clients`.
|
|
||||||
|
|
||||||
{{< /callout >}}
|
|
||||||
|
|
||||||
{{< callout type=warning >}}
|
|
||||||
|
|
||||||
Please beware that `hyprctl clients` will display the fields as **initialClass** and **initialTitle** while the regex mode uses `initialclass` and `initialtitle`.
|
|
||||||
|
|
||||||
{{< /callout >}}
|
|
||||||
|
|
||||||
Prop List:
|
Prop List:
|
||||||
| prop | comment |
|
| prop | comment |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
|
@ -260,7 +228,6 @@ Prop List:
|
||||||
| activebordercolor | gradient, -1 means not set |
|
| activebordercolor | gradient, -1 means not set |
|
||||||
| inactivebordercolor | gradient, -1 means not set |
|
| inactivebordercolor | gradient, -1 means not set |
|
||||||
|
|
||||||
For example:
|
|
||||||
```sh
|
```sh
|
||||||
hyprctl setprop address:0x13371337 forcenoanims 1 lock # with locking
|
hyprctl setprop address:0x13371337 forcenoanims 1 lock # with locking
|
||||||
hyprctl setprop address:0x13371337 nomaxsize 0 # without locking
|
hyprctl setprop address:0x13371337 nomaxsize 0 # without locking
|
||||||
|
|
|
@ -6,7 +6,7 @@ title: Master tutorial
|
||||||
If you are coming to Hyprland for the first time, this is the main tutorial to
|
If you are coming to Hyprland for the first time, this is the main tutorial to
|
||||||
read.
|
read.
|
||||||
|
|
||||||
This tutorial will cover literally
|
Due to a lot of people doing stupid stuff, this tutorial will cover literally
|
||||||
everything you need to just get things going. It does link to other pages where
|
everything you need to just get things going. It does link to other pages where
|
||||||
necessary.
|
necessary.
|
||||||
|
|
||||||
|
@ -112,8 +112,7 @@ A lot of apps will use Wayland by default. Chromium (and other browsers based on
|
||||||
it or electron) don't. You need to pass
|
it or electron) don't. You need to pass
|
||||||
`--enable-features=UseOzonePlatform --ozone-platform=wayland` to them or use
|
`--enable-features=UseOzonePlatform --ozone-platform=wayland` to them or use
|
||||||
`.conf` files where possible. Chromium-based browsers also should have a toggle
|
`.conf` files where possible. Chromium-based browsers also should have a toggle
|
||||||
in `chrome://flags`. Search for _"ozone"_ and select Wayland. If you are on NixOS
|
in `chrome://flags`. Search for _"ozone"_ and select Wayland.
|
||||||
you can also set the environment variable `NIXOS_OZONE_WL=1` in your configuration.
|
|
||||||
|
|
||||||
For most electron apps, you should put the above in
|
For most electron apps, you should put the above in
|
||||||
`~/.config/electron-flags.conf`. VSCode is known to not work with that though.
|
`~/.config/electron-flags.conf`. VSCode is known to not work with that though.
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
---
|
|
||||||
title: Contributing and Debugging
|
|
||||||
---
|
|
||||||
|
|
||||||
Everything needed to build and debug Hyprland is included inside the provided
|
|
||||||
`devShell`.
|
|
||||||
|
|
||||||
To use it in the cloned repo, simply run `nix develop`.
|
|
||||||
|
|
||||||
## Build in debug mode
|
|
||||||
|
|
||||||
A debug build is already provided through
|
|
||||||
`hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland-debug`.
|
|
||||||
|
|
||||||
## Bisecting an issue
|
|
||||||
|
|
||||||
Follow the
|
|
||||||
[Bisecting an issue](https://wiki.hyprland.org/Crashes-and-Bugs/#bisecting-an-issue)
|
|
||||||
guide. To build, run `nix build '.?submodules=1'`.
|
|
||||||
|
|
||||||
To view logs, pass the `--print-build-logs` (`-L`) flag.
|
|
||||||
|
|
||||||
To keep a failed build directory, pass the `--keep-failed` flag.
|
|
||||||
|
|
||||||
## Building the Wayland stack with ASan
|
|
||||||
|
|
||||||
Run `nix develop` first, then follow the
|
|
||||||
[Building with ASan](https://wiki.hyprland.org/Crashes-and-Bugs/#building-the-wayland-stack-with-asan)
|
|
||||||
guide.
|
|
||||||
|
|
||||||
## Manual building
|
|
||||||
|
|
||||||
Nix works differently than other build systems, so it has its own abstractions
|
|
||||||
over popular build systems such as Meson, CMake and Ninja.
|
|
||||||
|
|
||||||
In order to manually build Hyprland, you can run the following commands, while
|
|
||||||
in the `nix develop` shell.
|
|
||||||
|
|
||||||
For CMake:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ cmakeConfigurePhase # to run the CMake configure phase
|
|
||||||
$ ninjaBuildPhase # to run the Ninja build phase
|
|
||||||
$ ninjaInstallPhase # to run the Ninja install phase
|
|
||||||
```
|
|
||||||
|
|
||||||
For Meson:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ mesonConfigurePhase # to run the Meson configure phase
|
|
||||||
$ ninjaBuildPhase # to run the Ninja build phase
|
|
||||||
$ mesonInstallPhase # to run the Meson install phase
|
|
||||||
```
|
|
|
@ -7,12 +7,9 @@ For a list of available options, check the
|
||||||
|
|
||||||
{{< callout >}}
|
{{< callout >}}
|
||||||
|
|
||||||
- _**(Required)** NixOS Module_: enables critical components needed to run Hyprland
|
- _(Required) NixOS Module_: enables critical components needed to run Hyprland
|
||||||
properly.
|
properly
|
||||||
- _Without this, you may have issues with XDG Portals, or missing session files in your Display Manager._
|
- _(Optional) Home-manager module_: lets you declaratively configure Hyprland
|
||||||
- _(Optional) Home-manager module_: lets you configure Hyprland declaratively through home-manager.
|
|
||||||
- _This module configures Hyprland and adds it to your user's `$PATH`, but does not make certain system-level changes such as adding a desktop session file for your display manager. This is handled by the NixOS module once you enable it._
|
|
||||||
|
|
||||||
{{< /callout >}}
|
{{< /callout >}}
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
@ -21,6 +18,9 @@ For a list of available options, check the
|
||||||
|
|
||||||
{{< tab "Home Manager" >}}
|
{{< tab "Home Manager" >}}
|
||||||
|
|
||||||
|
Home Manager has options for Hyprland without needing to import the Flake
|
||||||
|
module.
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{
|
{
|
||||||
wayland.windowManager.hyprland.enable = true;
|
wayland.windowManager.hyprland.enable = true;
|
||||||
|
@ -66,9 +66,7 @@ Don't forget to replace `user@hostname` with your username and hostname!
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
hyprland.homeManagerModules.default
|
hyprland.homeManagerModules.default
|
||||||
{
|
{wayland.windowManager.hyprland.enable = true;}
|
||||||
wayland.windowManager.hyprland.enable = true;
|
|
||||||
}
|
|
||||||
# ...
|
# ...
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -109,7 +107,7 @@ in {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
package = hyprland-flake.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
package = hyprland-flake.packages.${pkgs.system}.hyprland;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -121,11 +119,11 @@ in {
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Once the module is enabled, you can use it to declaratively configure Hyprland.
|
Once the module is enabled, you can use it to declaratively configure Hyprland.
|
||||||
Here is an example config:
|
Here is an example config, made to work with either the upstream Home Manager
|
||||||
|
module, or the flake-based Home Manager module.
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
# home.nix
|
# home.nix
|
||||||
|
|
||||||
{
|
{
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
|
@ -159,20 +157,16 @@ Here is an example config:
|
||||||
Hyprland plugins can be added through the `plugins` option:
|
Hyprland plugins can be added through the `plugins` option:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{
|
wayland.windowManager.hyprland.plugins = [
|
||||||
wayland.windowManager.hyprland.plugins = [
|
inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars
|
||||||
inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars
|
|
||||||
"/absolute/path/to/plugin.so"
|
"/absolute/path/to/plugin.so"
|
||||||
];
|
];
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
For examples on how to build Hyprland plugins using Nix, see the
|
For examples on how to build Hyprland plugins using Nix, see the
|
||||||
[Nix/Plugins](../Plugins) page.
|
[official plugins](https://github.com/hyprwm/hyprland-plugins).
|
||||||
|
|
||||||
## FAQ
|
## Fixing problems with themes
|
||||||
|
|
||||||
### Fixing problems with themes
|
|
||||||
|
|
||||||
If your themes for mouse cursors, icons or windows don't load correctly, try
|
If your themes for mouse cursors, icons or windows don't load correctly, try
|
||||||
setting them with `home.pointerCursor` and `gtk.theme`, which enable a bunch of
|
setting them with `home.pointerCursor` and `gtk.theme`, which enable a bunch of
|
||||||
|
@ -181,18 +175,16 @@ compatibility options that should make the themes load in all situations.
|
||||||
Example configuration:
|
Example configuration:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{
|
home.pointerCursor = {
|
||||||
home.pointerCursor = {
|
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
# x11.enable = true;
|
# x11.enable = true;
|
||||||
package = pkgs.bibata-cursors;
|
package = pkgs.bibata-cursors;
|
||||||
name = "Bibata-Modern-Classic";
|
name = "Bibata-Modern-Classic";
|
||||||
size = 16;
|
size = 16;
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
theme = {
|
theme = {
|
||||||
package = pkgs.flat-remix-gtk;
|
package = pkgs.flat-remix-gtk;
|
||||||
name = "Flat-Remix-GTK-Grey-Darkest";
|
name = "Flat-Remix-GTK-Grey-Darkest";
|
||||||
|
@ -207,11 +199,10 @@ Example configuration:
|
||||||
name = "Sans";
|
name = "Sans";
|
||||||
size = 11;
|
size = 11;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Programs don't work in systemd services, but do on the terminal
|
## Programs don't work in systemd services, but do on the terminal
|
||||||
|
|
||||||
This problem is related to systemd not importing the environment by default. It
|
This problem is related to systemd not importing the environment by default. It
|
||||||
will not have knowledge of `PATH`, so it cannot run the commands in the
|
will not have knowledge of `PATH`, so it cannot run the commands in the
|
||||||
|
|
|
@ -3,7 +3,7 @@ title: Hyprland on NixOS
|
||||||
---
|
---
|
||||||
|
|
||||||
The NixOS module enables critical components needed to run Hyprland properly,
|
The NixOS module enables critical components needed to run Hyprland properly,
|
||||||
such as polkit,
|
such as: polkit,
|
||||||
[xdg-desktop-portal-hyprland](https://github.com/hyprwm/xdg-desktop-portal-hyprland),
|
[xdg-desktop-portal-hyprland](https://github.com/hyprwm/xdg-desktop-portal-hyprland),
|
||||||
graphics drivers, fonts, dconf, xwayland, and adding a proper Desktop Entry to
|
graphics drivers, fonts, dconf, xwayland, and adding a proper Desktop Entry to
|
||||||
your Display Manager.
|
your Display Manager.
|
||||||
|
@ -13,11 +13,9 @@ Make sure to check out the options of the
|
||||||
|
|
||||||
{{< callout >}}
|
{{< callout >}}
|
||||||
|
|
||||||
- _**(Required)** NixOS Module_: enables critical components needed to run Hyprland
|
- _(Required) NixOS Module_: enables critical components needed to run Hyprland
|
||||||
properly
|
properly
|
||||||
- _Without this, you may have issues with XDG Portals, or missing session files in your Display Manager._
|
- _(Optional) Home-manager module_: lets you declaratively configure Hyprland
|
||||||
- _(Optional) Home-manager module_: lets you configure Hyprland declaratively through home-manager.
|
|
||||||
- _This module configures Hyprland and adds it to your user's `$PATH`, but does not make certain system-level changes such as adding a desktop session file for your display manager. This is handled by the NixOS module once you enable it._
|
|
||||||
|
|
||||||
{{< /callout >}}
|
{{< /callout >}}
|
||||||
|
|
||||||
|
@ -28,12 +26,12 @@ Make sure to check out the options of the
|
||||||
```nix
|
```nix
|
||||||
# configuration.nix
|
# configuration.nix
|
||||||
|
|
||||||
{
|
{pkgs, ...}: {
|
||||||
programs.hyprland.enable = true;
|
programs.hyprland.enable = true;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
This will use the Hyprland version included in the Nixpkgs release you're using.
|
This will use the Hyprland version that Nixpkgs has.
|
||||||
|
|
||||||
{{< /tab >}}
|
{{< /tab >}}
|
||||||
|
|
||||||
|
@ -71,7 +69,7 @@ this:
|
||||||
{inputs, pkgs, ...}: {
|
{inputs, pkgs, ...}: {
|
||||||
programs.hyprland = {
|
programs.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -79,7 +77,7 @@ this:
|
||||||
Don't forget to change the `HOSTNAME` to your actual hostname!
|
Don't forget to change the `HOSTNAME` to your actual hostname!
|
||||||
|
|
||||||
If you start experiencing lag and FPS drops in games or programs like Blender on
|
If you start experiencing lag and FPS drops in games or programs like Blender on
|
||||||
**stable** NixOS when using the Hyprland flake, it is most likely a `mesa`
|
**stable** NixOS when using the Hyprland flake, it most likely is a `mesa`
|
||||||
version mismatch between your system and Hyprland.
|
version mismatch between your system and Hyprland.
|
||||||
|
|
||||||
You can fix this issue by using `mesa` from Hyprland's `nixpkgs` input:
|
You can fix this issue by using `mesa` from Hyprland's `nixpkgs` input:
|
||||||
|
@ -128,7 +126,7 @@ have to compile Hyprland yourself.
|
||||||
in {
|
in {
|
||||||
programs.hyprland = {
|
programs.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
package = hyprland.packages.${pkgs.system}.hyprland;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -6,8 +6,7 @@ If you use Nix on distros other than NixOS, you can still use Hyprland.
|
||||||
|
|
||||||
The best option would be through [Home Manager](../Hyprland-on-Home-Manager).
|
The best option would be through [Home Manager](../Hyprland-on-Home-Manager).
|
||||||
|
|
||||||
However, if Home Manager is not for you, Hyprland can be installed as a normal
|
However, if Home Manager is not for you, you can use it as a normal package.
|
||||||
package.
|
|
||||||
|
|
||||||
First, [enable flakes](https://nixos.wiki/wiki/Flakes#Enable_flakes). Once you
|
First, [enable flakes](https://nixos.wiki/wiki/Flakes#Enable_flakes). Once you
|
||||||
have flakes working, install Hyprland through `nix profile`:
|
have flakes working, install Hyprland through `nix profile`:
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
title: Options & Overrides
|
title: Options & Overrides
|
||||||
---
|
---
|
||||||
|
|
||||||
You can override the package through the `.override` or `.overrideAttrs`
|
You can override the package through `.override` or `.overrideAttrs`. This is
|
||||||
mechanisms. This is easily achievable on [NixOS](../Hyprland-on-NixOS) or
|
easily achievable on [NixOS](../Hyprland-on-NixOS) or
|
||||||
[Home Manager](../Hyprland-on-Home-Manager).
|
[Home Manager](../Hyprland-on-Home-Manager).
|
||||||
|
|
||||||
## Package options
|
## Package options
|
||||||
|
@ -14,7 +14,7 @@ be changed by setting the appropriate option to `true`/`false`.
|
||||||
### Package
|
### Package
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
(pkgs.hyprland.override { # or inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
|
(pkgs.hyprland.override { # or inputs.hyprland.packages.${pkgs.system}.hyprland
|
||||||
enableXWayland = true; # whether to enable XWayland
|
enableXWayland = true; # whether to enable XWayland
|
||||||
legacyRenderer = false; # whether to use the legacy renderer (for old GPUs)
|
legacyRenderer = false; # whether to use the legacy renderer (for old GPUs)
|
||||||
withSystemd = true; # whether to build with systemd support
|
withSystemd = true; # whether to build with systemd support
|
||||||
|
@ -24,12 +24,10 @@ be changed by setting the appropriate option to `true`/`false`.
|
||||||
### NixOS & HM modules
|
### NixOS & HM modules
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{
|
programs.hyprland = { # or wayland.windowManager.hyprland
|
||||||
programs.hyprland = { # or wayland.windowManager.hyprland
|
|
||||||
enable = true;
|
enable = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
};
|
};
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Options descriptions
|
## Options descriptions
|
||||||
|
@ -39,6 +37,10 @@ be changed by setting the appropriate option to `true`/`false`.
|
||||||
XWayland is enabled by default in the Nix package. You can disable it either in
|
XWayland is enabled by default in the Nix package. You can disable it either in
|
||||||
the package itself, or through the module options.
|
the package itself, or through the module options.
|
||||||
|
|
||||||
|
### XWayland HiDPI
|
||||||
|
|
||||||
|
See [XWayland](../../Configuring/XWayland).
|
||||||
|
|
||||||
## Using Nix repl
|
## Using Nix repl
|
||||||
|
|
||||||
If you're using Nix (and not NixOS or Home Manager) and you want to override,
|
If you're using Nix (and not NixOS or Home Manager) and you want to override,
|
||||||
|
|
|
@ -1,121 +0,0 @@
|
||||||
---
|
|
||||||
title: Plugins
|
|
||||||
---
|
|
||||||
|
|
||||||
Hyprland plugins are managed differently on Nix than on other distros. The most
|
|
||||||
notable change is that `hyprpm` is unsupported, but we have our own way of
|
|
||||||
building plugins.
|
|
||||||
|
|
||||||
## Using plugins from Nixpkgs
|
|
||||||
|
|
||||||
In Nixpkgs, there are Hyprland plugins packaged for the Hyprland version in
|
|
||||||
Nixpkgs. You can use them like this:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{pkgs, ...}: {
|
|
||||||
wayland.windowManager.hyprland.plugins = [
|
|
||||||
pkgs.hyprlandPlugins.<plugin>
|
|
||||||
];
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
You can find which plugins are included using
|
|
||||||
`nix search nixpkgs#hyprlandPlugins`.
|
|
||||||
|
|
||||||
## hyprland-plugins
|
|
||||||
|
|
||||||
Official plugins made/maintained by vaxry.
|
|
||||||
|
|
||||||
To use these plugins, it is recommended that you are already using the Hyprland
|
|
||||||
flake, and **not** the Nixpkgs version.
|
|
||||||
|
|
||||||
First, add the flake to your flake inputs:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{
|
|
||||||
inputs = {
|
|
||||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
|
||||||
|
|
||||||
hyprland-plugins = {
|
|
||||||
url = "github:hyprwm/hyprland-plugins";
|
|
||||||
inputs.hyprland.follows = "hyprland";
|
|
||||||
};
|
|
||||||
|
|
||||||
# ...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
The `inputs.hyprland.follows` line makes hyprland-plugins use the exact Hyprland
|
|
||||||
revision you have locked. This means there aren't any version mismatches, as
|
|
||||||
long as you update both inputs at once.
|
|
||||||
|
|
||||||
The next step is adding the plugins to Hyprland:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{inputs, pkgs, ...}: {
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
plugins = [
|
|
||||||
inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.<plugin>
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Building plugins with Nix
|
|
||||||
|
|
||||||
The plugins inside Nixpkgs, as well as the ones in `hyprland-plugins`, are built
|
|
||||||
using a general function, `mkHyprlandPlugin`. Any plugin can be made to work
|
|
||||||
with it. The general usage is presented below, exemplified through hy3's
|
|
||||||
derivation:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{pkgs, ...}: {
|
|
||||||
hy3 = pkgs.callPackage ({
|
|
||||||
lib,
|
|
||||||
fetchFromGitHub,
|
|
||||||
cmake,
|
|
||||||
hyprland,
|
|
||||||
hyprlandPlugins,
|
|
||||||
}:
|
|
||||||
hyprlandPlugins.mkHyprlandPlugin pkgs.hyprland {
|
|
||||||
pluginName = "hy3";
|
|
||||||
version = "0.39.1";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "outfoxxed";
|
|
||||||
repo = "hy3";
|
|
||||||
rev = "hl0.39.1";
|
|
||||||
hash = "sha256-PqVld+oFziSt7VZTNBomPyboaMEAIkerPQFwNJL/Wjw=";
|
|
||||||
};
|
|
||||||
|
|
||||||
# any nativeBuildInputs required for the plugin
|
|
||||||
nativeBuildInputs = [cmake];
|
|
||||||
|
|
||||||
# set any buildInputs that are not already included in Hyprland
|
|
||||||
# by default, Hyprland and its dependencies are included
|
|
||||||
buildInputs = [];
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
homepage = "https://github.com/outfoxxed/hy3";
|
|
||||||
description = "Hyprland plugin for an i3 / sway like manual tiling layout";
|
|
||||||
license = lib.licenses.gpl3;
|
|
||||||
platforms = lib.platforms.linux;
|
|
||||||
maintainers = with lib.maintainers; [aacebedo];
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
In a similar manner to `stdenv.mkDerivation`, `mkHyprlandPlugin` takes an
|
|
||||||
attrset with mostly the same options as `mkDerivation`, as it is essentially a
|
|
||||||
wrapper around it.
|
|
||||||
|
|
||||||
The exception is that it also takes a `hyprland` package before the attrset, in
|
|
||||||
case you want to build with a different package than the one in Nixpkgs.
|
|
||||||
|
|
||||||
This is not always the best way to build for a different version, and it is
|
|
||||||
recommended that you use an overlay to apply your desired Hyprland package in
|
|
||||||
Nixpkgs instead.
|
|
|
@ -9,22 +9,27 @@ To install Hyprland on NixOS, we provide a NixOS and a Home Manager module.
|
||||||
|
|
||||||
- _**(Required)** NixOS Module_: enables critical components needed to run Hyprland
|
- _**(Required)** NixOS Module_: enables critical components needed to run Hyprland
|
||||||
properly
|
properly
|
||||||
- _Without this, you may have issues with XDG Portals, or missing session files in your Display Manager._
|
|
||||||
- _(Optional) Home-manager module_: lets you configure Hyprland declaratively through home-manager.
|
- _(Optional) Home-manager module_: lets you configure Hyprland declaratively through home-manager.
|
||||||
- _This module configures Hyprland and adds it to your user's `$PATH`, but does not make certain system-level changes such as adding a desktop session file for your display manager. This is handled by the NixOS module once you enable it._
|
- _This module configures Hyprland and adds it to your users' `$PATH`, but does not make certain system-level changes such as adding a desktop session file for your display manager. This is handled by the NixOS module once you enable it._
|
||||||
|
|
||||||
{{< /callout >}}
|
{{< /callout >}}
|
||||||
|
|
||||||
## NixOS module
|
## NixOS module
|
||||||
|
|
||||||
|
The module is now upstreamed into Nixpkgs, which means all you need in your
|
||||||
|
configuration is:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{
|
{config, pkgs, ...}: {
|
||||||
programs.hyprland.enable = true;
|
programs.hyprland.enable = true;
|
||||||
# Optional, hint electron apps to use wayland:
|
# Optional, hint electron apps to use wayland:
|
||||||
# environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
# environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Note that the command to run hyprland is `Hyprland` (with a capital `H`) and not
|
||||||
|
`hyprland`.
|
||||||
|
|
||||||
For more options, see
|
For more options, see
|
||||||
[module options](https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=hyprland).
|
[module options](https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=hyprland).
|
||||||
|
|
||||||
|
|
|
@ -11,72 +11,88 @@ have had success with the instructions on this page.
|
||||||
You can choose between the proprietary
|
You can choose between the proprietary
|
||||||
[Nvidia drivers](https://wiki.archlinux.org/title/NVIDIA) or the open source
|
[Nvidia drivers](https://wiki.archlinux.org/title/NVIDIA) or the open source
|
||||||
[Nouveau driver](https://wiki.archlinux.org/title/Nouveau). For the
|
[Nouveau driver](https://wiki.archlinux.org/title/Nouveau). For the
|
||||||
proprietary drivers, there are 3 varieties: the current closed source driver
|
proprietary drivers, there are 3 of them: the current closed source driver
|
||||||
named 'nvidia' (or 'nvidia-dkms') which is
|
named 'nvidia' (or 'nvidia-dkms' to use with custom linux kernels) which is
|
||||||
under active development; the legacy closed source drivers 'nvidia-3xxxx' for older cards
|
under active development; the legacy closed source drivers 'nvidia-3xxxx' for older cards
|
||||||
which Nvidia no longer actively supports; and the 'nvidia-open' driver which is
|
which Nvidia no longer actively supports; and the 'nvidia-open' driver which is
|
||||||
currently an alpha stage attempt to open source a part of their closed source
|
currently an alpha stage attempt to open source a part of their closed source
|
||||||
driver for newer cards.
|
driver for newer cards.
|
||||||
|
|
||||||
If the proprietary drivers support your graphics card, it's generally recommended
|
If the proprietary drivers support your graphics card, it's generally recommended
|
||||||
to use them instead, as it has significantly improved performance
|
to use them instead, as it includes significantly improved gaming performance
|
||||||
and power management for newer GPUs.
|
and power management for recent GPUs.
|
||||||
|
|
||||||
However, keep in mind that if the proprietary Nvidia drivers do not work
|
However, keep in mind that if the proprietary Nvidia drivers do not work
|
||||||
properly on your computer, the Nouveau driver might work fine. This will
|
properly on your computer, the Nouveau driver might work fine. This will
|
||||||
likely be the case for
|
most likely be the case for
|
||||||
[older cards](https://wiki.archlinux.org/title/NVIDIA#Unsupported_drivers).
|
[older cards](https://wiki.archlinux.org/title/NVIDIA#Unsupported_drivers).
|
||||||
|
|
||||||
|
## How to get Hyprland to possibly run on Nvidia (Proprietary)
|
||||||
|
|
||||||
|
Install the correct headers package for your current kernel. For the example of
|
||||||
|
the `linux-zen` kernel on Arch Linux, this package would be `linux-zen-headers`.
|
||||||
|
|
||||||
|
Install the required nvidia packages. For most cases, this would be `nvidia-dkms`
|
||||||
|
(or `nvidia-open-dkms` for the open source ones),
|
||||||
|
and `nvidia-utils`. If you'd like to game via Wine or even natively, it would be
|
||||||
|
in your best interest to also install `lib32-nvidia-utils`.
|
||||||
|
|
||||||
{{< callout >}}
|
{{< callout >}}
|
||||||
|
|
||||||
The `nvidia-open` drivers are still not up to feature parity with the proprietary drivers.
|
Even if your GPU is listed as supported by the `nvidia-open-dkms` driver, at this
|
||||||
One issue is with [suspend](https://github.com/NVIDIA/open-gpu-kernel-modules/issues/472) (e.g. closing the lid on your laptop).
|
point in time, it is still not up to feature parity with the current closed source drivers.
|
||||||
|
One issue with the open drivers is that it could cause problems with suspend in
|
||||||
|
general, let that be closing the lid on your laptop or by manually triggering one.
|
||||||
|
Overall, you'd be better off with `nvidia-dkms` right now, but Hyprland should work
|
||||||
|
similarly between the two.
|
||||||
|
|
||||||
{{< /callout >}}
|
{{< /callout >}}
|
||||||
|
|
||||||
# Proprietary drivers setup
|
Take care to also install `egl-wayland` (`libnvidia-egl-wayland1` and
|
||||||
|
`libnvidia-egl-gbm1` on Ubuntu) if you are using the proprietary drivers.
|
||||||
|
It provides the necessary compatibility layer, instead of falling back to
|
||||||
|
zink/Vulkan.
|
||||||
|
|
||||||
You can choose between the `nvidia` or the `nvidia-dkms` package. There are pros and cons
|
Next up, you need to enable modeset for nvidia, this can be done via editing
|
||||||
for each, but it is generally recommended to use the `dkms` package,
|
the kernel paramaters for your bootloader.
|
||||||
as you won't have to rebuild the initramfs [manually](https://wiki.archlinux.org/title/NVIDIA#mkinitcpio) every time the kernel and drivers update, for example.
|
|
||||||
If you're using a kernel that isn't `linux` or `linux-lts`, the `dkms` package is *required*.
|
|
||||||
|
|
||||||
## Installation
|
If you use [systemd-boot](https://wiki.archlinux.org/title/systemd-boot)
|
||||||
|
you can do this adding `nvidia_drm.modeset=1` to the end of
|
||||||
|
`/boot/loader/entries/arch.conf`. If you use
|
||||||
|
[grub](https://wiki.archlinux.org/title/GRUB) you can do this by adding
|
||||||
|
`nvidia_drm.modeset=1` to the end of `GRUB_CMDLINE_LINUX_DEFAULT=` in
|
||||||
|
`/etc/default/grub`, then running `sudo grub-mkconfig -o /boot/grub/grub.cfg`.
|
||||||
|
|
||||||
Install the following packages:
|
For others check out
|
||||||
|
[kernel parameters](https://wiki.archlinux.org/title/Kernel_parameters) and how
|
||||||
|
to add `nvidia_drm.modeset=1` to your specific bootloader.
|
||||||
|
|
||||||
1. `nvidia` or `nvidia-dkms`: The driver itself. Optionally, the open source drivers
|
{{< callout >}}
|
||||||
from NVIDIA can be installed as `nvidia-open` or `nvidia-open-dkms`.
|
|
||||||
2. `nvidia-utils`: The userspace graphics drivers. You need this for running Vulkan
|
|
||||||
applications. If you'd like to use apps like Steam or Wine, install `lib32-nvidia-utils` as well.
|
|
||||||
3. `egl-wayland` (`libnvidia-egl-wayland1` and `libnvidia-egl-gbm1` on Ubuntu): This is required
|
|
||||||
in order to enable compatibility between the EGL API and the Wayland protocol.
|
|
||||||
|
|
||||||
## DRM kernel mode setting
|
There has been a lot of debate on which of `nvidia_drm` or `nvidia-drm`
|
||||||
|
is correct for this kernel parameter. It has been confirmed that either
|
||||||
|
of these will work.
|
||||||
|
|
||||||
Since NVIDIA does not load kernel mode setting by default, enabling it is
|
{{< /callout >}}
|
||||||
required to make Wayland compositors function properly. To enable it, the NVIDIA
|
|
||||||
driver modules need to be added to the initramfs.
|
|
||||||
|
|
||||||
Edit `/etc/mkinitcpio.conf`. In the `MODULES` array, add the following module names:
|
in `/etc/mkinitcpio.conf` add `nvidia nvidia_modeset nvidia_uvm nvidia_drm` to
|
||||||
|
your `MODULES`
|
||||||
|
|
||||||
```ini
|
For example, a clean `MODULES` line would now look like this:
|
||||||
MODULES=(... nvidia nvidia_modeset nvidia_uvm nvidia_drm ...)
|
```sh
|
||||||
|
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, create and edit `/etc/modprobe.d/nvidia.conf`. Add this line to the file:
|
Now, run `sudo mkinitcpio -P`. This will regenerate the initcpios for all kernels
|
||||||
|
currently installed on the system. If you see any errors here about missing
|
||||||
|
nvidia modules, it is highly probable that you forgot to install the correct
|
||||||
|
headers package. Make sure you install the headers package for your kernel and
|
||||||
|
run this command again.
|
||||||
|
|
||||||
```ini
|
More information is available here:
|
||||||
options nvidia_drm modeset=1 fbdev=1
|
[https://wiki.archlinux.org/title/NVIDIA#DRM_kernel_mode_setting](https://wiki.archlinux.org/title/NVIDIA#DRM_kernel_mode_setting)
|
||||||
```
|
|
||||||
|
|
||||||
Lastly, rebuild the initramfs with `sudo mkinitcpio -P`, and reboot.
|
Export these variables in your hyprland config:
|
||||||
|
|
||||||
More information is available [here](https://wiki.archlinux.org/title/NVIDIA#DRM_kernel_mode_setting).
|
|
||||||
|
|
||||||
## Environment variables
|
|
||||||
|
|
||||||
Add these variables to your Hyprland config:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
env = LIBVA_DRIVER_NAME,nvidia
|
env = LIBVA_DRIVER_NAME,nvidia
|
||||||
|
@ -96,11 +112,8 @@ Do not set it in your configs. Use `cursor:no_hardware_cursors` instead.
|
||||||
|
|
||||||
{{< /callout >}}
|
{{< /callout >}}
|
||||||
|
|
||||||
## Finishing up
|
Lastly, you also need to install a few packages to get some apps
|
||||||
|
to function natively with Wayland. Have a look at [the Master Tutorial](https://wiki.hyprland.org/Getting-Started/Master-Tutorial/#force-apps-to-use-wayland).
|
||||||
Install a few packages to get some apps to function natively with Wayland for the
|
|
||||||
best compatibility and performance.
|
|
||||||
See the [the Master Tutorial](https://wiki.hyprland.org/Getting-Started/Master-Tutorial/#force-apps-to-use-wayland).
|
|
||||||
|
|
||||||
Reboot your computer.
|
Reboot your computer.
|
||||||
|
|
||||||
|
@ -110,27 +123,35 @@ It _should_ work now.
|
||||||
|
|
||||||
## VA-API hardware video acceleration
|
## VA-API hardware video acceleration
|
||||||
|
|
||||||
Hardware video acceleration on Nvidia and Wayland is possible with the
|
We can achieve VA-API acceleration on Nvidia and Wayland with the help of the
|
||||||
[nvidia-vaapi-driver](https://github.com/elFarto/nvidia-vaapi-driver). This may
|
[nvidia-vaapi-driver](https://github.com/elFarto/nvidia-vaapi-driver). This may
|
||||||
solve specific issues in Electron apps.
|
solve certain issues in Electron apps, and it will also allow for GPU decoding
|
||||||
|
for videos on the web, with benefits including higher performance video playback
|
||||||
|
and also higher power efficiency during video playback.
|
||||||
|
|
||||||
The install instructions are available in the README, however, a quick guide will
|
Its install instructions are available in the README, however, a quick guide will
|
||||||
be given here:
|
be given here:
|
||||||
|
|
||||||
1. Install the package. On Arch, this is `libva-nvidia-driver` in the official
|
- Install the package. On Arch, this is `libva-nvidia-driver` in the official
|
||||||
repos.
|
repos.
|
||||||
|
|
||||||
2. Add this variable to your hyprland config:
|
- export this variable in your hyprland config:
|
||||||
```sh
|
```sh
|
||||||
env = NVD_BACKEND,direct
|
env = NVD_BACKEND,direct
|
||||||
```
|
```
|
||||||
|
see [here](https://github.com/elFarto/nvidia-vaapi-driver?tab=readme-ov-file#upstream-regressions)
|
||||||
See [here](https://github.com/elFarto/nvidia-vaapi-driver?tab=readme-ov-file#upstream-regressions)
|
|
||||||
for more information on this environment variable.
|
for more information on this environment variable.
|
||||||
|
|
||||||
You can check the README to get it working for Firefox.
|
- Enable the services `nvidia-suspend.service`, `nvidia-hibernate.service` and
|
||||||
|
`nvidia-resume.service`
|
||||||
|
|
||||||
## Other issues
|
- Add `nvidia.NVreg_PreserveVideoMemoryAllocations=1` to your kernel parameters if
|
||||||
|
you don't have it already. This will solve issues with corrupted desktop / videos
|
||||||
|
after waking.
|
||||||
|
|
||||||
|
- You can check the README to get it working for Firefox.
|
||||||
|
|
||||||
|
## Other issues to look out for
|
||||||
|
|
||||||
### Regarding environment variables
|
### Regarding environment variables
|
||||||
|
|
||||||
|
@ -142,17 +163,17 @@ working in Zoom, first try running them in Native Wayland (more details below).
|
||||||
Otherwise, remove or comment the line
|
Otherwise, remove or comment the line
|
||||||
`env = __GLX_VENDOR_LIBRARY_NAME,nvidia`.
|
`env = __GLX_VENDOR_LIBRARY_NAME,nvidia`.
|
||||||
|
|
||||||
### Multi-monitor with hybrid graphics
|
### How to possibly get multi-monitor working with hybrid graphics
|
||||||
|
|
||||||
On a hybrid graphics device (a laptop with
|
On a hybrid graphics device (a laptop with
|
||||||
both an Intel and an Nvidia GPU), you will need to remove the `optimus-manager`
|
both an Intel and an Nvidia GPU), you will need to remove the `optimus-manager`
|
||||||
package if installed (disabling the service does not work). You also need to
|
package if installed (disabling the service does not work). You also need to
|
||||||
change your BIOS settings from hybrid graphics to discrete graphics.
|
change your BIOS settings from hybrid graphics to discrete graphics.
|
||||||
|
|
||||||
### Flickering in Electron / CEF apps
|
### Fixing flickering in Electron / CEF apps
|
||||||
|
|
||||||
This flickering is likely caused by these apps running in XWayland.
|
This flickering is likely caused by these apps running in XWayland.
|
||||||
To fix the flickering, try running the apps in native Wayland instead.
|
To fix the flickering, try running the apps with native Wayland instead.
|
||||||
|
|
||||||
For most Electron apps, you should be fine just adding this
|
For most Electron apps, you should be fine just adding this
|
||||||
environment variable to your config:
|
environment variable to your config:
|
||||||
|
@ -161,7 +182,7 @@ environment variable to your config:
|
||||||
env = ELECTRON_OZONE_PLATFORM_HINT,auto
|
env = ELECTRON_OZONE_PLATFORM_HINT,auto
|
||||||
```
|
```
|
||||||
|
|
||||||
This has been confirmed to work on Vesktop, VSCodium, Obsidian and will probably
|
This has been confirmed to work on Vesktop, VSCodium and Obsidian and will probably
|
||||||
work on other Electron apps as well.
|
work on other Electron apps as well.
|
||||||
|
|
||||||
For other apps, including CEF apps, you will need to launch them with these flags:
|
For other apps, including CEF apps, you will need to launch them with these flags:
|
||||||
|
@ -191,31 +212,31 @@ you will lose hardware acceleration for whichever app is run with these flags.
|
||||||
|
|
||||||
{{< /callout >}}
|
{{< /callout >}}
|
||||||
|
|
||||||
For NixOS, you can set the `NIXOS_OZONE_WL` environment variable
|
With NixOS, you can also try setting the `NIXOS_OZONE_WL` environment variable
|
||||||
to `1`, which should automatically configure Electron / CEF apps to run with native
|
to `1`, which should automatically configure Electron / CEF apps to run with native
|
||||||
Wayland for you.
|
Wayland for you.
|
||||||
|
|
||||||
While it is best to have as many things as possible running natively in
|
While it is best to have as many things as possible running natively in
|
||||||
Wayland, the flickering will likely be solved in the 555 series of Nvidia driver updates.
|
Wayland, the root cause of the flickering will likely be solved
|
||||||
|
in the 555 series of Nvidia driver updates.
|
||||||
|
|
||||||
### Flickering in XWayland games
|
### Fixing flickering in XWayland games specifically
|
||||||
|
|
||||||
XWayland games may flicker or present frames out-of-order in a way which makes them unplayable.
|
The symptoms of this widespread issue include XWayland games flickering in
|
||||||
This is due to the lack of explicit synchronization in the driver.
|
a way which makes them unplayable. Repeated frames, random presenting of
|
||||||
|
black frames, and overall weirdness. This is a result of a multitude of
|
||||||
|
issues which will be solved soon via Nvidia driver updates, but for now
|
||||||
|
you have a few possible fixes:
|
||||||
|
|
||||||
There are a few fixes:
|
- Install xorg-xwayland-git (AUR). This git package includes this [PR](https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/967)
|
||||||
|
which implements the "Explicit Sync" protocol.
|
||||||
|
This will fix it in some, if not all cases. However if it doesn't,
|
||||||
|
try the next solution. Once the 555 series of drivers are released, this
|
||||||
|
should completely fix the issue.
|
||||||
|
|
||||||
1. Install the latest versions of `xorg-xwayland` and `wayland-protocols`.
|
- Install older nvidia drivers which do not exhibit this problem. The
|
||||||
Ensure `xorg-xwayland` is at least version 24.1 and `wayland-protocols` is at least version 1.34.
|
|
||||||
Both versions include the explicit sync patches.
|
|
||||||
|
|
||||||
2. Install the older Nvidia drivers which do not exhibit this issue. The
|
|
||||||
last ones which would work will be the 535xx series of drivers. These
|
last ones which would work will be the 535xx series of drivers. These
|
||||||
can be installed on Arch via [these AUR packages](https://aur.archlinux.org/packages?O=0&K=535xx)
|
can be installed easily on Arch via [these AUR packages](https://aur.archlinux.org/packages?O=0&K=535xx)
|
||||||
|
|
||||||
3. Install the 555 beta driver. This version contains official support for explicit sync, but is still in beta.
|
|
||||||
These can be installed from the
|
|
||||||
[AUR](https://aur.archlinux.org/packages?O=0&SeB=nd&K=nvidia+beta&outdated=off&SB=p&SO=d&PP=50&submit=Go).
|
|
||||||
|
|
||||||
More info about explicit sync is available
|
More info about explicit sync is available
|
||||||
[on this blog](https://planet.kde.org/xavers-blog-2024-04-05-explicit-sync/).
|
[on this blog](https://planet.kde.org/xavers-blog-2024-04-05-explicit-sync/).
|
||||||
|
@ -238,12 +259,12 @@ Reboot your computer and it should be working.
|
||||||
|
|
||||||
If it does not, try:
|
If it does not, try:
|
||||||
|
|
||||||
1. Lowering your monitor's refresh rate: This can stop the flickering
|
- lowering your monitor's refresh rate, as this can stop the flickering
|
||||||
altogether.
|
altogether
|
||||||
2. Using the [Nouveau driver](https://wiki.archlinux.org/title/Nouveau) as
|
- using the [Nouveau driver](https://wiki.archlinux.org/title/Nouveau) as
|
||||||
mentioned above.
|
mentioned above
|
||||||
|
|
||||||
### Suspend/wakeup issues
|
### Fixing suspend/wakeup issues
|
||||||
|
|
||||||
Enable the services `nvidia-suspend.service`, `nvidia-hibernate.service` and
|
Enable the services `nvidia-suspend.service`, `nvidia-hibernate.service` and
|
||||||
`nvidia-resume.service`, they will be started by systemd when needed.
|
`nvidia-resume.service`, they will be started by systemd when needed.
|
||||||
|
@ -272,8 +293,8 @@ hardware.nvidia.powerManagement.enable = true;
|
||||||
hardware.nvidia.open = false;
|
hardware.nvidia.open = false;
|
||||||
```
|
```
|
||||||
|
|
||||||
# Still having issues?
|
## Still having issues?
|
||||||
|
|
||||||
If you're still having issues after following this guide, you can join the
|
If you're still having issues after following this guide, you can join the
|
||||||
[Hyprland Discord](https://discord.gg/hQ9XvMUjjr) and ask for help in the
|
[Hyprland Discord](https://discord.gg/hypr) and ask for help in the
|
||||||
`#hyprland-nvidia` channel.
|
`#hyprland-nvidia` channel. Hopefully someone will be able to help you out.
|
||||||
|
|
|
@ -42,7 +42,7 @@ For the config you can check out [DistroTube's Configuring Emacs](https://gitlab
|
||||||
|
|
||||||
Anyrun is a Wayland-native krunner-like runner, made with customizability in
|
Anyrun is a Wayland-native krunner-like runner, made with customizability in
|
||||||
mind. It is modular and extensible through plugins. It can be used as an app launcher with its Applications Plugin.
|
mind. It is modular and extensible through plugins. It can be used as an app launcher with its Applications Plugin.
|
||||||
[GitHub](https://github.com/anyrun-org/anyrun)
|
[GitHub](https://github.com/Kirottu/anyrun)
|
||||||
|
|
||||||
## Walker
|
## Walker
|
||||||
|
|
||||||
|
|
|
@ -77,10 +77,6 @@ configuration:
|
||||||
|
|
||||||
## Eww
|
## Eww
|
||||||
|
|
||||||
[Eww](https://github.com/elkowar/eww) (ElKowar's Wacky Widgets) is a widget system made in Rust, which lets you
|
|
||||||
create your own widgets similarly to how you can in AwesomeWM. The key difference
|
|
||||||
is that it is independent of your window manager/compositor.
|
|
||||||
|
|
||||||
In order to use [Eww](https://github.com/elkowar/eww), you first have to install
|
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
|
it, either using your distro's package manager, by searching `eww-wayland`, or
|
||||||
by manually compiling. In the latter case, you can follow the
|
by manually compiling. In the latter case, you can follow the
|
||||||
|
|
|
@ -6,7 +6,6 @@ weight: 1
|
||||||
Select your preferred wiki version below:
|
Select your preferred wiki version below:
|
||||||
|
|
||||||
- [Latest Git](https://wiki.hyprland.org/)
|
- [Latest Git](https://wiki.hyprland.org/)
|
||||||
- [v0.41.2](https://wiki.hyprland.org/0.41.2/)
|
|
||||||
- [v0.41.1](https://wiki.hyprland.org/0.41.1/)
|
- [v0.41.1](https://wiki.hyprland.org/0.41.1/)
|
||||||
- [v0.41.0](https://wiki.hyprland.org/0.41.0/)
|
- [v0.41.0](https://wiki.hyprland.org/0.41.0/)
|
||||||
- [v0.40.0](https://wiki.hyprland.org/0.40.0/)
|
- [v0.40.0](https://wiki.hyprland.org/0.40.0/)
|
||||||
|
|
Loading…
Reference in New Issue