[FEATURE] Allow customizing the Matugen color generation mode (--prefer)

Aperta
#1,735 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@mylinuxforwork ci sta già lavorando.

Dal 11/7/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

enhancement
Is your feature request related to a problem? Please describe.

When changing wallpapers or switching themes, Matugen is automatically executed in the background to extract colors and update system theming. Currently, I see two major issues with the current implementation:

Background TTY Crashes (Fixes #1744): In Matugen 4.0.0+, if an image contains multiple dominant colors and Matugen is executed without a TTY/terminal (e.g. from wallpaper.sh via the Quickshell app or Waypaper), it crashes with Multiple source colors found, no preference was inputted, and a terminal was not detected. This prevents the status bar and other templates from updating.
No Custom Color Strategies: The color extraction strategy is set to Matugen's default behavior without an option to change it. There is no built-in way for users to choose different color strategies (like prioritizing highly saturated colors, chroma, lightness, etc.), which can lead to suboptimal color extraction depending on the wallpaper.

Describe the solution you'd like

II would like to have a native option to customize Matugen's color generation behavior by utilizing its --prefer flag (which supports chroma, lightness, saturation, and hue) while safeguarding the background execution with --source-color-index 0 as a default fallback.

Describe alternatives you've considered
  1. Introduce a configuration/setting file at ~/.config/ml4w/settings/matugen-prefer containing the user's preference (e.g. saturation, lightness, or default).
  2. Update the Matugen invocation in both ml4w-wallpaper and hypr/scripts/wallpaper.sh to dynamically resolve the Matugen binary path (supporting cargo and local installations) and pass the safe parameters:
# Detect matugen path dynamically (supporting cargo, local or global installation)
MATUGEN_BIN="matugen"
if ! command -v matugen &> /dev/null; then
    if [ -f "$HOME/.local/bin/matugen" ]; then
        MATUGEN_BIN="$HOME/.local/bin/matugen"
    elif [ -f "$HOME/.cargo/bin/matugen" ]; then
        MATUGEN_BIN="$HOME/.cargo/bin/matugen"
    else
        MATUGEN_BIN="$HOME/.local/bin/matugen" # Fallback to original default
    fi
fi
# Load user prefer settings
SETTINGS_MATUGEN_PREFER="$HOME/.config/ml4w/settings/matugen-prefer"
MATUGEN_PREFER="default"
if [ -f "$SETTINGS_MATUGEN_PREFER" ]; then
    MATUGEN_PREFER=$(grep -E -v '^#|^$' "$SETTINGS_MATUGEN_PREFER" | head -n 1 | xargs)
fi
# Resolve arguments (preventing TTY crash on default/empty settings)
if [ "$MATUGEN_PREFER" = "default" ] || [ -z "$MATUGEN_PREFER" ]; then
    MATUGEN_ARGS="--source-color-index 0"
else
    MATUGEN_ARGS="--prefer $MATUGEN_PREFER"
fi
# Run Matugen
$MATUGEN_BIN image "$IMAGE_PATH" -m "$mode" $MATUGEN_ARGS
Describe alternatives you've considered

Manually copying and overriding the scripts to custom folders to add these flags. This is tedious and prone to breaking during dotfile updates.

Additional context

This not only enables custom color palettes but also natively fixes the critical bug #1744 where the status bar colors fail to update due to the background Matugen crash.

Support or Contribution
Lingua principale
QML
Stelle
5.1k
Fork
386
Merge medio
16h 45m
PR unite (30g)
14

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di mylinuxforwork/dotfiles

Tutte le issue di mylinuxforwork/dotfiles

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.