---
title: Hyprland Companion Tools
url: https://doc.liz6.com/en/tools/hyprland/05-companions
locale: en
area: tools
tags:
- tools
- hyprland
date: null
modified: 2026-07-16
description: Standard lock screen, wallpaper, and launcher. Notable for the reason behind splitting hypridle into two instances.
---

# Hyprland Companion Tools

Hyprland only handles windows; the remaining components are mostly standard pairings, with themes generated by [matugen](04-waybar-theming.md). Here is a brief overview of what each component does:

- **hyprlock** (Lock Screen): The official lock screen for Hyprland. It uses GPU rendering and supports blurred wallpapers, clocks, and input fields. Its configuration style aligns with Hyprland. I have it display the current wallpaper for each screen (see below).
- **hyprpaper / waypaper**: `hyprpaper` is the actual backend for setting wallpapers (runs persistently, preloads into VRAM, and allows per-screen configuration). `waypaper` is a graphical selector wrapper for it (and other backends); changing the wallpaper triggers [matugen](04-waybar-theming.md) to recalculate the color scheme.
- **walker / fuzzel** (Launcher): `fuzzel` is lightweight and follows the pure dmenu style. I use it for the clipboard history menu (the `SUPER+V` entry in [hyprland.lua](02-hyprland.md)) and various `--dmenu` pipelines. `walker` is more like a full-featured launcher (with plugin modules for apps, calculations, emojis, etc.).
- **wlogout** (Power Menu): A grid layout of large buttons for lock/logout/reboot/shutdown. The styling uses colors from matugen.
- **fcitx5** (Input Method): Handles Chinese/English switching. The theme is generated by matugen, and it integrates with [im-select](../nvim/02-plugins-keymaps.md) in the editor—automatically switching back to English in normal mode when moving from the desktop to nvim.

These components are straightforward to set up: just install them and integrate them with matugen. The truly non-obvious part, which requires troubleshooting to configure correctly, is **splitting hypridle into two instances**.

Initially, I had both the lock screen and screen dimming (DPMS) in a single instance. However, when Chrome or Bilibili was open, the screen would lock but never dim. The reason is that such pages continuously send Video Wake Lock D-Bus signals, repeatedly interrupting the idle timer. While the intent of these locks is "do not dim the screen during video playback," they inadvertently prevented the screen from dimming even after locking.

The solution was to separate them: the main instance handles only the lock screen, while the screen dimming (DPMS) runs in a second instance that ignores wake locks.

```ini
# Main instance: handles only locking
general { lock_cmd = ~/.config/hypr/hyprlock/lock.sh
          before_sleep_cmd = loginctl lock-session }
listener { timeout = 1800; on-timeout = loginctl lock-session }
# Screen dimming is configured separately in hypridle-dpms.conf, operating independently
```

As a side note, I use `loginctl lock-session` for locking rather than calling hyprlock directly. This allows hypridle's `lock_cmd` (the `lock.sh` script) to take over, synchronizing the current wallpaper for each screen before locking, ensuring the lock screen background matches the desktop. The input method is fcitx5, which integrates with [im-select](../nvim/02-plugins-keymaps.md) at the desktop level, ensuring seamless Chinese/English switching from the desktop to nvim.
