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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# tree-space configuration
#
# Written automatically on first launch. Edit freely - the file is reloaded on
# the next start. Every section and key is optional; anything omitted falls back
# to a default value.
# ── Startup ──────────────────────────────────────────────────────────────────
# Where the panel opens when launched without a path argument. One of:
# "home" - always open the home directory (the default)
# "last" - reopen the last-used directory
# "bookmarks" - open with the bookmarks section showing and no directory pane
# { path = "/some/dir" } - always open that directory (a leading ~ = $HOME)
= "home"
# ── Panel ────────────────────────────────────────────────────────────────────
[]
= "left" # screen edge to dock to: "left" | "right"
= "bottom" # stacking layer: "background" | "bottom" | "top" | "overlay"
= 300 # panel width in px (clamped to 160–2000)
= 0 # gap from the screen edge in px (clamped to 0–200)
# ── Bookmarks ────────────────────────────────────────────────────────────────
# A bookmarks strip docked above or below every pane. Click an entry to open a
# pane at that directory; right-click it to edit (name/path) or delete it. The
# list itself lives in `file` below (created with a single home bookmark on
# first launch). `startup = "bookmarks"` opens with the section as the initial
# view; the hamburger menu's "Bookmarks" item toggles it at any time.
[]
= false # show the section on launch
= "top" # "top" | "bottom" - above or below the pane stack
= "bookmarks.toml" # list file, relative to this config (or absolute)
# ── Tree ─────────────────────────────────────────────────────────────────────
[]
= true # list directories above files
= "name" # primary sort: "name" | "size" | "modified" | "type"
= true # sort ascending (A→Z) rather than descending
= false # shww dotfiles by default
= 13 # row label size in pt (clamped to 6–40)
= 18 # row icon size in px (clamped to 12–128)
= false # ask before a drag-and-drop move (Ctrl+drag copies freely)
# ── Context menus ────────────────────────────────────────────────────────────
#
# Right-click menus are an ordered list of rules. The first rule whose
# `matches` claims a row provides that row's entire menu; rows no rule claims
# use the two rules below. `matches` accepts "dir", "noext", "ext:NAME",
# "regex:PATTERN", "fallback", and "multi". A "multi" rule applies instead of
# the per-path rules whenever more than one row is selected; its actions and
# custom commands then run over every selected row.
#
# A rule may instead be an include, pulling rules out of separate files so more
# specific rules can be added without editing this file. Write `include = "DIR"`
# (relative to this file, or absolute) in place of `matches`; every *.toml in
# that directory contributes its [[context_menu.rules]] here, in filename order.
# This is how you add rules *before* the "fallback" rule below without touching
# this file:
#
# [[context_menu.rules]]
# include = "rules.d"
#
# A missing directory is fine (it just adds nothing); an unparsable drop-in is
# reported and skipped.
#
# Each `items` entry is one of:
#
# "Open" a built-in action
# { action = "Cut", shortcut = "Ctrl+x" } built-in + shortcut/label override
# { command = "code {path}", label = "Edit" } a custom command
# { label = "...", items = [ ... ] } submenus (which may nest further).
# "---" a divider
#
# Any item may carry a `shortcut` (GTK accelerator syntax, e.g. "Ctrl+x" or
# "F2"). While the tree is focused it fires that action on the row under the
# keyboard cursor.
#
# Any table item may also carry `hidden = true`: it is not drawn in the menu,
# but its shortcut still fires — handy for binding a key without adding a row.
# A plain-string built-in cannot be hidden; write it as a table instead, e.g.
# { action = "Up One Level", hidden = true }
# A multi-row selection (two or more rows). This rule wins over the per-path
# rules below whenever more than one row is selected. Actions that only make
# sense for a single row (Open, Rename, Duplicate, ...) are ignored here; the
# ones listed act on every selected row. A custom command runs once per row, in
# visual top-to-bottom order.
[[]]
= ["multi"]
= [
{ = "Cut", = "Ctrl+x" },
{ = "Copy", = "Ctrl+c" },
"---",
"Copy Path",
"Copy Relative Path",
"---",
"Properties",
{ = "Move to Trash", = "Delete" },
{ = "Delete Permanently", = "Shift+Delete" },
]
# Directories.
[[]]
= ["dir"]
= [
{ = "Open", = [
{ = "Open", = "In same panel" },
{ = "In new panel", = "In split view" },
"In opposite panel",
{ = "Open With...", = "With..." },
]},
{ = "New", = [
{ = "New Folder", = "Folder", = "Ctrl+Shift+n" },
{ = "New File", = "File", = "Ctrl+n" },
]},
{ = "View Thumbnail", = "View Thumbnails", = "Ctrl+t" },
"---",
{ = "foot -D {dir}", = "Open in Terminal" },
"---",
{ = "Cut", = "Ctrl+x" },
{ = "Copy", = "Ctrl+c" },
{ = "Paste", = "Ctrl+v" },
{ = "Duplicate", = "Ctrl+d" },
{ = "Create Link", = "Ctrl+Shift+m" },
"---",
{ = "Rename", = "F2" },
"Copy Path",
"Copy Relative Path",
"---",
"Add Bookmark",
"Properties",
{ = "Move to Trash", = "Delete" },
{ = "Delete Permanently", = "Shift+Delete" },
]
# Files, and anything else not matched above.
[[]]
= ["fallback"]
= [
{ = "Open", = [
{ = "Open", = "With Default" },
{ = "Open With...", = "With..." },
]},
{ = "View Thumbnail", = "Ctrl+t" },
"---",
{ = "Cut", = "Ctrl+x" },
{ = "Copy", = "Ctrl+c" },
{ = "Paste", = "Ctrl+v" },
{ = "Duplicate", = "Ctrl+d" },
{ = "Create Link", = "Ctrl+Shift+m" },
"---",
{ = "Rename", = "F2" },
"Copy Path",
"Copy Relative Path",
"---",
"Properties",
{ = "Move to Trash", = "Delete" },
{ = "Delete Permanently", = "Shift+Delete" },
]
# The hamburger menu in each pane's toolbar. Unlike the context menus above
# these items act on the whole pane (open a folder, change the sort order, close
# the pane, ...), not on one row. Same item syntax as the context menus:
# builtin names as plain strings, `{ action = "...", shortcut = "..." }` tables,
# `{ command = "...", label = "..." }` custom commands, or
# `{ label = "...", items = [ ... ] }` submenus (which may nest further).
[]
= [
"Open Folder...",
"Filter...",
{ = "Split View", = "Ctrl+s" },
"---",
{ = "Back", = "Alt+Left" },
{ = "Forward", = "Alt+Right" },
{ = "Up One Level", = "Alt+Up" },
"---",
{ = "Toggle Hidden Files", = "Ctrl+h" },
{ = "Sort by Name", = "Ctrl+1" },
{ = "Sort by Size", = "Ctrl+2" },
{ = "Sort by Modified", = "Ctrl+3" },
{ = "Sort by Type", = "Ctrl+4" },
{ = "Reverse Sort Order", = "Ctrl+Shift+r" },
"---",
"Collapse",
{ = "Bookmarks", = "Ctrl+b" },
{ = "Close Pane", = "Ctrl+w" },
]