1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# 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"
|