summaryrefslogtreecommitdiffhomepage
path: root/unbox.toml
blob: 90cf86af66c2bca7a333cb713612b298f0daa1e1 (plain)
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
# 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