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