diff --git a/Project.toml b/Project.toml
index 64da699db05a973147106bdfa26c67f49c02551a..e4aeb6ab1d59d29400e3e71dbc0615f66936f399 100644
--- a/Project.toml
+++ b/Project.toml
@@ -27,7 +27,7 @@ WGLMakie = "276b4fcb-3e11-5398-bf8b-a0c2d153d008"
 
 [compat]
 Bonito = "< 4.0.0"
-NyxWidgets = "0.1.1"
+NyxWidgets = ">= 0.2.0"
 ObservationPolicies = "0.2.4"
 PlanarLarvae = ">= 0.11.2"
 TidyObservables = "0.1.1"
diff --git a/src/editor.jl b/src/editor.jl
index d385c4c594b3271cd08fca2c0225eed9266297c7..0ea314adccb30bce9fbffe13585002e033a80e95 100644
--- a/src/editor.jl
+++ b/src/editor.jl
@@ -37,6 +37,10 @@ function larvaeditor(path=nothing;
         title="LarvaTagger",
         root_directory=nothing,
         enable_uploads=false,
+        enable_downloads=false,
+        prepare_download=nothing,
+        enable_new_directories=false,
+        enable_delete=false,
         kwargs...)
 
     # to (re-)load a file, the app is reloaded with the filepath as sole information
@@ -63,7 +67,11 @@ function larvaeditor(path=nothing;
                             larvafilter(controller),
                             tagfilter(controller; manualtag=manualtag),
                             metadataeditor(controller),
-                            filemenu(controller; upload_button=enable_uploads),
+                            filemenu(controller; upload_button=enable_uploads,
+                                     download_button=enable_downloads,
+                                     prepare_download=prepare_download,
+                                     create_directory_button=enable_new_directories,
+                                     delete_button=enable_delete),
                             backendmenu(controller, backend_directory),
                             loadanimation(controller),
                             twooptiondialog(controller))
diff --git a/src/larvatagger.css b/src/larvatagger.css
index 0ead1806f7f3b3194136418789a3d16ca34ad755..013b8a4acf974db08bbde37249d883491a754cab 100644
--- a/src/larvatagger.css
+++ b/src/larvatagger.css
@@ -40,7 +40,7 @@ canvas {
 .cp-tab .cp-tab-switch:checked ~ .control-panel {
 	display: block;
 }
-.cp-tab .cp-tab-switch:checked ~ .control-panel div {
+.cp-tab .cp-tab-switch:checked ~ .control-panel > div {
 	background: var(--theme-main-color);
 }
 .control-panel {
@@ -63,6 +63,10 @@ canvas {
   background-color: var(--nyx-icon-fill-color);
 }
 
+.nyx-filebrowser-entrycontrols {
+  margin-left: -2.25rem;
+}
+
 div.scrollable {
 	position: relative;
 	margin-right: 0;
diff --git a/src/wgl.jl b/src/wgl.jl
index f20f9a2a01d34864b90e96903d864871ec3ad93d..7a4972fbb2cd6960910ad9dd655ed52de7963783 100644
--- a/src/wgl.jl
+++ b/src/wgl.jl
@@ -902,10 +902,16 @@ struct FileMenu
     browser::FileBrowser
 end
 
-function filemenu(controller; upload_button=false, kwargs...)
+function filemenu(controller; upload_button=false, download_button=false,
+        prepare_download=nothing, create_directory_button=false, delete_button=false,
+        kwargs...)
     wd = getworkingdir(controller)
     dir = joinpath(wd.root, wd.path[])
-    browser = FileBrowser(dir; root=wd.root, upload_button=upload_button)
+    browser = FileBrowser(dir; root=wd.root, upload_button=upload_button,
+                          download_button=download_button,
+                          prepare_download=prepare_download,
+                          create_directory_button=create_directory_button,
+                          delete_button=delete_button)
     on(FileBrowsers.selectedfile(browser)) do file
         tryopenfile(controller, file; reload=true)
     end