hyprdynamicmonitors

command module
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 1, 2025 License: MIT Imports: 1 Imported by: 0

README

hyprdynamicmonitors logo

HyprDynamicMonitors


Documentation Release Downloads License Code Size Go Version AUR version Go Report Card Build Codecov

An event-driven service with an interactive TUI that automatically manages Hyprland monitor configurations based on connected displays, power and lid state.

Preview

TUI theming

TUI demo in default theme

TUI demo

Daemon Response to Power State Events

power events demo

Daemon and TUI Response to Laptop Lid Events

lid tui events demo

Dynamic Profile Modes depending on the user context

A full guide is available at Dynamic Profile Modes.

Dynamic Profile Modes

Table Of Contents

Features

  • Event-driven architecture responding to monitor, power and lid state changes in real-time
  • Interactive TUI for visual monitor configuration and profile management
  • Profile-based configuration with different settings for different monitor setups
  • Template support for dynamic configuration generation
  • Hot reloading automatically detects and applies configuration changes without restart (optional)
  • Power state awareness built-in AC/battery detection for laptop users (optional)
  • Lid state awareness built-in lid state detection for laptop users (optional)
  • Desktop notifications for configuration changes (optional)
  • Theming support for built-in themes and dynamic generation from wallpapers

Quick Start

Installation

# Binary release
export DESTDIR="$HOME/.local/bin"  # optional, defaults to ~/.local/bin/
curl -o- https://raw.githubusercontent.com/fiffeek/hyprdynamicmonitors/refs/heads/main/scripts/install.sh | bash

# AUR (Arch Linux)
$aurHelper -S hyprdynamicmonitors-bin

# Nix, for flakes/modules see: https://hyprdynamicmonitors.filipmikina.com/docs/advanced/systemd#nix
nix run github:fiffeek/hyprdynamicmonitors

See the Installation Guide for more options.

Setup

The easiest way to get started is using the TUI (see the Getting started with the TUI guide):

# Launch the interactive TUI
hyprdynamicmonitors tui

# Configure your monitors visually
# Press 'Tab' to switch to Profile view
# Press 'n' to create a new profile
# For getting started see: https://hyprdynamicmonitors.filipmikina.com/docs/quickstart/tui/

Then add to your ~/.config/hypr/hyprland.conf (alternatively, see Running with systemd guide):

# Source the generated monitor configuration
source = ~/.config/hypr/monitors.conf

# Run the daemon for automatic profile switching
exec-once = hyprdynamicmonitors run

# or use systemd instead
# see: https://fiffeek.github.io/hyprdynamicmonitors/docs/advanced/systemd
# systemctl --user enable --now hyprdynamicmonitors.service

Ensure you're running hyprdynamicmonitors prepare prior to running Hyprland (see the guide and the why):

# e.g. from a tty:
hyprdynamicmonitors prepare && Hyprland
# or use systemd
# systemctl --user enable hyprdynamicmonitors-prepare.service

For detailed setup instructions, see the Quick Start Guide.

[!CAUTION] For production environments prefer running with systemd (guide).

Documentation

Full documentation is available at fiffeek.github.io/hyprdynamicmonitors

Key topics:

Topic Description
Quick Start Get up and running quickly
TUI Guide Interactive monitor configuration
Configuration Profiles, monitors, and power management
Templates Dynamic configuration generation
Running with systemd Production deployment
CLI Commands Command reference
FAQ Common questions
Power Events Guide to running with Power Events
Lid Events Guide to running with Lid Events
Dynamic Profile Modes Guide to making dynamic profile modes
Prepare Command Do I need hyprdynamicmonitors prepare?
Make it yours! How to apply/generate a theme

Examples

See the examples/ directory for complete configuration examples:

Example Description
Basic Setup Simple laptop configuration
Full Configuration All available options
Power States AC/battery-aware profiles
Lid States Laptop lid detection
Template Variables Dynamic templates
Disable Monitors Managing unexpected displays

Runtime Requirements

  • Hyprland with IPC support
  • UPower (required on laptops, unless --disable-power-events is passed, for power state monitoring)
  • D-Bus access (required if power events, lid state or notifications are enabled)

Alternative Software

Similar tools worth checking out:

  • kanshi - Generic Wayland output management
  • shikane - Another Wayland output manager
  • nwg-displays - GUI-based display configuration tool
  • hyprmon - TUI-based display configuration tool

HyprDynamicMonitors is Hyprland-specific but offers deeper integration, an interactive TUI, template system, and power state awareness. See Introduction for a detailed comparison.

Support

If you find HyprDynamicMonitors useful and want to support its development, consider buying me a coffee on Ko-fi. Your support helps keep the project maintained and enables new features. Thank you!

License

See LICENSE file.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package cmd provides the entry point for the hyprdynamicmonitors application.
Package cmd provides the entry point for the hyprdynamicmonitors application.
internal
app
Package app provides an application runner.
Package app provides an application runner.
config
Package config handles loading and validation of TOML configuration files.
Package config handles loading and validation of TOML configuration files.
dial
Package dial provides unix socket helpers.
Package dial provides unix socket helpers.
errs
Package errs provides common errors thrown in the app that are expected to be caught upstream
Package errs provides common errors thrown in the app that are expected to be caught upstream
filewatcher
Package filewatcher provides a service that watches config files and issues a debounced event with changes
Package filewatcher provides a service that watches config files and issues a debounced event with changes
generators
Package generators provides configuration file generation functionality.
Package generators provides configuration file generation functionality.
hypr
Package hypr provides Hyprland IPC communication functionality.
Package hypr provides Hyprland IPC communication functionality.
matchers
Package matchers provides profile matching logic based on monitor conditions.
Package matchers provides profile matching logic based on monitor conditions.
notifications
Package notifications provides notifications through dbus
Package notifications provides notifications through dbus
power
Package power provides power state detection functionality.
Package power provides power state detection functionality.
prepare
Package prepare defines utility service to prepare prior to hyprdynamicmonitors daemon run
Package prepare defines utility service to prepare prior to hyprdynamicmonitors daemon run
profilemaker
Package profilemaker makes it easier to create profiles from the cli (gives a reasonable starter profile in a new monitor environment)
Package profilemaker makes it easier to create profiles from the cli (gives a reasonable starter profile in a new monitor environment)
reloader
Package reloader provides a service that listens to file change notifications and issues an application-wide reload
Package reloader provides a service that listens to file change notifications and issues an application-wide reload
signal
Package signal provides signal handling functionality.
Package signal provides signal handling functionality.
testutils
Package testutils provides utils for testing should not be imported by any other app packages
Package testutils provides utils for testing should not be imported by any other app packages
tui
Package tui provides a TUI implementation to interact with hyprdynamicmonitors (and hyprland) monitors config
Package tui provides a TUI implementation to interact with hyprdynamicmonitors (and hyprland) monitors config
userconfigupdater
Package userconfigupdater provides the main service coordination and event handling.
Package userconfigupdater provides the main service coordination and event handling.
utils
Package utils provides utility functions.
Package utils provides utility functions.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL