# unbox.toml — sample configuration # # Copy to $XDG_CONFIG_HOME/unbox/unbox.toml (i.e. ~/.config/unbox/unbox.toml) # and edit. If no config file is found, unbox uses these exact defaults. # # Keybindings ------------------------------------------------------------------- # Each [[keybind]] maps a key combo to one action. # # keys "Mod+...+Key" — modifiers (Super, Alt, Ctrl, Shift; order/case # insensitive) then an xkb key name (Tab, F1, Return, space, # BackSpace, d, ...). A BARE modifier with no "+Key" (e.g. "Super") # is a TAP binding: it fires only when that modifier is pressed and # released with nothing pressed in between. # action one of: spawn (needs `command`) · focus-next · focus-prev · # close-active · quit # command (spawn only) shell line, run via `sh -c`, so args/quoting work. [[keybind]] keys = "Super" # tap the Windows key: toggle the launcher action = "spawn" # Toggle: if fuzzel is already open, close it; otherwise launch it. `pkill -x` # matches the exact process name and returns 0 when it killed something (so the # `|| fuzzel` is skipped); when nothing was running it returns non-zero and # fuzzel launches. Runs via `sh -c`. command = "pkill -x fuzzel || fuzzel" [[keybind]] keys = "Alt+Tab" # next window (all windows, wraps around) action = "focus-next" [[keybind]] keys = "Alt+Shift+Tab" # previous window action = "focus-prev" [[keybind]] keys = "Alt+F1" # legacy focus cycle (kept from the tinywl port) action = "focus-next" [[keybind]] keys = "Ctrl+Alt+Backspace" # quit the unbox session action = "quit" # Window field (RML compositing) ------------------------------------------------ # Tunes how the window field (when --rml-compositing is on) sizes a client to the # on-screen TILE that RCSS lays out for it. The tile animates over a short RCSS # transition on every focus / map / unmap, so the question is WHEN to push the new # size to the client — each push makes the client reallocate its buffer + redraw. # # resize_mode # "off" Never resize the client: it keeps its own size, scaled to fill # the tile. No reconfigure cost. # "settle" (default) Wait for the tile to stop animating, then send ONE # configure to the final size. ~1 client redraw per focus change. # "continuous" Send a configure every frame the tile changes — exact tracking, # but ~1 redraw per animation frame (heavy on low-end GPUs). # "debounced" Coalesce: at most one configure per `resize_debounce_ms` during # the animation, plus a final one on settle. # # resize_debounce_ms Used only by "debounced" (milliseconds, >= 0). Default 100. # # Omit this table to get the defaults below. Edits hot-reload live. [window-field] resize_mode = "settle" resize_debounce_ms = 100 # Wallpaper --------------------------------------------------------------------- # The desktop background, composited below every window. Edits hot-reload live. # # path Absolute path to an image file (PNG, JPEG, BMP, GIF, TGA, …). Empty or # omitted = no image, just the solid `color` fill below. # fit How the image fills the screen: # "cover" (default) crop to fill, preserves aspect ratio, no bars # "contain" letterbox: whole image visible, preserves aspect ratio # "stretch" distort to exactly fill the screen # "center" natural pixel size, centred (no scaling) # color Solid fill shown behind/around the image (and when `path` is empty). # CSS hex, "#rrggbb" or "#rgb". Default "#000000". # # Omit this table for a plain black background. [wallpaper] path = "" fit = "cover" color = "#1e1e2e"