brewery
notashelf /
889bd0a44f903c6418e76cd5ca860a1c1b928819

chroma

public

Lightweight wallpaper daemon for Wayland

Star0tarball
clone
ssh://git@git.notashelf.dev:33/notashelf/chroma.git
chroma.toml.sample155 lines5.4 KB
1
# This is a sample TOML configuration file for the Chroma wallpaper daemon.
2
# For more information about TOML format, see https://toml.io
3
#
4
# Configuration file locations (checked in order):
5
#   1. $XDG_CONFIG_HOME/chroma/chroma.toml
6
#   2. ~/.config/chroma/chroma.toml
7
#   3. ./chroma.toml (current directory)
8
#
9
# To get started:
10
#   1. Copy this file to ~/.config/chroma/chroma.toml
11
#   2. Modify the paths to point to your wallpaper images
12
#   3. Use 'wlr-randr' or similar tools to find your output names
13
#   4. Restart chroma or send SIGHUP to reload configuration
14
15
# Default wallpaper for outputs without specific mapping
16
# Supports: JPEG, PNG, BMP, TGA, PSD, GIF, HDR, PIC, PPM, PGM
17
# Also supported (with optional libraries): farbfeld, SVG, WebP, TIFF, AVIF, JPEG XL
18
# Paths can be absolute or relative, ~ expansion is supported.
19
default_image = "~/.config/chroma/default.jpg"
20
21
# Solid color background (overrides default_image when set)
22
# Format: RRGGBB or RRGGBBAA (hex, no # prefix)
23
# Example: solid_color = "1a1b26"  (Tokyo Night background)
24
# Leave empty to use image-based wallpapers
25
# solid_color = ""
26
27
# Whether to run as a background daemon
28
# Usually set via command line option --daemon, but can be set here too
29
daemon_mode = false
30
31
# Global scaling mode for wallpapers (used as default for all outputs)
32
# Options: fill, fit, stretch, center
33
#   fill    - Fill entire output, crop if necessary (default)
34
#   fit     - Fit image within output, add borders if needed
35
#   stretch - Stretch to fill output, may distort aspect ratio
36
#   center  - Center image at original size
37
scale_mode = "fill"
38
39
# Global image filtering quality (used as default for all outputs)
40
# Options: nearest, linear, bilinear, trilinear
41
#   nearest   - Nearest neighbor filtering (pixelated, fast)
42
#   linear    - Linear filtering (smooth, default)
43
#   bilinear  - Bilinear filtering (smoother)
44
#   trilinear - Trilinear filtering (smoothest)
45
filter_quality = "linear"
46
47
# Default anchor position (0-100 for both x and y)
48
# anchor_x: 0=left, 50=center, 100=right
49
# anchor_y: 0=top, 50=center, 100=bottom
50
# Can use named anchors: center, top, bottom, left, right, top-left, etc.
51
anchor = "center"
52
anchor_x = 50
53
anchor_y = 50
54
55
# Image downsampling settings for performance optimization
56
[downsampling]
57
# Enable automatic downsampling of large images to save memory and improve performance
58
# Set to false to keep original resolution for all images (uses more memory!)
59
enable = true
60
61
# Maximum expected output resolution
62
# Images larger than these dimensions may be automatically downsampled
63
# Adjust based on your actual monitor setup
64
max_output_width = 3840   # 4K width (change to 2560 for 1440p, 1920 for 1080p)
65
max_output_height = 2160  # 4K height (change to 1440 for 1440p, 1080 for 1080p)
66
67
# Minimum scale factor
68
# Prevents images from being scaled below this percentage of original size
69
# Useful to preserve detail on very high-resolution images
70
# Range: 0.1 to 1.0 (10% to 100%)
71
min_scale_factor = 0.25  # Don't scale below 25% of original size
72
73
# Smooth crossfade transitions when switching wallpapers
74
[transition]
75
enable = false            # Enable smooth crossfade transitions
76
duration_ms = 300         # Transition duration in milliseconds
77
78
# Animated wallpaper support (GIF playback)
79
[animation]
80
enable = true             # Enable animated GIF playback
81
max_fps = 30              # Maximum animation frame rate
82
83
# IPC socket for runtime wallpaper control
84
# When enabled, chroma listens on a Unix domain socket for commands:
85
#   echo "set DP-1 ~/wallpaper.jpg" | nc -U /tmp/chroma.sock
86
#   echo "set_all ~/wallpaper.jpg" | nc -U /tmp/chroma.sock
87
#   echo "clear rrggbb" | nc -U /tmp/chroma.sock
88
#   echo "reload" | nc -U /tmp/chroma.sock
89
#   echo "ping" | nc -U /tmp/chroma.sock
90
[ipc]
91
enable = false
92
socket_path = "/tmp/chroma.sock"
93
94
# Output-specific wallpaper mappings
95
# ==================================
96
# Each [[output]] block defines a mapping for a specific output.
97
#
98
# You can match outputs by name OR by description:
99
#   name = "DP-1"          # Match by port name
100
#   name = "desc:Samsung"  # Match by description prefix
101
#
102
# The description is the human-readable name provided by the compositor
103
# via the Wayland wl_output description event. For example, if your
104
# monitor reports "Samsung T27A450" as its description, you can use
105
# "desc:Samsung" to match it. The match is a prefix match, so
106
# "desc:Sam" would also work.
107
#
108
# To find your output names and descriptions, run one of these commands:
109
#   wlr-randr (for wlroots-based compositors)
110
#   wayland-info | grep wl_output
111
#   kanshi list-outputs
112
113
[[output]]
114
name = "DP-1"
115
image = "~/Pictures/monitor1.jpg"
116
scale = "fill"
117
filter = "linear"
118
anchor = "center"
119
120
[[output]]
121
name = "DP-2"
122
image = "~/Pictures/monitor2.png"
123
scale = "fit"
124
125
[[output]]
126
name = "HDMI-A-1"
127
image = "~/Pictures/hdmi_wallpaper.jpg"
128
scale = "stretch"
129
130
# Match by monitor description (prefix match):
131
[[output]]
132
name = "desc:Samsung"
133
image = "~/Pictures/samsung-wallpaper.jpg"
134
scale = "fill"
135
136
[[output]]
137
name = "desc:LG Ultra"
138
image = "~/Pictures/lg-wallpaper.jpg"
139
scale = "fit"
140
141
# Laptop internal display:
142
[[output]]
143
name = "eDP-1"
144
image = "~/Pictures/laptop-wallpaper.jpg"
145
scale = "fill"
146
anchor = "bottom-right"
147
filter = "trilinear"
148
149
# Custom anchor coordinates (anchor_x, anchor_y override anchor):
150
[[output]]
151
name = "ULTRAWIDE"
152
image = "~/Pictures/ultrawide.jpg"
153
scale = "fill"
154
anchor_x = 25    # 25% from left edge
155
anchor_y = 10    # 10% from top edge