| 1 | # remage configuration — the complete default. |
| 2 | # |
| 3 | # Copy only what you want to change into ~/.config/remage/config.toml: your file is merged |
| 4 | # over these defaults, so a partial file is fine. `remage --check-config` validates it. |
| 5 | # Changes apply live, and SIGUSR1 or the `reload-config` action reload by hand. |
| 6 | |
| 7 | # Files merged before this one, in order; this file wins. `~` and `$VAR` expand, relative |
| 8 | # paths resolve against this file's directory, and a missing include is only a warning. |
| 9 | # include = ["~/.cache/matugen/remage.toml"] |
| 10 | include = [] |
| 11 | |
| 12 | [general] |
| 13 | open_siblings = true # a single file argument opens its whole directory |
| 14 | recursive = false # descend into directory arguments |
| 15 | sort = "natural" # natural | name | mtime | size | random |
| 16 | reverse = false |
| 17 | start_mode = "image" # image | grid |
| 18 | wrap = true # next on the last image goes to the first |
| 19 | watch_dir = true # add and drop files that appear or vanish on disk |
| 20 | |
| 21 | [window] |
| 22 | decorations = false |
| 23 | title = "{name} — remage" # {name} {index} {count} |
| 24 | class = "remage" # Wayland app_id / X11 class |
| 25 | fullscreen = false |
| 26 | |
| 27 | [image] |
| 28 | fit = "down" # down (fit, never enlarge) | fit | fill | width | height | original |
| 29 | zoom_step = 1.25 |
| 30 | filter = "auto" # auto (nearest above 300%) | linear | nearest |
| 31 | alpha_background = "dots" # dots | checker | solid |
| 32 | auto_orient = true # apply EXIF orientation |
| 33 | color_management = true # convert ICC / CICP colour to sRGB |
| 34 | preload = 2 # images decoded and uploaded on each side |
| 35 | cache_mb = 512 # decoded-image cache budget |
| 36 | slideshow_delay = 5.0 # seconds |
| 37 | |
| 38 | [grid] |
| 39 | sizes = [96, 128, 160, 224, 320] |
| 40 | size = 160 |
| 41 | gap = 16 |
| 42 | thumbnail_cache = true # read and write the shared freedesktop thumbnail cache |
| 43 | names = false # filenames under thumbnails |
| 44 | |
| 45 | [ui] |
| 46 | statusbar = true |
| 47 | which_key_delay_ms = 300 |
| 48 | scale = 1.0 # UI size multiplier on top of the display scale |
| 49 | statusbar_left = "{name}" |
| 50 | statusbar_right = "{format} {width}×{height} {zoom}% {index}/{count}" |
| 51 | info_command = "" # script whose output fills a status segment |
| 52 | font_ui = "Space Grotesk" |
| 53 | font_mono = "Space Mono" |
| 54 | font_display = "Doto" |
| 55 | |
| 56 | [animation] |
| 57 | enabled = true |
| 58 | duration_ms = 180 |
| 59 | transition = "fade" # fade | none |
| 60 | |
| 61 | [theme] |
| 62 | preset = "nothing-dark" # nothing-dark | nothing-light |
| 63 | # Read colours from pywal: special.background / special.foreground / colors.color1. |
| 64 | # pywal = "~/.cache/wal/colors.json" |
| 65 | # |
| 66 | # background, foreground and accent are enough; every other token is derived from them. |
| 67 | # Any token can be set explicitly as "#RRGGBB" or "#RRGGBBAA": |
| 68 | # background = "#000000" |
| 69 | # foreground = "#FFFFFF" |
| 70 | # accent = "#D71921" |
| 71 | # surface surface_raised border border_visible text_disabled text_secondary |
| 72 | # text_primary text_display success warning image_background |
| 73 | |
| 74 | # Key bindings. Values are an action, an array of actions run in order, or "none" to remove |
| 75 | # a default. Mode tables override [keys.global]; visual mode also inherits [keys.grid]. |
| 76 | # Notation is vim's: n G <C-x> <S-Tab> <Space>w <CR> <BS> <Esc> <F5> <lt> <Bar>, plus |
| 77 | # <LeftMouse> <RightMouse> <MiddleMouse> <ScrollUp> <ScrollDown> with modifiers (<C-ScrollUp>). |
| 78 | # A count typed first applies to the action: 5n, 12G, 3+. |
| 79 | |
| 80 | [keys.global] |
| 81 | "q" = "quit" |
| 82 | "<CR>" = "mode toggle" |
| 83 | "n" = "next" |
| 84 | "p" = "prev" |
| 85 | "<BS>" = "prev" |
| 86 | "]" = "next 10" |
| 87 | "[" = "prev 10" |
| 88 | "gg" = "first" |
| 89 | "G" = "last" |
| 90 | "<Home>" = "first" |
| 91 | "<End>" = "last" |
| 92 | "m" = "mark" |
| 93 | "M" = "invert-marks" |
| 94 | "u" = "unmark-all" |
| 95 | "N" = "next-mark" |
| 96 | "P" = "prev-mark" |
| 97 | "f" = "fullscreen" |
| 98 | "b" = "bar" |
| 99 | "i" = "info" |
| 100 | "r" = "reload" |
| 101 | "D" = "remove" |
| 102 | "s" = "slideshow" |
| 103 | ":" = "palette" |
| 104 | "/" = "search" |
| 105 | "?" = "help" |
| 106 | "<Esc>" = "cancel" |
| 107 | |
| 108 | [keys.image] |
| 109 | "h" = "pan left" |
| 110 | "j" = "pan down" |
| 111 | "k" = "pan up" |
| 112 | "l" = "pan right" |
| 113 | "<Left>" = "pan left" |
| 114 | "<Down>" = "pan down" |
| 115 | "<Up>" = "pan up" |
| 116 | "<Right>" = "pan right" |
| 117 | "H" = "pan-edge left" |
| 118 | "J" = "pan-edge down" |
| 119 | "K" = "pan-edge up" |
| 120 | "L" = "pan-edge right" |
| 121 | "z" = "center" |
| 122 | "+" = "zoom in" |
| 123 | "-" = "zoom out" |
| 124 | "=" = "zoom 100%" |
| 125 | "w" = "fit fit" |
| 126 | "W" = "fit fill" |
| 127 | "e" = "fit width" |
| 128 | "E" = "fit height" |
| 129 | "<lt>" = "rotate ccw" |
| 130 | ">" = "rotate cw" |
| 131 | "|" = "flip h" |
| 132 | "_" = "flip v" |
| 133 | "a" = "filter toggle" |
| 134 | "A" = "alpha-bg cycle" |
| 135 | "{" = "gamma -" |
| 136 | "}" = "gamma +" |
| 137 | "<C-Space>" = "play" |
| 138 | "<C-n>" = "next-frame" |
| 139 | "<C-p>" = "prev-frame" |
| 140 | "<ScrollUp>" = "zoom in" |
| 141 | "<ScrollDown>" = "zoom out" |
| 142 | |
| 143 | [keys.grid] |
| 144 | "+" = "grid-size +" |
| 145 | "-" = "grid-size -" |
| 146 | "v" = "visual" |
| 147 | |
| 148 | [keys.visual] |
| 149 | "m" = "mark on" |
| 150 | "<Esc>" = "mode grid" |
| 151 | |
| 152 | # User commands: bind them as "run <name>"; unbound ones still show in the : palette. |
| 153 | # |
| 154 | # [commands.wallpaper] |
| 155 | # desc = "Set as wallpaper" |
| 156 | # run = ["setwall", "-p", "{file}"] # array: exec directly, {files} expands to N args |
| 157 | # |
| 158 | # [commands.copy] |
| 159 | # desc = "Copy image" |
| 160 | # run = "wl-copy --type image/png < {file}" # string: sh -c, placeholders shell-quoted |
| 161 | # |
| 162 | # [commands.delete] |
| 163 | # desc = "Delete files" |
| 164 | # run = ["rm", "--", "{files}"] |
| 165 | # confirm = "Delete {count} file(s)?" |
| 166 | # |
| 167 | # Fields: targets = auto | current | marked | all, stdin = none | files | files0, |
| 168 | # output = status | actions | ignore, after = actions run on success (default "refresh"). |
| 169 | # Placeholders: {file} {files} {dir} {name} {stem} {ext} {index} {count} {width} {height}. |
| 170 | [commands] |
| 171 | |
| 172 | # External decoders for anything else; they write PNG, PPM or TIFF to stdout. |
| 173 | # [[decoders]] |
| 174 | # match = ["*.psd"] |
| 175 | # run = ["magick", "{file}[0]", "png:-"] |