summaryrefslogtreecommitdiffhomepage
path: root/unbox.toml
blob: 7662f33324beba25710fd9bddf6d3c5c86ac7415 (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
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"