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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
# 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
# "last" - reopen the last-used directory
# "bookmarks" - open a panel showing the bookmarks view (the default)
# { path = "/some/dir" } - always open that directory (a leading ~ = $HOME)
= "bookmarks"
# -- 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)
= false # show a nav toolbar (up, back, forward) below the path bar
# -- Bookmarks ----------------------------------------------------------------
# Bookmarks are a pane view: a panel opened without a directory shows them as
# suggested places to jump to, and clicking one replaces the view with that
# directory. The list lives in `file` below (created with a single home bookmark
# on first launch) as a compact array of entries; an entry with nested `items` is
# a folder, expanded/collapsed like a tree directory (set `expanded = true` to
# start it open). Each entry can be renamed or removed from its right-click menu,
# and "Add Bookmark" in a directory's menu adds one.
[]
= "bookmarks.toml" # list file, relative to this config (or absolute)
# The hamburger menu shown while the bookmarks view is active. Same item syntax
# as [pane_menu]; pane-level actions (Open Folder, Filter, Split, Back/Forward,
# Collapse, Close Pane) apply. "Up One Level" would be a no-op here, so it is
# left out.
= [
"New Bookmark",
"New Bookmark Folder",
"---",
"Open Folder...",
"Filter...",
"Split View",
"---",
{ = "Back", = "Alt+Left" },
{ = "Forward", = "Alt+Right" },
"---",
"Collapse",
{ = "Close Pane", = "Ctrl+w" },
]
# Extra items appended to a bookmark's right-click menu. The rest of that menu is
# inherited from the context menu the bookmarked directory would get in the tree
# (actions run against that directory without opening it), so only the
# bookmark-specific actions live here.
= [
"---",
"Edit Bookmark",
"Delete Bookmark",
]
# The menu opened by right-clicking the empty area below the bookmarks.
= [
"New Bookmark",
"New Bookmark Folder",
]
# -- 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" },
]