notashelf /
ebdc3fe08e4cdde737abc0080b067fd6c86e093c
chroma
publicLightweight wallpaper daemon for Wayland
clone
ssh://git@git.notashelf.dev:33/notashelf/chroma.git| 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 |