diff --git a/.config/nvim/fnl/init.fnl b/.config/nvim/fnl/init.fnl
index 259a6f4f..0a50a913 100644
--- a/.config/nvim/fnl/init.fnl
+++ b/.config/nvim/fnl/init.fnl
@@ -201,6 +201,12 @@
(let [{: setup} (require :ibl)] (setup))
+;; peekaboo
+
+; there's probably a better way to make this function accessible
+; from lua without putting it in another file to be required...
+(set vim.g.peekaboo_window "lua require('peekaboo')()")
+
;;; generate help files
;; Load all plugins now.
diff --git a/.config/nvim/fnl/peekaboo.fnl b/.config/nvim/fnl/peekaboo.fnl
new file mode 100644
index 00000000..cd47d722
--- /dev/null
+++ b/.config/nvim/fnl/peekaboo.fnl
@@ -0,0 +1,19 @@
+(local {: floor} math)
+(local {: columns : lines} vim.o)
+(local {:nvim_create_buf nvim-create-buf :nvim_open_win nvim-open-win} vim.api)
+
+;; https://github.com/junegunn/vim-peekaboo/issues/68/#issuecomment-1013782594
+(fn []
+ (let [width (floor (* columns 0.8))
+ height (floor (* lines 0.8))
+ row (- (/ (- lines height) 2) 1)
+ col (/ (- columns width) 2)
+ opts {:relative :editor
+ : row
+ : col
+ : width
+ : height
+ :style :minimal
+ :border :rounded}
+ buf (nvim-create-buf false true)]
+ (nvim-open-win buf true opts)))
diff --git a/.gitmodules b/.gitmodules
index 84b8dc97..ec1744bf 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -155,3 +155,7 @@
path = .local/share/nvim/site/pack/alpha/start/dispatch
url = https://github.com/tpope/vim-dispatch.git
branch = master
+[submodule "peekaboo"]
+ path = .local/share/nvim/site/pack/alpha/start/peekaboo
+ url = https://github.com/junegunn/vim-peekaboo.git
+ branch = master
diff --git a/.local/share/nvim/site/pack/alpha/start/peekaboo b/.local/share/nvim/site/pack/alpha/start/peekaboo
new file mode 160000
index 00000000..cc4469c2
--- /dev/null
+++ b/.local/share/nvim/site/pack/alpha/start/peekaboo
@@ -0,0 +1 @@
+Subproject commit cc4469c204099c73dd7534531fa8ba271f704831