Files
doc/system-installation/004-graphical-environment.qd
2026-07-26 03:01:52 +02:00

183 lines
7.2 KiB
Plaintext

.docname {Graphical Environment}
.include {docs}
The steps necessary to install graphics drivers are very dependent on your device. This guide details the settings I use
for my own hardware.
For general instructions, consult the [Arch Linux Wiki: Graphics][arch-wiki-graphics].
## Intel Graphics i915 / xe / Arc
Since Intel provides and supports open source drivers, Intel graphics are essentially plug-and-play. This guide details
some customized and improved settings, based on my personal preferences.
### Installation
Install (`sudo pacman -S ...`) the following packages
- `mesa`: open source OpenGL implementation for most modern drivers, including intel i915 3rd gen hardware
- `mesa-utils`: Utilities for `mesa`
- `vulkan-intal`: Vulkan support for intel hardware
- `vulkan-tools`: Vulkan utilities
- `intel-media-driver`: for VA-API support
- `libva-utils`: Utilities for VA-API
- `vdpauinfo`: Utilities for VDPAU
- `nvtop` Utility to show graphics card usage
Then reboot the computer.
### Enable GuC / HuC Firmware Loading
Depending on the hardware support, GuC and HuC should be en abled by default. You can check this by running the
following commands
```sh
cat /sys/kernel/debug/dri/0/gt0/uc/guc_info
cat /sys/kernel/debug/dri/0/gt0/uc/huc_info
```
> Tip: `0` might need to be replaced by a different number in the commands above. The files will only exist if GuC /
> HuC are enabled during boot. A reboot might be required if you cannot see them, or GuC / HuC is disabled in the
> system.
If GuC / HuC is disabled, you can manually enable it. Create the file `/etc/modprobe.d/i915.conf`
```txt
option i915 enable_guc=2
```
Possible options:
- `1`: Enable GuC but not HuC
- `2`: Enable Huc, but not GuC
- `3`: Enable HuC and GuC
.example {Dell XPS 13 9370 (2018)}
Supported option is `option i915 enable_guc=2`
.example {DELL XPS 13 9350 (2024)}
The xe driver is still experimental. Once it becomes mainline, GuC/HuC will be enabled by default.
Then regenerate and sign the initramfs with `mkinictpio -P`
> Warning: Manually enabling GuC or HuC firmware loading taints the kernel even when the feature is not supported.
> Moreover, enabling Guc / HuC firmware loading can cause issues on some systems; disable it if you experience freezing
> (for example, after resuming from hibernation).
### Intel ARC
Intel ARC GPUs support hardware raytracing support through onboard TSUs. Current performance is mixed.
For intel ARC, `linux-firmware-intel` should be installed on the system. It likely is from the base install already.
## AMD Graphics
AMD releases their drivers as open source. There are also closed source drivers available for special usecases. This
guide will only focus on the open source drivers.
Install (`sudo pacman -S ...`) the following packages
- `mesa` modern OpenGL drivers for most hardware
- `mesa-utils` utility programs for mesa
- `vulkan-radeon` vulkan support
- `vulkan-tools` utility programs for vulkan
- `libva-mesa-driver` to support accelerated video decoding using VA-API
- `libva-utils` utility programs for VA-API
- `mesa-vdpau` support for VDPAU
- `vdpauinfo` utility programs for VDPAU
- `nvtop` to monitor temparature, clock speed, and usage of the graphics card
Then reboot the system.
## Reboot
Do not forget to reboot the system after changes to the graphics drivers have been made.
## Install Hyprland
To install Hyprland, install the following packages that will include some necessary utilities for the system
```sh
yay -S --needed \
hyprland hyprpaper hypridle hyprlock waybar wofi kitty nemo gvfs gvfs-mtp gvfs-smb \
xdg-desktop-portal xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-utils \
wl-clipboard grim slurp swaync network-manager-applet polkit polkit-gnome chezmoi \
wev btop qt5-wayland qt6-wayland qt5ct qt6ct gtk-engine-murrine \
colloid-catppuccin-gtk-theme papirus-icon-theme breeze-icons \
pipewire pipewire-audio pipewire-alsa pipewire-pulse pipewire-jack wireplumber \
pavucontrol alsa-utils \
ttf-bitstream-vera ttf-croscore ttf-dejavu ttf-droid gnu-free-fonts ttf-libreation \
ttf-libertinus otf-libertinus noto-fonts ttf-roboto ttf-ubuntu-font-family \
ttf-anonymous-pro ttf-cascadia-code ttf-fira-mono otf-fira-mono inter-font \
ttf-ms-fonts ttf-vista-fonts ttf-roboto-mono-nerd ttf-firacode-nerd \
otf-firamono-nerd otf-font-awesome \
noto-fonts-emoji noto-fonts-cjk noto-fonts-extra ttf-jetbrains-mono \
ttf-jetbrains-mono-nerd \
firefox librewolf-bin thunderbird \
git make gcc curl ripgrep fzf jq tar unzip inotify-tools socat brightnessctl \
xdg-user-dirs fastfetch figlet openssh tmux man-db man-pages usbutils pciutils \
uwsm libnewt
```
You can now start hyprland with `uwsm start hyprland.desktop`.
## Automatic Configuration
A lot of the package installation and configuration in the `$HOME` and `$HOME/.config` folders can be automated
with `chezmoi`.
1. Make sure that `chezmoi` is installed on the system with `pacman -S chezmoi`.
2. Then run the following command to clone and apply configuration files from the `fz-stack` dotfiles repository.
You can modify the path you want to checkout the dotfiles to by modifying the `-S ...` argument.
```sh
chezmoi -S $HOME/Projects/fz-stack/dotfiles init ssh://git@zechert.net:fz-stack/dotfiles.git
```
> Tip: The applied `~/.bashrc` will set up an alias to call `chezmoi` without the need to specify the `-S ...`
> argument everytime. If you install the dotfiles to a different place than the `$HOME/Projects/fz-stack/dotfiles`
> mentioned here, you will need to change this alias in the `.bashrc` configuration file.
## Automatic Login on TTY1
If the system is used by a single user, and the disk encryption password is known only to this user, it might be
desirable to automatically log in this user when the computer starts.
Create a drop-in file for `getty@tty1.service` with the following contents in `/etc/systemd/system/getty@tty1.service.d/autologin.conf`.
```ini
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin <username> %I $TERM
```
After the automatic login of the user, Hyprland will be started on TTY1 by the `uwsm` commands
in the `~/.bash_profile` file. On other TTYs, Hyprland will not be started automatically.
## Prevent Action When Laptop Lid is Closed
In some situations it might be useful to prevent all actions when the laptop lid is closed (or is being closed).
Usually systemd will go to sleep mode when the lid is closed on no other idle inhibitors are present (e.g. keyboards,
external monitors etc.).
If this works correctly it is fine, but it is buggy on some systems. If you notice symptoms like these
- The laptop goes into sleep immediately after booting and before the dock and external monitors are online
- The laptop goes into sleep when monitors turn off (e.g. due to dpms)
- The laptop goes into sleep although it is connected to a dock (dock detection is not reliable)
You can disdable the auto-suspend in `/etc/systemd/logind.conf`
```ini
[Login]
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
```
## Create Default User Directories
Execute the command `xdg-user-dirs-update` to create or update the default user directories.
[arch-wiki-graphics]: https://wiki.archlinux.org/title/Category:Graphics