#+title: Wayland

Install [[https://wiki.archlinux.org/title/wayland][wayland]]: ~wayland~, ~xorg-xwayland~

* Login Manager

The login manager is not managed by this configuration but mentioned here since
it interacts with the desktop environment. For ~hyprland~, ~sddm~ is
recommended.

- ~sddm~: Enable ~sddm.service~

  A note about themes: The themes must be placed in ~/usr/share/sddm/themes~.
  Then in ~/etc/sddm.conf~, enable the relevant theme. By default the breeze
  theme comes with ~plasma-workspace~ which is very bloated to install, so
  consider some of the alternative themes.

* Fonts

- ~otf-font-awesome~: Needed for ~waybar~ to render icons
- Noto Sans/Serif: System font

* Status Bar and Tray

- ~eww-wayland~: Requires ~socat~ to listen for hyprland events.

* Sway

This is one choice of a compositor.

- ~swayfx~: Window manager
- ~python-i3ipc~: Enables inactive window opacity scripts

** Wallpaper
Use ~multibg-sway~, which assigns a different wallpaper to each workspace and
does not crash. The wallpapers directory ~~/.config/sway/wallpapers~ needs to be setup in this way:
#+begin_src
wallpapers
    ├─ eDP-1
    │    ├─ _default.jpg
    │    ├─ 1.jpg
    │    ├─ 2.png
    │    └─ browser.jpg
    └─ HDMI-A-1
         ├─ 1.jpg
         └─ 3.png
#+end_src
where the output information can be obtained from ~swaymsg -t get_outputs~.

Supposedly does not work with ~hypr~.

* Hyprland

This is another choice of a compositor.

Note: Setup does not work with NVIDIA GPU without some tweaks.

- [[https://wiki.archlinux.org/title/Hyprland][hyprland]]: window manager
- ~hyprpaper~: Wallpaper engine

  The command to set a wallpaper:
  ~hyprctl hyprpaper wallpaper "$DISPLAY,$FILE"~
The command for changing keyboard layouts is handled by ~fcitx5~.

* Utilities

- [[https://github.com/Horus645/swww][swww]]: Alternate wallpaper engine

  Note that ~~/.config/hypr/wallpapers~ must have jpeg files ~{1..8}.jpg~. A
  handy command can be used crop and resize images:
  #+begin_src bash
convert $IN \
	-resize 3840x2160^ \
	-gravity center \
	-extent 3840x2160 \
	$OUT
  #+end_src
- ~swaync~: Notification server
- ~wofi~: finding programs, drop in replacement for ~rofi~
- ~dolphin~: File explorer
- ~swaylock-effects~: A simple lockscreen
- ~wl-clipboard~: Provides copying
- ~blueman~: Bluetooth connector

- ~grim~: Screenshot engine
- ~flameshot~: Screenshot utility; On Arch Linux, install ~flameshot-git~.

** Configuration

- ~lxappearance~: Used to configure GTK3 themes
- ~nwg-look~: Configures cursor
- ~wev~: Wayland event interceptor useful for determining keybinds

* Troubleshooting

** Black screen with underscore

Symptom: The system shows a black screen with an underscore at the top left
corner. Cannot access any TTY via ~C-S-F[1-9]~. Logs look otherwise normal.

Solution:
1. Boot into live USB. Read `journalctl --since=today` to find out about
   erroring packages and reinstall them.
2. Enable wayland for sddm. This requires ~weston~